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
7db65a6b
Commit
7db65a6b
authored
Apr 27, 2016
by
Milad Doorbash
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master' into misfortune-cookie
parents
11186a54
1424ff04
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
44 additions
and
18 deletions
+44
-18
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
+2
-2
dlink_scan.py
routersploit/modules/scanners/dlink_scan.py
+1
-1
utils.py
routersploit/utils.py
+1
-1
No files found.
routersploit/modules/creds/http_form_bruteforce.py
View file @
7db65a6b
...
...
@@ -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 @
7db65a6b
...
...
@@ -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 @
7db65a6b
...
...
@@ -17,9 +17,9 @@ 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
],
],
}
target
=
exploits
.
Option
(
''
,
'Target IP address e.g. 192.168.1.1'
)
# target address
...
...
routersploit/modules/scanners/dlink_scan.py
View file @
7db65a6b
...
...
@@ -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 @
7db65a6b
...
...
@@ -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