最近在复现路由器漏洞,也踩了不少坑,记录一下,希望能对需要的人有一些帮助。使用的路由器型号为RT-AC68U,ARM架构,小端序,Linux内核版本2.6.36,很老,主要的时间也花费在找能支持这个Linux的编译好的gdbserver上。大致过程如下:
1.将下载好的gdbserver和binwallk提取出的文件系统上传到路由器中,这里我是用PuTTY telnet连接,然后wget到路由器上,这里最好chmod 777 gdbserver,否则gdbserver有可能无法执行,如图所示
编译好的gdbserver下载于https://github.com/stayliv3/gdb-static-cross/tree/master/prebuilt,找到对应架构的文件下载即可,然后改名为gdbserver,看一下我这台路由器的使用的文件,信息如下:
2.找到需要调试的文件路径(就是刚才上传的文件系统中需要调试文件的位置),这里我要调试sbin下的httpd程序,所以完整路径就是/tmp/home/root/squashfs-root/usr/sbin/httpd(这个地址很重要,一会会用到)
3.回到初始目录,运行gdbserver,监听1234端口的连接
经测试,有时候只使用这条命令可能无法正常运行程序,也可以输入下面的指令来创建进程:
4.在本机上用IDA打开需要 调试的文件,我这里是httpd
5.选择GDB调试器,点击绿色按钮开始
6.填入路径、IP以及端口(这里的路径就是第二步的路径,端口就是第三步的端口,IP就是路由器的IP)
7.成功开启动态调试窗口,可以愉快的玩耍了(不是),开始苦逼的分析QAQ
成功之后路由器终端的显示结果如下: