老板前一段给买了几款路由把玩,研究了下D-Link DIR 629、DIR 823这两款板子。发现在soap.cgi中存在几处栈溢出,均可以远程利用,并且其他型号的路由也有对soap这一部分代码的复用。
逆向分析与漏洞挖掘
因为是想挖几个能远程利用的洞,首先去看了HTTP服务,也就是/htdocs/cgibin。
D-Link HTTP服务由cgibin提供,并通过软链接的文件名进入到不同的处理分支:![图片[3]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p5.ssl.qhimg.com/t015c61dbb04a907e8c.jpg)
在各个cgi处理函数中,会通过cgibin_parse_request来解析用户输入,其函数原型大致如下:
![图片[4]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p3.ssl.qhimg.com/t01a873ec8e5cc360a6.jpg)
参数save_param_func用于传入解析/存储HTTP请求的具体handler,读取HTTP请求后使用该handler具体处理用户输入。在soapcgi_main(0x00418E28)中传入了漏洞函数vulnerable_sprintf_parser(0x0041893C):
![图片[5]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p4.ssl.qhimg.com/t0108f14348964101a1.jpg)
跟进vulnerable_sprintf_parser可以发现程序未进行边界检查便将全局变量g_http_soapaction通过sprintf写到栈上:
![图片[6]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p4.ssl.qhimg.com/t01d43613e57baece34.jpg)
g_http_soapaction来自于soapcgi_main中对HTTP Header SOAPACTION字段的解析:
取HTTP_SOAPACTION:
![图片[7]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p4.ssl.qhimg.com/t01eca57120ee2defa2.jpg)
取#后的值:
![图片[8]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p3.ssl.qhimg.com/t01a97980575b60255d.jpg)
至此漏洞原理已经明了:soapcgi_main中未进行边界检查便将HTTP Header中的SOAPACTION字段存储至栈上,导致栈溢出。
漏洞利用
基础信息:
![图片[9]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p0.ssl.qhimg.com/t013ef042e5f66220ef.jpg)
MIPS大端序,开启了NX,未开启ASLR、PIE,只需要做个ROP。
溢出的崩溃现场如下:
![图片[10]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p5.ssl.qhimg.com/t01c303139d187cf752.jpg)
$S0、$S2-S3、$FP、$SP指向的内存可控,要编写ROP只能在这几个寄存器上做文章,最终用ropper在uClibc中找了个很不错的gadget:
![]()
现在需要做的就是找到libc加载的实际基址。
在隔壁开锁王师傅的指导下把板子拆开,接上串口:
![图片[12]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p0.ssl.qhimg.com/t01915453d91bcc7394.jpg)
成功获取到shell:
![图片[13]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p4.ssl.qhimg.com/t01e386cd5b213c6d80.png)
拿到shell后读/proc/pid/maps就可以获取到libc的加载基址。
最终编写ROP如下:
![图片[14]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p4.ssl.qhimg.com/t018a3416b0e9701236.jpg)
攻击演示:
![图片[15]-CVE-2018-5318:D-Link soap.cgi 缓冲区溢出-华盟网](https://p3.ssl.qhimg.com/t0137c8b54d3ce13fbc.png)













暂无评论内容