多个供应商不幸的 Cookie 路由器身份验证绕过漏洞利用

逆向工程 艾达 拆卸 固件
2021-07-08 05:08:53

我正在开发一个多月的漏洞利用,现在我遇到了一个问题,不能再进一步了。

这是漏洞利用的链接:

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然后通过选择mipsbCPU 架构和0x80020000基地址,使用 IDA 打开解压目录中最大的文件

如果您使用 Alt+T 键搜索不需要字符串,您会 在实现li $gp,YYYYY指令的代码的第一行找到一个sb XXXX($gp)身份验证地址将通过添加XXXX 和 YYYYY来定位,在这种情况下将是0x803E1829

现在我们必须发现如何Cookie: CNNNN=MMM;改变内存内容:如果您使用 Alt+T 搜索“soapaction”,您会发现:

转到红色突出显示的子流程。

现在考虑数字 0x6b28 作为 A = 0x6B28

现在返回并向上:

现在转到顶部子进程:

你会发现:

现在B = 0xA44C = 0x1887CD = 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 找不到这些字符串的指向地址。我找不到原因。

根据此处对此进行的修改和错误修复是:

  1. 添加安全机制。

  2. 修复了路由器的时间无法与PC成功同步的问题。

  3. 禁止从 WAN 访问固件升级页面。

  4. 修复路由器无法上传rom-0(备份配置)的问题。

  5. 解决Chrome和Firefox登录界面无法正确保存密码的问题。

  6. 解决了设置Virtual Server后无法使用“IP:Port”访问CPE的问题。

  7. 禁止通过http://wan/lan ip/ 或http://wan/lan ip/xxx.htm 访问设备。

  8. 修复了其他错误和问题。

我不确定安全机制(#1)是否是造成这个问题的原因。

我还尝试使用 binwalk 熵比较 100901、120830 和 140305:

binwalk -E -J 120830 140305 100901

100901:

120830:

140305:

我知道140305(左侧的异常波形)有问题,但没有发现任何发现。

更新 1:

以下是0x800D53BC我的 IDA 中的内存地址

关于如何解决这个烂摊子的任何想法或提示?

1个回答

根据TP-LINK,不幸 cookie 仅在固件版本 TD-W8961ND_V3_150707 中得到修复。因此,TD_W961ND_V3_140305 也容易受到攻击。

由于它是一个二进制文件,您可能无法分析处理soapaction字符串的代码部分,但这是我为固件 140305 找到的内容:

在此处输入图片说明

更新!

您可以在 找到“不需要”字符串0x801a015a由于某些原因,它是 mips16 代码并且仅从命令表中作为pswauthen命令处理程序引用因此,您必须alt+g在处理程序的开头将代码表示更改为 mips16 ,然后按c

在此处输入图片说明