前言
https://sec.cloudapps.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-rv-command-inject-BY4c5zd
1day分析
diff了一下修补前和修补后两个固件。
ssi.cgi这个文件当中,笔者发现修复之后的固件比修复前的固件多出了两个函数,那么大概率就是通过这两个函数对存在命令注入的地方加上了检查以修复命令注入漏洞。直接看一下修复之后的固件里的NK_CHECK_LANGUAGE函数。很明显,这个函数的作用是对参数进行了判断和设置,和我们预想的一致。那么旧版本固件中存在的命令注入漏洞大概率出现在这个函数的上层函数中。
NK_UiLanguageChange,我们看一下修补前的固件中的这个函数实现了什么功能。通过函数名,大体可以判断出这个函数的作用应该是切换界面的语言。这个函数首先获取了submitStatus和changelanguage的值,经过一些判断后,把changelanguage的值作为参数传进CreateFormatFile函数中。
CreateFormatFile函数。很明显,这个函数由于传进来的参数param_1没有进过任何检查,存在一个命令注入漏洞。
NK_CHECK_LANGUAGE函数对参数进行了过滤。
捕获0day
漏洞分析
NK_UiSetPassword这个函数,这个函数的作用是更改用户的密码。
Poc
https://github.com/fxc233/iot-vul/tree/main/Cisco/Cisco%20RV32X
Notices
文章首发
https://mp.weixin.qq.com/s/UwsQH9nr1D4FzK2lhy_W2A