CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

admin 2024年11月21日14:27:32评论14 views字数 1385阅读4分37秒阅读模式
漏洞简介

D-Link DSL-2888A AU_2.31_V1.1.47ae55之前的版本存在远程命令执行漏洞,经过身份验证的用户可通过访问/cgi-bin/execute_cmd.cgi触发命令执行漏洞。

 影响范围

D-Link DSL-2888A AU_2.31_V1.1.47ae55之前的版本

 漏洞复现
首先在管理员密码栏处输入任意密码
CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析
点击登录后访问/cgi-bin/execute_cmd.cgi?timestamp=1&cmd=id即可触发命令执行漏洞
CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析
 漏洞分析

执行命令binwal -Me ../IOT_BUG/CVE-2020-24581/DSL-2888A_AU_2.12_V1.1.47Z1-Image-all.bin --run-as=root将固件文件系统提取,提取后的目录结构如图所示

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

执行命令

cd jffs2-root

进入文件系统,文件系统结构如图所示

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

该漏洞为web应用漏洞,该固件中web组件为dhttpd,执行命令find . -name “dhttpd”搜索web组件位置,搜索结果如图所示

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

如图所示,通过IDA打开dhttpd

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

该远程命令执行接口为/cgi-bin/execute_cmd.cgi,如图所示,在函数sub_9C4C中,如果访问路径中存在/cgi-bin,则调用sub_BEA0函数进行处理

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

跟进sub_BEA0函数,如图所示,在sub_BEA0函数的第52行将cgi文件与cgi-bin目录进行拼接,在第53行判断cgi文件是否存在,在第63行判断cgi文件是否存在执行权限

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

跟进sub_BEA0函数,如图所示,在sub_BEA0函数的第70行将获取当前文件路径,在71行在file查找”/”最后一次的位置,如果该位置存在,则在第76行进入file目录

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

跟进sub_BEA0函数,如图所示,在sub_BEA0函数的105-108行将进行cgi文件执行环境变量配置

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

跟进sub_BEA0函数,如图所示,在sub_BEA0函数的111-143行将进行身份校验

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

继续跟进sub_BEA0函数,如图所示,通过身份校验后,在第149行调用sub_BB5C函数对cgi文件进行处理

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

跟进sub_BB5C函数,在sub_BB5C函数的第40行调用execve函数执行cgi文件

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析
查找存在漏洞的execute_cmd.cgi文件,execute_cmd.cgi文件位于文件系统下的www/cgi-bin目录
CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

查看execute_cmd.cgi文件具体内容,execute_cmd.cgi文件具体内容如图所示,execute_cmd.cgi文件内容为获取QUERY_STRING中第二个参数的值,并通过反引号``以执行命令方式执行该值

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

在IDA中搜索QUERY_STRING,搜索结果如图所示

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

在js文件目录查找QueryString,查找结果如图所示

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

访问存在QueryString字符的ajax.js文件,ajax.js文件内容如图所示

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

故当通过身份校验时,构造uri:/cgi-bin/execute_cmd.cgi?timestamp=1&cmd=cmd可执行任意命令,由于该版本路由器在密码栏输入任意密码后即可绕过身份校验,所以不需知道设备密码即可触发命令执行漏洞

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

原文始发于微信公众号(第59号):CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月21日14:27:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析https://cn-sec.com/archives/1774064.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息