基于icatch DVR漏洞复现

kankai  1701天前

最近有看到篇文章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

3.png

再定位到该硬编码生效的位置,function:dvr_core::SetSystemAccount

2020-03-28-07-55-42.jpg

从该方法中还可以查找到系统设定的管理员账户是admin。

任意文件读取、开启系统服务

官网补丁中有提及到防止telnet的恶意开放,IDA-分析net_box.cgi-全局搜索:telnetd

2020-03-27-22-04-44.jpg

位置位于function:box_html,有如下信息,发现除了telnet服务外还有其他可开启的服务

2.png

定位到f=telnetd跳过从150-538行中其他内容的请求处理过程,直接从539看起,厂商Lilin是支持开启telnet服务的

1.png

到这里,留意到每一个命令执行完后都有将值link到s及&s

2020-03-28-08-28-43.jpg

定位到处理&s过程,直接将拼接的文件输出,由此就可以进行目录跳转了

2020-03-28-08-24-18.jpg

2020-03-28-09-49-57.jpg

命令执行

在web页面配置NTP,发现其tcp包有GetConfiguration(从文件读取配置),访问其中的service.xml,重放如下,其中有ntp的设置

2020-03-28-09-53-01.jpg

IDA-dvr_box-全局搜索GetConfiguration,紧接着有SetConfiguration,那应该就是直接将配置写入s相应配置文件中,这里使用service.xml,从而修改了ntp配置参数

2020-03-28-09-09-54.jpg

再借助其ntp服务的自动更新,即dvr_core::NTPUpdate,发现是借助UtillityBox::UtillityNtp::run执行,再次跟踪定位UtillityBox::UtillityNtp::run

2020-03-28-09-33-09.jpg

定位如下,判断出是由外部引入的

2020-03-28-09-35-49.jpg

到libutility.so(就在当前目录中),如下,直接执行拼接

2020-03-28-09-41-24.jpg

通过如下请求修改ntp参数

image.png

参考链接

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商城中可以找到


本文为白帽汇原创文章,如需转载请注明来源。

最新评论

昵称
邮箱
提交评论