我正在开发一个多月的漏洞利用,现在我遇到了一个问题,不能再进一步了。
这是漏洞利用的链接:
https://gist.github.com/doorbash/f454c698f192a0e5d1bf4da9c6869b67
https://www.exploit-db.com/exploits/39739
描述:
Misfortune Cookie 是一个严重漏洞,它允许入侵者远程接管 Internet 路由器并使用它来攻击家庭和企业网络。通过在您的请求中添加一些魔法 cookie,您可以绕过任何身份验证并以管理员身份浏览配置界面,从任何开放端口。
通过向Cxxx=yyy
路由器发送cookie,web界面yyy
将保存在内存地址xxx * 0x28 + Offset
。如果我们找到Authentication Enable/Disable boolean address
并且offset
我们可以将这个固件的数据添加到漏洞利用的目标列表中,并通过发送正确的cookie绕过身份验证。
我如何分析固件:
我一开始分析的固件是TP-Link 8901G V3 3.0.1 Build 100901 Rel.23594。在此处下载并运行,binwalk -e V3 3.0.1 Build 100901 Rel.23594
然后通过选择mipsb
CPU 架构和0x80020000
基地址,使用 IDA 打开解压目录中最大的文件。
如果您使用 Alt+T 键搜索不需要字符串,您会 在实现li $gp,YYYYY指令的代码的第一行找到一个sb XXXX($gp)。身份验证地址将通过添加XXXX 和 YYYYY来定位,在这种情况下将是0x803E1829
现在我们必须发现如何Cookie: CNNNN=MMM;
改变内存内容:如果您使用 Alt+T 搜索“soapaction”,您会发现:
转到红色突出显示的子流程。
现在考虑数字 0x6b28 作为 A = 0x6B28
现在返回并向上:
现在转到顶部子进程:
你会发现:
现在B = 0xA44
,C = 0x1887C
和D = 0x8041877C
。
和MAGIC_NUMBER = 0x16B88
(我不知道为什么,但它有效)
现在 OFFSET = A - B + C + D - MAGIC_NUMBER = 0x80420554
现在调用info(calc(0x8041877C,0x1887c,0xa44,0x6B28,0x16b88),0x803E1829)
或info(0x80420554,0x803E1829)
在util.py 中我附加了输出是,107367749,13
我们在漏洞利用中需要这个固件的数据。
该过程非常相似(在TP-Link W8961ND V3 120830 中 不同且更容易在此处下载
AuthenticationAddress = 0x803605B4
A = 0x6B28
B = 0x0 (move $a0, $s1)
C = 0x17E38
D = 0x804234C8
MAGIC_NUMBER = 0x16B88
OFFSET = A-B+C+D-MAGIC_NUMBER = 0x8042B2A0
我们呼吁info(0x8042B2A0,0x803605B4)
在util.py和输出是,107353414,36
其真实设备和工程测试。
问题是:
对于TD_W961ND_V3_140305 ,请在此处下载固件有“不需要”和“soapacation”文本,但 IDA 找不到这些字符串的指向地址。我找不到原因。
根据此处对此进行的修改和错误修复是:
添加安全机制。
修复了路由器的时间无法与PC成功同步的问题。
禁止从 WAN 访问固件升级页面。
修复路由器无法上传rom-0(备份配置)的问题。
解决Chrome和Firefox登录界面无法正确保存密码的问题。
解决了设置Virtual Server后无法使用“IP:Port”访问CPE的问题。
禁止通过http://wan/lan ip/ 或http://wan/lan ip/xxx.htm 访问设备。
修复了其他错误和问题。
我不确定安全机制(#1)是否是造成这个问题的原因。
我还尝试使用 binwalk 熵比较 100901、120830 和 140305:
binwalk -E -J 120830 140305 100901
100901:
120830:
140305:
我知道140305(左侧的异常波形)有问题,但没有发现任何发现。
更新 1:
以下是0x800D53BC
我的 IDA 中的内存地址:
关于如何解决这个烂摊子的任何想法或提示?