命令注入漏洞CVE-2022-34527复现
命令注入漏洞CVE-2022-34527复现
伯爵的信仰 看雪学苑 2023-07-31 17:59
◆CVE编号:
CVE-2022-34527(https://www.cvedetails.com/cve/CVE-2022-34527/)
◆漏洞描述:D-Link DSL-3782 v1.03 and below was discovered to contain a command injection vulnerability via the function byte_4C0160.
◆设备型号:D-Link DSL-3782
◆固件版本:DSL-3782_A1_EU_1.01
◆厂商官网:
http://www.dlink.com.cn/
◆固件地址:
https://media.dlink.eu/support/products/dsl/dsl-3782/driver_software/dsl-3782_a1_eu_1.01_07282016.zip
漏洞披露的信息很模糊,只是说D-Link DSL-3782 v1.03及以下版本中存在一个命令注入漏洞,相关的函数为byte_4C0160。
若是在IDA中,byte_4C0160应该是一个字符串,IDA中的未知函数是sub_xx格式。
本文中复现的版本是D-Link DSL-3782 v1.0。
2.1 固件提取
使用binwalk对固件解包,获取文件系统。
在文件系统中看到了boaroot文件夹,猜测该路由器使用的是Boa服务器。Boa服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。
查看系统启动文件:/usr/etc/init.d/rcS
根据启动信息,路由器的Web服务器为Boa,Web根目录为/boaroot。
在文件系统中发现了utelnetd命令,可用于验证命令注入漏洞。
2.2 固件模拟
查看完文件系统后模拟运行固件,定位到相关文件后再详细分析。根据漏洞信息说是一个命令注入,那么直接模拟固件去后台看看有没有可疑的注入点。
默认密码为admin。
在后台中查找到如下页面:
根据之前的复现经验,命令执行漏洞很有可能出现在ping测试这种页面中。使用burpsuit抓包查看一下:
发现ping test 相关文件为:/cgi-bin/New_GUI/Set/Diagnostics.asp,查看一下该文件的内容。
根据文件内容判断这是在通过WebApi处理前端提交过来的数据,由前面的Burpsuit抓包的内容可知前端会将Type和Addr的数据传到服务器。查找一下关键字:Diagnostics_Entry看看传入的数据是由哪个文件处理的。
通过查找内容获得文件userfs/bin/cfg_manager,将该文件拿到IDA中分析。通过关键词查找,成功定位到函数:
分析整理一下:
通过分析可知上述代码的含义为判断前端传来的Type参数是为p还是t,对应的是Ping test和Trace route。命令执行的关键点在于byte_4C0480是否能被前端输入所控制,通过引用查看一下byte_4C0480的来源。
找到byte_4C0480的来源但是发现不能直接通过F5反汇编为伪代码,需要修正函数。在函数的开始地址处按下P修正后再F5即可得到反汇编的伪代码。
通过分析上述代码可知获取到前端输入的Addr后通过sub_46258C进行字符检查,但是检查不充分,可通过如%0a(\n)绕过。检查后使用sprintf函数拼接命令字符串并通过pthread_create传入到线程回调函数中由system函数执行。这是一个由于对前端输入数据检查不充分导致的命令执行漏洞。
通过抓包查看发现POST数据的时候带着session,不能通过Repeater改包发送了,但是可以通过Intercept来更改。在Addr处使用的注入命令为:utelnetd -p 7080 -l /bin/sh
使用nc连接成功,取得shell。
EXP执行后成功取得shell:
和前一篇命令执行漏洞一样,此漏洞是因为字符过滤不完全导致的命令执行漏洞。当遇到CVE漏洞信息描述的比较模糊时,模拟固件去后台看看有没有可疑漏洞点很有必要,这样可以快速定位到漏洞页面或者相关文件。
◆
D-Link DSL-3782 代码注入漏洞CVE-2022-34527分析- IOTsec-Zone物联网安全社区(https://www.iotsec-zone.com/article?id=240)
◆
https://github.com/1160300418/Vuls/blob/main/D-Link/DSL-3782/CMDi_in_D-Link%20DSL-3782.md
◆
https://github.com/FzBacon/CVE-2022-34527_D-Link_DSL-3782_Router_command_injection/blob/master/CVE-2022-34527_D-Link_DSL-3782_Router_command_injection.md
看雪ID:伯爵的信仰
https://bbs.kanxue.com/user-home-882513.htm
*本文为看雪论坛优秀文章,由 伯爵的信仰 原创,转载请注明来自看雪社区
#往期推荐
3、安卓加固脱壳分享
球分享
球点赞
球在看