在线炒股配资门户网-杠杆交易软件搜加杠网-【东方资本】,股票杠杆app,今日热股什么意思,预计下周一股市行情展望

提交需求
*
*

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

logo

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

    申請試用
      Tenda 系列路由器CVE-2018-16333棧溢出漏洞復現
      發布時間:2023-04-28 閱讀次數: 1503 次

      漏洞簡述




      Tenda AC7 V15.03.06.44_CN、AC9 V15.03.05.19(6318)_CN、AC10 V15.03.06.23_CN、AC15 V15.03.05.19_CN、AC18 V15.03.05.19(6318)_CN系列路由器固件中存在緩沖區溢出漏洞,在處理 POST 請求傳輸過來的 ssid 參數時,ssid 參數的值直接復制到棧上的一個局部變量中,這會覆蓋函數的返回地址,從而導致了緩沖區溢出漏洞。


      固件模擬



      首先從https://github.com/Snowleopard-bin/pwn/tree/master/IOT/Tenda_CVE-2018-16333下載存在漏洞的固件
      圖片
      解壓固件


      binwalk -Me US_AC15V1.0BR_V15.03.05.19_multi_TD01.bin --run-as=root
      圖片
      解壓后在_US_AC15V1.0BR_V15.03.05.19_multi_TD01.bin.extracted/目錄下存在squashfs-root文件系統
      圖片
      接下來進行固件模擬,在本文中主要進行qemu user級調試
      首先安裝qemu-user-static


      sudo apt install qemu-user-static
      圖片
      然后執行下面的兩條命令進行qemu用戶級調試


      cp $(which qemu-arm-static) .
      sudo chroot ./ ./qemu-arm-static ./bin/httpd
      此時會發現會一直卡在如下圖所示的啟動進度
      圖片
      /bin/httpd文件拖進IDA中
      使用alt+t組合鍵搜索WeLoveLinux關鍵字,查詢資料發現此處存在check_network、ConnectCfm會進行網絡連接方面的確認,需要對這兩個方法的返回值進行patch才能繞過此處的判斷邏輯讓程序正常執行下去
      圖片
      通過以下的鏈接和命令下載和安裝IDA插件keypatch



      https://github.com/keystone-engine/keypatchhttps://github.com/polymorf/findcrypt-yara
      pip install keystone-enginepip install sixpip install yara-python
      keypatch.py、findcrypt3.py、 findcrypt3.rules三個文件拷貝到IDA的plugin目錄即可
      值得注意的是,在IDA7.5及更新的版本中,keypatch倉庫的主分支文件在導入到IDA中時可能會報錯無法正常使用,這個時候可以使用這個分支的keypatch.py文件:

      https://github.com/keystone-engine/keypatch/blob/08e743b841be90c99554b7fa4a6f5e11c6b1d8f8/keypatch.py


      安裝完成后,右鍵即可看到Keypatch插件的工具欄


      圖片


      接下來我們通過Keypatch->Patcher將check_network、ConnectCfm的
      MOV R3, R0
      都修改為
      MOV R3, #1
      圖片
      patch后的程序邏輯如下
      圖片
      點擊Edit->Patch->Apply patches to input file,即可讓上面的patch生效
      圖片
      將patch后的httpd替換掉原本的/bin/httpd文件(注意進行備份)


      mv ./bin/httpd ./bin/httpd.bak
      chmod 777 ./bin/httpd
      查詢資料發現除了要對httpd文件patch之外,還需要建立虛擬網橋br0,因為程序是從名為br0的網卡獲取網絡地址


      apt-get install bridge-utils
      apt-get install uml-utilities
      sudo brctl addbr br0
      sudo brctl addif br0 ens32
      sudo ifconfig br0 172.16.1.1/24
      sudo ifconfig br0 up
      完成br0的創建后,執行下面的命令在此進行固件模擬

      sudo chroot ./ ./qemu-arm-static ./bin/httpd
      圖片
      使用瀏覽器訪問http://172.16.1.1
      此時可能還是不能正常訪問路由器后臺界面,如下圖,這時因為程序無法找到部分文件導致的
      圖片
      這時只需要執行下面的命令拷貝web程序所需文件到/webroot/目錄即可


      cp -rf ./webroot_ro/* ./webroot/
      圖片
      此時再訪問http://172.16.1.1,發現已能正常訪問路由器管理界面


      圖片




      漏洞復現




      存在漏洞的接口地址為/goform/fast_setting_wifi_set

      當通過GET方式直接請求http://172.16.1.1/goform/fast_setting_wifi_set時,可以發現響應是跳轉到登錄頁面


      圖片


      此時將請求修改為POST方式,并在請求body中加入ssid參數,此時ssid=aaa,發送請求后,程序返回了一個errCode的響應,此時程序仍正常運行


      圖片


      我們將ssid參數修改為較長的臟數據,再次發送請求包,這個時候程序不再返回任何響應,刷新路由器頁面發現已經不能正常訪問


      圖片
      查看模擬路由器的啟動命令窗口,可以看到模擬固件進程已經退出,并提示“段錯誤”,溢出漏洞復現成功


      圖片




      漏洞分析




      根據漏洞原作者的描述,漏洞出現在路由器的web服務器--httpd文件中


      https://github.com/ZIllR0/Routers/blob/master/Tenda/oob1.md
      圖片


      使用IDA打開_US_AC15V1.0BR_V15.03.05.19_multi_TD01.bin.extracted/bin目錄下的httpd文件


      圖片


      使用alt+t組合鍵搜索"ssid"關鍵字


      圖片


      定位到調用了ssid的fast_setting_wifi_set函數,程序獲取ssid參數后,沒有經過檢查就直接使用strcpy函數復制到棧變量中,造成了棧溢出漏洞。

      圖片


      免費試用
      服務熱線

      馬上咨詢

      400-811-3777

      回到頂部