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/