基于icatch DVR漏洞复现
最近有看到篇文章LILIN DVR 在野0-day 漏洞分析报告,看到其中利用NTP(Network Time Protocol)更新时间进行的命令执行漏洞,联想到在许多设备中存在(如:DLink DIR系列路由器的远程命令执行漏洞利用NTP服务进行命令注入,想看利用NTP服务进行路由器RCE的可以看看:https://xz.aliyun.com/t/2040),便复现了一遍漏洞。在网上搜索相关固件时无意间看见,已经有前辈分析过了(其实在上面的文章中已有链接,诶啥也不说了)
在分析报告有提及到三个漏洞,本文复现的即是这三个:硬编码、任意文件读取及开启telnet等服务、命令执行,下面就讲讲复现过程。
固件
直接借用zhangdapao文章中提及到的固件,非常感谢。
工具
使用工具IDA、fwtools(在zhangdapao文章中有提及)
硬编码漏洞
root/icatch99
report/8Jg0SR8K50
admin/123456
以上用户名、密码可用于登录web和telnet,其中admin账户只能用于web登录。
使用IDA-dvr_box-全局搜索password,如下,该固件存在硬编码report:8Jg0SR8K50
再定位到该硬编码生效的位置,function:dvr_core::SetSystemAccount
从该方法中还可以查找到系统设定的管理员账户是admin。
任意文件读取、开启系统服务
官网补丁中有提及到防止telnet的恶意开放,IDA-分析net_box.cgi-全局搜索:telnetd
位置位于function:box_html,有如下信息,发现除了telnet服务外还有其他可开启的服务
定位到f=telnetd跳过从150-538行中其他内容的请求处理过程,直接从539看起,厂商Lilin是支持开启telnet服务的
到这里,留意到每一个命令执行完后都有将值link到s及&s
定位到处理&s过程,直接将拼接的文件输出,由此就可以进行目录跳转了
命令执行
在web页面配置NTP,发现其tcp包有GetConfiguration(从文件读取配置),访问其中的service.xml,重放如下,其中有ntp的设置
IDA-dvr_box-全局搜索GetConfiguration,紧接着有SetConfiguration,那应该就是直接将配置写入s相应配置文件中,这里使用service.xml,从而修改了ntp配置参数
再借助其ntp服务的自动更新,即dvr_core::NTPUpdate,发现是借助UtillityBox::UtillityNtp::run执行,再次跟踪定位UtillityBox::UtillityNtp::run
定位如下,判断出是由外部引入的
到libutility.so(就在当前目录中),如下,直接执行拼接
通过如下请求修改ntp参数
参考链接
https://icatch99.blogspot.com/2019/11/icatch-dvr.html
https://blog.netlab.360.com/multiple-botnets-are-spreading-using-lilin-dvr-0-day/
https://www.meritlilin.com/assets/uploads/support/file/M00158-TW.pdf
附,上述三个漏洞的POC在Fofa商城中可以找到
本文为白帽汇原创文章,如需转载请注明来源。
最新评论