Netgear Nighthawk R8300 upnpd PreAuth RCE 分析与复现
漏洞在usr/sbin/upnpd这个文件中
启动这个文件会遇到很多问题

这个文件缺少nvram
需要手动编译
https://toolchains.bootlin.com/
从这个网址下gcc:下ulibc版本
raw.githubusercontent.com/therealsaumil/custom_nvram/master/custom_nvram_r6250.c
这里下nvram.so的实现,
1 | armv5l-gcc -Wall -fPIC -shared custom_nvram_r6250.c -o nvram.so |
编译后
1 | LD_PRELOAD="/nvram.so" /usr/sbin/upnpd |

缺少这个符号
grep -r查找有这个符合的文件,然后
1 | LD_PRELOAD="/lib/libdl.so.0 /nvram.so" /usr/sbin/upnpd |
即可运行
还需补一个配置文件
在/tmp/nvram.ini
1 | upnpd_debug_level=9 |
然后这个如果是用户级模拟,ps -ef看不到进程,gdbserver attach不到
需要系统模拟,然后ssh连上看进程号,gdbserver attach
启动脚本要留出端口映射 gdbserver的端口(1234),udp 链接的端口(1901:1900),ssh的端口(-p 2222),
1 | ssh -p 2222 root@127.0.0.1 |
然后正常调试即可
脚本
1 | #!/usr/bin/env python3 |
这个脚本需要用0.0.0.0,127.0.0.1 发送不到
二进制程序方面
main-> sub_1D020(v13);
recvfrom限制0x1fff


buf copy到buf-, buf-离bp近可以造成栈溢出