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

  • A+
所属分类:安全文章
摘要

目的
路由器管理员密码未知,根据已有字典爆破出管理员密码。工具:burpsuite
脚本语言:python3.7+

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

工具:burpsuite
脚本语言:python3.7+

1. 抓包分析
输入小米路由器管理员界面地址192.168.31.1
管理员密码未知
小米路由器管理员密码爆破分析

输入测试密码:123
使用burpsuite抓包2次 分别查看抓包结果

第一次抓包结果:
小米路由器管理员密码爆破分析

第二次抓包结果:
小米路由器管理员密码爆破分析

可以发现即使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

大三信安学生的第一篇文章,多多指教!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: