一、前言
近日D-Link發(fā)布公告[1]稱旗下產(chǎn)品DAP-2020存在任意文件讀取漏洞,CVE編號為CVE-2021-27250,目前已在硬件版本:A1,固件版本:1.01 上測試了PoC,由于漏洞影響核心組件,因此其他版本也可能受到此漏洞的影響。
二、漏洞影響分布
當前網(wǎng)上大概暴露有 1,882,813 潛在脆弱主機。其中分布在哥倫比亞的機器最多。查看當?shù)鼗ヂ?lián)網(wǎng)用戶統(tǒng)計信息[2],可以注意到該地使用互聯(lián)網(wǎng)的人口占總人口的 65%。根據(jù)哥倫比亞總人口 4965 萬中的 65%可以估算大約有 3200 萬互聯(lián)網(wǎng)用戶。
數(shù)據(jù)來源:綠盟科技威脅情報中心
三、體系結構與固件提取
由于廠商的官方“固件更新”鏡像沒有加密,所以可以直接使用而無需通過UART或SPI閃存轉儲固件。
固件下載地址:
ftp://ftp.dlink.de/dap/dap-2020/driver_software/DAP-2020_fw_reva_102rc002_ALL_en_20200322.zip
從D-Link的FTP 服務器下載固件后,可以使用binwalk提取文件系統(tǒng)。
binwalk -e DAP-2020_RevA_Firmware_102rc002.bin
重要文件存儲在 webroot 中,路徑為\usr\www,包含Web服務器使用的一些 html 文件以及一個 cgi-bin目錄,功能實現(xiàn)的二進制文件如下:
Webproc:用于處理Web界面的 Main Binary。
Webupg:用于文件上傳,固件升級,配置更改。
相關的系統(tǒng)保護措施可以使用checksec程序進行檢測,結果如下:
通過檢測結果可以發(fā)現(xiàn)編譯時未啟用安全性功能。
四、漏洞分析
在登錄時,POST請求中有很多可選的標簽供使用,其中errorpage標簽用于跳轉頁面顯示登陸失敗時的信息。由于程序沒有對用戶的輸入做足夠的過濾,在用戶登陸失敗時,攻擊者通過修改errorpage標簽的值即可重定向到任意文件,實現(xiàn)任意文件讀取。
登陸時的HTTP POST請求
由于在文件操作前并沒有對用戶輸入路徑進行必要的過濾,errorpage標簽指定的文件內容會顯示在Response中,因此攻擊者可以利用這個標簽來讀取目標系統(tǒng)的敏感文件。
讀取日志文件
修改errorpage標簽,讀取/var/log/sysevent.txt 日志文件:
POST請求
Response中返回的/var/log/sysevent.txt 日志內容
讀取passwd等敏感文件
五、總結
由于欠缺對errorpage路徑的合理過濾,導致用戶可以任意修改該標簽內容,觸發(fā)文件操作,造成信息泄露。建議程序開發(fā)的時候全面考慮文件的安全使用場景并對參數(shù)路徑做安全檢查,避免產(chǎn)生敏感數(shù)據(jù)泄露導致的進一步網(wǎng)絡攻擊。