提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      CVE-2020-24581 D-Link DSL-2888A 远程命令执行漏洞复现与分析
      发布时间:2023-03-24 阅读次数: 745 次
      漏洞简介

      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之前的版本





       漏洞复现
      首先在管理员密码栏处输入任意密码
      图片
      点击登录后访问/cgi-bin/execute_cmd.cgi?timestamp=1&cmd=id即可触发命令执行漏洞
      图片




       漏洞分析

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

      图片

      执行命令

      cd jffs2-root

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

      图片

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

      图片

      如图所示,通过IDA打开dhttpd

      图片

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

      图片

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

      图片

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

      图片

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

      图片

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

      图片

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

      图片

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

      图片
      查找存在漏洞的execute_cmd.cgi文件,execute_cmd.cgi文件位于文件系统下的www/cgi-bin目录
      图片

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

      图片

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

      图片

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

      图片

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

      图片

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

      图片


      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部