V1.0.03.21RV340V1.0.03.21RV340RV340V1.0.03.18 2、漏洞分析
固件為格式,與常見的文件貌似有一些些區別?直接使用一路解壓,當得到時繼續解壓,最終結果如下:
使用binwalk對文件openwrt-comcerto2000-hgw-rootfs-ubi_nand.img文件進行分析,最終可得到文件系統中的全部內容:
可知目標平臺為:ARM 32位小端。
JSON-RPCset_snmpUSMUserPrivKeyRPCrootfs/www/cgi-bin/jsonrpc.cgiIDAjsonrpc.cgi,RPCsub_149FCsub_149FCRPC
關鍵點位于,這里剛好與指令的前個字節匹配:
sub_12DB4“sessionid”sub_13E2C
可知此處調用了導出函數jsonrpc_set_config處理set_snmp請求,于是在rootfs根目錄使用grep -r “jsonrpc_set_config” ./ 來定位導出此函數的so文件:
jsonrpc.cgi jsonrpc_set_configlibjsess.so使用打開定位到導出函數,發現函數被動態調用,而我們又無法動態調試此文件,因此無法獲取到函數的真實地址。
“USMUserPrivKey” setpre_snmpset_snmp
3、漏洞復現
開啟監聽:
重放上一步中抓取到的數據包,在字段注入待執行的命令:
ncshell 4、補丁對比
補丁之前的代碼,未校驗參數,直接調用popen執行命令:
參考資料:
[2] https://www.zerodayinitiative.com/advisories/ZDI-21-559/