1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from routersploit.modules.exploits.routers.dlink.dir_850l_creds_disclosure import Exploit
def test_check_success(target):
""" Test scenario - successful check """
cgi_mock = target.get_route_mock("/hedwig.cgi", methods=["POST"])
cgi_mock.return_value = (
"<module>"
"<service></service>"
"<device>"
"<gw_name>DIR-850L</gw_name>"
"<account>"
"<seqno>1</seqno>"
" <max>2</max>"
" <count>1</count>"
" <entry>"
" <uid>USR-</uid>"
" <name>Admin</name>"
" <usrid></usrid>"
" <password>92830535</password>"
" <group>0</group>"
" <description></description>"
" </entry>"
" </account>"
" <group>"
" <seqno></seqno>"
" <max></max>"
" <count>0</count>"
" </group>"
" <session>"
" <captcha>0</captcha>"
" <dummy></dummy>"
" <timeout>180</timeout>"
" <maxsession>128</maxsession>"
" <maxauthorized>16</maxauthorized>"
" </session>"
" </device>"
" </module>"
" <?xml version=\"1.0\" encoding=\"utf-8\"?>"
" <hedwig>"
" <result>OK</result>"
" <node></node>"
" <message>No modules for Hedwig</message>"
" </hedwig>"
)
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