D-Link-Dir-850L遠程命令執行漏洞

2022-01-19 阿里雲應急響應
0x00 背景

2017年6月11日hack2Win(網絡設備黑客競賽)舉辦首屆線上比賽,參賽選手可以通過網際網路連入D-Link Dir-850L路由器然後黑掉它,其中有一名選手實現了遠程任意代碼執行。D-Link官方在7月27日推出了Dir-850L 路由器1.47B07版本的補丁,地址:http://support.dlink.com/ProductInfo.aspx?m=DIR-850L。

現今公布了Hack2Win競賽中提交的3個漏洞的相關細節,地址:https://blogs.securiteam.com/index.php/archives/3364。

通過廣域網或區域網實現遠程代碼執行

通過廣域網或區域網實現遠程未授權信息洩露

通過區域網實現root用戶遠程代碼執行

這裡僅僅分析遠程命令執行的漏洞。

0x01 獲取源碼

D-Link Dir-850L 路由器的固件可以從官方下載獲取,這裡下載1.14.B07版本的固件,地址: ftp://ftp2.dlink.com/PRODUCTS/DIR-850L/REVA/DIR-850L_REVA_FIRMWARE_1.14.B07_WW.ZIP。下載固件並解壓後,我們得到固件文件DIR850LA1_FW114b07WW.bin,利用binwalk提取固件內容。

上圖可以看到該固件採用的是Squashfs文件系統,從binwalk解壓出的文件中找到190090.squashfs文件,然後繼續用binwalk提取,得到如下內容

可以看出這是一個標準的linux文件根目錄。我們需要關注的是處理web服務的程序,該程序開啟各種服務埠,並且為外部訪問提供配置,修改等服務,文件存在於htdocs目錄下, 其中應用層的服務是用PHP語言編寫,也是本次分析需要重點關注的地方。

0x03 分析遠程命令執行漏洞

要成功利用遠程代碼執行漏洞,需要組合未授權任意文件上傳漏洞和命令注入漏洞才能實現。

未授權任意文件上傳漏洞利用hedwig.cgi上傳xml文件,獲取管理員用戶名和密碼。當管理員接口設置改變時,會將改變的設置以xml的格式發送給hedwig.cgi,hedwig.cgi會調用htdocs/webinc/fatlady.php去載入設置。fatlady.php核心代碼如下:

