Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
routersploit
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
czos-dpend
routersploit
Commits
086fd837
Commit
086fd837
authored
Apr 26, 2016
by
us3rn4me
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/reverse-shell/routersploit
parents
f7dd8563
1424ff04
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
45 additions
and
19 deletions
+45
-19
README.md
README.md
+1
-1
interpreter.py
routersploit/interpreter.py
+1
-1
http_form_bruteforce.py
routersploit/modules/creds/http_form_bruteforce.py
+20
-7
http_form_default.py
routersploit/modules/creds/http_form_default.py
+20
-7
autopwn.py
routersploit/modules/scanners/autopwn.py
+1
-1
dlink_scan.py
routersploit/modules/scanners/dlink_scan.py
+1
-1
utils.py
routersploit/utils.py
+1
-1
No files found.
README.md
View file @
086fd837
...
...
@@ -14,9 +14,9 @@ It consists of various modules that aids penetration testing operations:
# Installation
sudo apt-get install python-requests python-paramiko python-netsnmp
git clone https://github.com/reverse-shell/routersploit
cd routersploit
pip install -r requirements.txt
./rsf.py
# Update
...
...
routersploit/interpreter.py
View file @
086fd837
...
...
@@ -86,7 +86,7 @@ class BaseInterpreter(object):
command_handler
(
args
)
except
RoutersploitException
as
err
:
utils
.
print_error
(
err
)
except
KeyboardInterrupt
:
except
(
KeyboardInterrupt
,
EOFError
)
:
print
()
utils
.
print_status
(
"routersploit stopped"
)
break
...
...
routersploit/modules/creds/http_form_bruteforce.py
View file @
086fd837
...
...
@@ -36,6 +36,7 @@ class Exploit(exploits.Exploit):
passwords
=
exploits
.
Option
(
wordlists
.
passwords
,
'Password or file with passwords (file://)'
)
form
=
exploits
.
Option
(
'auto'
,
'Post Data: auto or in form login={{LOGIN}}&password={{PASS}}&submit'
)
path
=
exploits
.
Option
(
'/login.php'
,
'URL Path'
)
form_path
=
exploits
.
Option
(
'same'
,
'same as path or URL Form Path'
)
verbosity
=
exploits
.
Option
(
'yes'
,
'Display authentication attempts'
)
credentials
=
[]
...
...
@@ -46,9 +47,15 @@ class Exploit(exploits.Exploit):
self
.
credentials
=
[]
self
.
attack
()
def
get_form_path
(
self
):
if
self
.
form_path
==
'same'
:
return
self
.
path
else
:
return
self
.
form_path
@multi
def
attack
(
self
):
url
=
sanitize_url
(
"{}:{}{}"
.
format
(
self
.
target
,
self
.
port
,
self
.
path
))
url
=
sanitize_url
(
"{}:{}{}"
.
format
(
self
.
target
,
self
.
port
,
self
.
get_form_path
()
))
try
:
requests
.
get
(
url
,
verify
=
False
)
...
...
@@ -61,11 +68,15 @@ class Exploit(exploits.Exploit):
# authentication type
if
self
.
form
==
'auto'
:
self
.
data
=
self
.
detect_form
()
form_
data
=
self
.
detect_form
()
if
self
.
data
is
None
:
if
form_
data
is
None
:
print_error
(
"Could not detect form"
)
return
(
form_action
,
self
.
data
)
=
form_data
if
form_action
:
self
.
path
=
form_action
else
:
self
.
data
=
self
.
form
...
...
@@ -116,7 +127,7 @@ class Exploit(exploits.Exploit):
self
.
invalid
[
"max"
]
=
l
def
detect_form
(
self
):
url
=
sanitize_url
(
"{}:{}{}"
.
format
(
self
.
target
,
self
.
port
,
self
.
path
))
url
=
sanitize_url
(
"{}:{}{}"
.
format
(
self
.
target
,
self
.
port
,
self
.
get_form_path
()
))
r
=
requests
.
get
(
url
,
verify
=
False
)
soup
=
BeautifulSoup
(
r
.
text
,
"lxml"
)
...
...
@@ -125,20 +136,22 @@ class Exploit(exploits.Exploit):
if
form
is
None
:
return
None
action
=
form
.
attrs
.
get
(
'action'
,
None
)
if
len
(
form
)
>
0
:
res
=
[]
for
inp
in
form
.
findAll
(
"input"
):
if
'name'
in
inp
.
attrs
.
keys
():
if
inp
.
attrs
[
'name'
]
.
lower
()
in
[
"username"
,
"user"
,
"login"
]:
if
inp
.
attrs
[
'name'
]
.
lower
()
in
[
"username"
,
"user"
,
"login"
,
"username_login"
]:
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
"{{USER}}"
)
elif
inp
.
attrs
[
'name'
]
.
lower
()
in
[
"password"
,
"pass"
]:
elif
inp
.
attrs
[
'name'
]
.
lower
()
in
[
"password"
,
"pass"
,
"password_login"
]:
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
"{{PASS}}"
)
else
:
if
'value'
in
inp
.
attrs
.
keys
():
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
inp
.
attrs
[
'value'
])
else
:
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
)
return
'&'
.
join
(
res
)
return
(
action
,
'&'
.
join
(
res
)
)
def
target_function
(
self
,
running
,
data
):
module_verbosity
=
boolify
(
self
.
verbosity
)
...
...
routersploit/modules/creds/http_form_default.py
View file @
086fd837
...
...
@@ -34,6 +34,7 @@ class Exploit(exploits.Exploit):
defaults
=
exploits
.
Option
(
wordlists
.
defaults
,
'User:Pass or file with default credentials (file://)'
)
form
=
exploits
.
Option
(
'auto'
,
'Post Data: auto or in form login={{LOGIN}}&password={{PASS}}&submit'
)
path
=
exploits
.
Option
(
'/login.php'
,
'URL Path'
)
form_path
=
exploits
.
Option
(
'same'
,
'same as path or URL Form Path'
)
verbosity
=
exploits
.
Option
(
'yes'
,
'Display authentication attempts'
)
credentials
=
[]
...
...
@@ -44,9 +45,15 @@ class Exploit(exploits.Exploit):
self
.
credentials
=
[]
self
.
attack
()
def
get_form_path
(
self
):
if
self
.
form_path
==
'same'
:
return
self
.
path
else
:
return
self
.
form_path
@multi
def
attack
(
self
):
url
=
sanitize_url
(
"{}:{}{}"
.
format
(
self
.
target
,
self
.
port
,
self
.
path
))
url
=
sanitize_url
(
"{}:{}{}"
.
format
(
self
.
target
,
self
.
port
,
self
.
get_form_path
()
))
try
:
requests
.
get
(
url
,
verify
=
False
)
...
...
@@ -59,11 +66,15 @@ class Exploit(exploits.Exploit):
# authentication type
if
self
.
form
==
'auto'
:
self
.
data
=
self
.
detect_form
()
form_
data
=
self
.
detect_form
()
if
self
.
data
is
None
:
if
form_
data
is
None
:
print_error
(
"Could not detect form"
)
return
(
form_action
,
self
.
data
)
=
form_data
if
form_action
:
self
.
path
=
form_action
else
:
self
.
data
=
self
.
form
...
...
@@ -109,7 +120,7 @@ class Exploit(exploits.Exploit):
self
.
invalid
[
"max"
]
=
l
def
detect_form
(
self
):
url
=
sanitize_url
(
"{}:{}{}"
.
format
(
self
.
target
,
self
.
port
,
self
.
path
))
url
=
sanitize_url
(
"{}:{}{}"
.
format
(
self
.
target
,
self
.
port
,
self
.
get_form_path
()
))
r
=
requests
.
get
(
url
,
verify
=
False
)
soup
=
BeautifulSoup
(
r
.
text
,
"lxml"
)
...
...
@@ -118,20 +129,22 @@ class Exploit(exploits.Exploit):
if
form
is
None
:
return
None
action
=
form
.
attrs
.
get
(
'action'
,
None
)
if
len
(
form
)
>
0
:
res
=
[]
for
inp
in
form
.
findAll
(
"input"
):
if
'name'
in
inp
.
attrs
.
keys
():
if
inp
.
attrs
[
'name'
]
.
lower
()
in
[
"username"
,
"user"
,
"login"
]:
if
inp
.
attrs
[
'name'
]
.
lower
()
in
[
"username"
,
"user"
,
"login"
,
"username_login"
]:
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
"{{USER}}"
)
elif
inp
.
attrs
[
'name'
]
.
lower
()
in
[
"password"
,
"pass"
]:
elif
inp
.
attrs
[
'name'
]
.
lower
()
in
[
"password"
,
"pass"
,
"password_login"
]:
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
"{{PASS}}"
)
else
:
if
'value'
in
inp
.
attrs
.
keys
():
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
inp
.
attrs
[
'value'
])
else
:
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
)
return
'&'
.
join
(
res
)
return
(
action
,
'&'
.
join
(
res
)
)
def
target_function
(
self
,
running
,
data
):
module_verbosity
=
boolify
(
self
.
verbosity
)
...
...
routersploit/modules/scanners/autopwn.py
View file @
086fd837
...
...
@@ -17,7 +17,7 @@ class Exploit(exploits.Exploit):
__info__
=
{
'name'
:
'AutoPwn'
,
'description'
:
'Scanner module for all vulnerabilities.'
,
'author'
:
[
'author
s
'
:
[
'Marcin Bury <marcin.bury[at]reverse-shell.com>'
,
# routersploit module
],
}
...
...
routersploit/modules/scanners/dlink_scan.py
View file @
086fd837
...
...
@@ -17,7 +17,7 @@ class Exploit(exploits.Exploit):
__info__
=
{
'name'
:
'D-Link Scanner'
,
'description'
:
'Scanner module for D-Link devices'
,
'author'
:
[
'author
s
'
:
[
'Marcin Bury <marcin.bury[at]reverse-shell.com>'
,
# routersploit module
],
}
...
...
routersploit/utils.py
View file @
086fd837
...
...
@@ -314,7 +314,7 @@ def pprint_dict_in_order(dictionary, order=None):
prettyprint
(
rest_keys
,
dictionary
[
rest_keys
])
def
random_text
(
length
,
alph
=
string
.
letters
+
string
.
digits
):
def
random_text
(
length
,
alph
=
string
.
ascii_
letters
+
string
.
digits
):
""" Random text generator. NOT crypto safe.
Generates random text with specified length and alphabet.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment