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