foreach ($prefix."/postxml/module"){    del("valid");    if (query("FATLADY")=="ignore") continue;    $service = query("service");    if ($service == "") continue;    TRACE_debug("FATLADY: got service [".$service."]");    $target = "/htdocs/phplib/fatlady/".$service.".php";    $FATLADY_prefix = $prefix."/postxml/module:".$InDeX;    $FATLADY_base    = $prefix."/postxml";    if (isfile($target)==1) dophp("load", $target);

可以看出,fatlady.php直接將xml文件中的service拼接在了路徑中,沒有做任何校驗,然後直接加載文件,加載的文件以』.php』結尾,那麼可以構造service為../../../htdocs/webinc/getcfg/DEVICE.ACCOUNT.xml

讀取用戶名和密碼。

有了用戶名和密碼,可以登錄,然後利用NTP伺服器的命令注入漏洞實現命令執行。命令注入漏洞發生在/etc/services/DEVICE.TIME.php文件, 核心代碼如下:

$enable = query("/device/time/ntp/enable");if($enable=="") $enable = 0;$enablev6 = query("/device/time/ntp6/enable");if($enablev6=="") $enablev6 = 0;$server = query("/device/time/ntp/server");$period = query("/device/time/ntp/period");    if ($period=="") $period="604800";$period6 = query("/device/time/ntp6/period");    if ($period6=="") $period6="604800";$ntp_run = "/var/run/ntp_run.sh";if ($enable==1 && $enablev6==1){    if ($server=="") fwrite(a, $START, 'echo "No NTP server, disable NTP client ..." > /dev/console\n');    else    {        fwrite(w, $ntp_run, '#!/bin/sh\n');        fwrite(a, $ntp_run,            'echo "Run NTP client ..." > /dev/console\n'.            'echo [$1] [$2] > /dev/console\n'.            'STEP=$1\n'.            'RESULT="Null"\n'.            'xmldbc -s /runtime/device/ntp/state RUNNING\n'.            'SERVER4='.$server.'\n'.            'SERVER6=`xmldbc -g /runtime/device/ntp6/server | cut -f 1 -d " "`\n'.            'if [ "$STEP" == "V4" ]; then\n'.            '    xmldbc -t "ntp:'.$period.':'.$ntp_run.' $STEP"\n'.            '    echo "ntpclient -h $SERVER4 -i 5 -s -4" > /dev/console\n'.            '    ntpclient -h $SERVER4 -i 5 -s -4 > /dev/console\n'.

可以看出通過$server變量直接拼接在了命令執行的代碼中,沒有做任何校驗,存在命令注入。那麼需要構造惡意的service數據,方法同獲取用戶的用戶名和密碼方式相似。首先,獲取DEVICE.TIME服務的xml文件格式

根據得到的xml文件格式,構造數據發送給hedwig.cgi加載服務, 設置服務enable=1, server為惡意命令,在23090埠開啟telnetd服務。

最後設置加載的服務生效,向pigwidgeon.cgi發送激活請求。

服務激活後,telnet遠程連接23090埠測試。

0x04 防禦方案

官方針對此次漏洞已經推出了補丁,推薦下載官方補丁更新,詳情:http://support.dlink.com/ProductInfo.aspx?m=DIR-850L。或者,開啟防火牆,禁止外網訪問web服務,降低被黑的風險。

0x05 後記

針對公布的Dir-850L路由器漏洞,官方發布了相應的補丁,但是Dir系列其他的路由器是否存在同樣漏洞呢?測試Dir-815路由器,發現存在相同漏洞的,然而官方並沒有及時推出補丁,地址: http://support.dlink.com/ProductInfo.aspx?m=DIR-815。根據以往Dir系列爆出的漏洞來看,猜測D-Link Dir系列多數路由器都是受該漏洞影響,建議大家開啟路由器防火牆,禁止外網訪問web服務或設置訪問地址白名單,以此降低被黑的風險,同時多關注官方的動態和安全補丁的發布,及時更新固件。

相關焦點

  • 【漏洞通告】D-Link VPN路由器多個命令注入漏洞
    ID類  型漏洞等級遠程利用D-Link VPN路由器CVE-2020-25757命令注入高危是CVE-2020-25758crontab注入高危是CVE-2020-25759命令注入高危可以訪問「 Unified Services Router」 Web界面的攻擊者可以利用這些漏洞發起惡意請求來注入命令,或添加Cron任務來執行任意命令,這些惡意命令將以root權限執行,最終可以控制整個設備。
  • D-Link 不止暴露固件鏡像密鑰,還被曝5個嚴重0day
    這5個嚴重的0day 漏洞是由 ACE Team – Loginsoft 發現的,它們是反射型 XSS 攻擊、緩衝溢出漏洞、獲取管理員憑據、繞過認證、執行任意代碼。攻擊者如能訪問路由器管理員頁面,即使不直到管理員憑據也能執行以上攻擊。CVE-2020-15892:棧緩衝溢出漏洞,存在於『ssi』二進位中,可導致任意命令執行。影響固件版本 1.0.8 和1.10B04。
  • D-Link DIR-605L 拒絕服務錯誤報告 (CVE-2017-9675)
    以下是我提交給D-Link的報告,包括我的發現以及漏洞的潛在成因。現在已經發布了補丁,我想將更新的可執行文件與有漏洞的可執行文件進行比較,明確補丁程序和修復程序的確切位置,之後會有一個後續的文章來講這個分析結果。
  • TP-LINK 遠程代碼執行漏洞 CVE-2017-13772 趣談
    -2017-13772/譯者:hello1900@知道創宇404實驗室本文重點討論作者近期從事 TP-Link WR940N 家用 WiFi 路由器漏洞研究獲得的心得體會,主要從發現漏洞代碼路徑的必要步驟與通過這些路徑實現遠程代碼執行的方式兩方面入手。
  • Windows遠程執行cmd命令的9種方法
    5985(HTTP)&5986(HTTPS)二、9種遠程執行cmd命令的方法:1.WMI執行命令方式,無回顯:wmic /node:192.168.1.158 /user:pt007 /password:admin123 process call create "cmd.exe /c ipconfig>d:\result.txt"2.使用Hash
  • [系統安全] 九.Windows漏洞利用之MS08-067遠程代碼執行漏洞復現及深度提權
    (參考文獻見後)一.漏洞描述MS08-067漏洞全稱是「Windows Server服務RPC請求緩衝區溢出漏洞」,攻擊者利用受害者主機默認開放的SMB服務埠445,發送特殊RPC(Remote Procedure Call,遠程過程調用)請求,造成棧緩衝區內存錯誤,從而被利用實施遠程代碼執行。
  • linux、windows常用命令大全(建議收藏)
    也可以通過cmd /c 命令 和 cmd /k 命令的方式來直接運行命令註:/c表示執行完命令後關閉cmd窗口;/k表示執行完命令後保留cmd窗口複製內容:右鍵彈出快捷菜單,選擇「標記(K)」,然後選中所需複製的內容,然後右鍵即可粘貼內容:右鍵彈出快捷菜單,選擇「粘貼§」在文件夾空白處按住Shift,然後右鍵彈出快捷菜單,可以看到「在此處打開命令行窗口
  • 開源堡壘機JumpServer遠程命令執行漏洞復現
    2021年1月15日,JumpServer發布更新,修復了一處遠程命令執行漏洞。由於 JumpServer 某些接口未做授權限制,攻擊者可構造惡意請求獲取到日誌文件獲取敏感信息,或者執行相關API操作控制其中所有機器,執行任意命令。
  • Webmin遠程命令執行漏洞預警(CVE-2019-15107)
    長按二維碼關注御見威脅情報中心背景近日,Webmin被爆出1.920版本之前存在一個遠程命令執行漏洞(CVE-2019-15107),當用戶開啟Webmin密碼重置功能後,攻擊者利用該漏洞可在易受損系統中執行任意命令,進而獲取系統Shell。
  • 安全小課堂第102期【web漏洞挖掘之任意命令執行漏洞】
    Drupal核心遠程代碼執行漏洞分析https://research.checkpoint.com/uncovering-drupalgeddon-2/https://www.anquanke.com/post/id/1046973Electron < v1.8.2-beta.4 遠程命令執行漏洞https://xz.aliyun.com/t/1990
  • PHP Composer命令注入漏洞詳情及利用方式
    研究人員在在Composer原始碼中發現的一個高危漏洞(CVE-2021-29472),該漏洞源於composer.json根文件對存儲庫的URL未正確清理,從而允許攻擊者在Packagist.org伺服器上執行任意系統命令並建立後門。當系統要求下載軟體包時,Composer將首先查詢Packagist以獲取其元數據。
  • ghostscript命令執行漏洞預警分析
    id=1640),再次指出 ghostscript 的安全沙箱可以被繞過,通過構造惡意的圖片內容,可造成命令執行。ghostscript應用廣泛,ImageMagick、python-matplotlib、libmagick 等圖像處理應用均有引用。
  • TP-LINK部分路由器存在後門漏洞-TP-LINK,路由器,後門,漏洞 ——快...
    近日,國家信息安全漏洞共享平臺CNVD收錄了TP-LINK路由器存在的一個後門漏洞(收錄編號:CNVD-2013-20783)。利用漏洞,攻擊者可以完全控制路由器,對用戶構成較為嚴重的威脅。
  • Linux 命令速查手冊
    mkdir dir1 #創建一個叫做 'dir1' 的目錄'mkdir dir1 dir2 #同時創建兩個目錄mkdir -p /tmp/dir1/dir2 #創建一個目錄樹rm -f file1 #刪除一個叫做 'file1
  • 烽火狼煙丨Webmin遠程命令執行(CVE-2019-15107)高危漏洞預警及影響力評估
    近日,Webmin被爆出一個遠程命令執行漏洞(CVE-2019-15107),Webmin是一款基於Web的功能強大的系統管理工具,被廣泛應用於Unix系統,在webmin版本低於1.920的情況下, 且必須要將用戶密碼重置功能開啟(默認此項功能是關閉的)時,攻擊者可以利用該漏洞在某些較為脆弱的系統中執行任意命令,並進一步獲取系統Shell。
  • CVE-2018-19518:PHP imap_open函數任意命令執行漏洞復現
    security-tracker.debian.org/tracker/CVE-2018-19518Red Hat https://access.redhat.com/security/cve/cve-2018-19518SUSE https://www.suse.com/security/cve/CVE-2018-19518/描述PHP 的imap_open函數中的漏洞可能允許經過身份驗證的遠程攻擊者在目標系統上執行任意命令
  • Unix 伺服器管理工具 Webmin 被曝遠程命令執行後門(附詳情)
    該後門機制可允許遠程攻擊者以 root 權限在運行 Webmin 的機器上執行惡意命令。一旦機器遭攻陷,攻擊者將攻擊通過 Webmin 管理的系統。不算Webmin 管理的設備,該攻擊的攻擊面也是巨大的。Webmin 團隊在GitHub 上表示,該應用「的全球安裝量已超過100萬次」。
  • Linux 學習筆記 第一天 文件處理命令&權限管理命令
    -l:不複製文件,只是生成連結文件。使用指令"cp"將當前目錄"test/"下的所有文件複製到新目錄"newtest"下,輸入如下命令:cp –r test/ newtest  將file1 file2複製到文件夾dir1中cp file1 file2 dir1
  • Ansible Ad-Hoc 命令
    這其實是⼀個概念性的名字,是相對於寫 Ansible playbook 來說的.類似於在命令敲⼊shell命令和 寫shell scripts兩者之間的關係。可以於執行一些臨時命令。如果我們敲些命令去較快的完成⼀些事情,⽽不需要將這些 執⾏的命令特別保存下來, 這樣的命令就叫做 ad-hoc 命令。
  • 【漏洞】D-Link DWR-932B LTE路由器中發現多個後門
    據稱D-Link DWR-932 B LTE已有超過20處風險,包括後門帳戶,默認證書,洩漏的證書,固件升級時的漏洞以及不安全的未經過調試運行的結構。如果有人成功地利用了這些弱點,那麼攻擊者就可以遠程劫持並控制你的路由器。進而導致所有連接在一起的設備和網絡都極易遭受中間人和DNS攻擊的威脅。