路由器漏洞挖掘步骤及工具
1、固件提取
从官网下载路由器固件,通常为 .bin 文件。
使用 binwalk 工具提取固件中的文件系统,命令如下:
binwalk -eM 路由器固件.bin
解压后会看到类似 Linux 目录结构的文件夹。
2、静态分析
使用 Ghidra 对固件进行静态分析,Ghidra 是由 NSA 开发的开源逆向工程工具套件。
apt install openjdk-17-jdk # java环境安装 ghidra -p /path/to/httpd
导入 httpd 程序并进行分析,查找可能的缓冲区溢出点,strcpy 函数的使用。
3、动态调试
使用 QEMU 模拟路由器固件运行环境。
sudo apt install qemu-user-static qemu-user-static -L . ./bin/httpd
通过 gdb-multiarch 和 pwndbg 插件进行动态调试。
gdb-multiarch ./bin/httpd target remote :9999
4、漏洞利用
构造 POC(Proof of Concept),测试栈溢出或逻辑漏洞。
针对 CVE-2023-34644 锐捷路由器漏洞,可以通过异或解密获取 key,然后进行加密还原。
5、提交漏洞
成功复现漏洞后,可以在相关平台提交漏洞,获取 CVE 编号。
示例:CVE-2023-34644 锐捷路由器漏洞复现
1、异或解密
原始未加密版本固件升级到加密版本时,使用解密程序对固件解密。
解密代码示例:
void realEndeCrypt(void *fileBuf, void *outBuf, int readNum) { char k1[4] = "x01"; char k2[4] = "x01x00x01"; int foo = 0; for (int ct = 0; ct < readNum; ++ct) { foo = (int) k1[0] + (int) k2[0] + (int) k2[1] + (int) k2[2]; for (int i = 0; i < 6; ++i) *((char *)k1 + i) = *((char *)k1 + i + 1); k2[3] = foo % 2; int key = 0; for (int j = 0; j < 8; ++j) key |= *((char *)k1 + j) << j; *(char *)(outBuf + ct) = *(char *)(fileBuf + ct) ^ key; } }
路由器常见漏洞类型及案例
1、路径穿越漏洞
由于配置错误导致的路径穿越,如小米 AIoT 路由器 AX3600 的路径穿越漏洞。
http://<IP>/backup/log../messages
读取 /tmp/syslogbackup/../test,实际访问 /tmp/test。
2、后台解压逻辑错误
上传包含配置文件的 .tar.gz 压缩包恢复路由器设置时存在逻辑错误。
tenda AC15 V15.03.05.19 固件中存在的解压逻辑错误。
3、栈溢出漏洞
使用危险函数如 strcpy、strcat、sprintf 等导致的栈溢出。
tenda AC15 固件中的 formSetFirewallCfg 函数存在栈溢出漏洞。
路由器漏洞挖掘涉及固件提取、静态分析、动态调试和漏洞利用等多个步骤,常用的工具包括 binwalk、Ghidra、QEMU 和 gdb-multiarch,通过这些步骤和工具,可以有效地发现和复现路由器中的安全漏洞。
以上就是关于“路由找漏洞”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/83561.html