首页
社区
课程
招聘
命令注入漏洞CVE-2021-45382复现(学习记录)
发表于: 2023-7-30 19:11 14243

命令注入漏洞CVE-2021-45382复现(学习记录)

2023-7-30 19:11
14243

这个漏洞影响的版本较多:DIR-810L、DIR-820L、DIR-826L、DIR-830L、DIR-836L。很好奇这个漏洞怎么做到没有被及时发现,影响到这么多个版本的。同时也希望通过分析发现新的命令注入可能存在的漏洞点。

使用binwalk解包,获取固件文件系统:

查看一下启动文件:

查看一下二进制文件,发现存在telnet、telnetd和wget可用于漏洞验证:

在漏洞描述中详细的说明漏洞存在于ncc2文件中的DDNS函数中,直接在文件系统中查找ncc2文件:

将sbin/ncc文件拿到IDA中分析,直接查找ddns函数,定位到关键函数并在doCheck函数中找到漏洞点:

上述代码含义为:判断ccp_act的值是否为doCheck,若为doCheck则调用doCheck函数检查参数。

查找get_entry_value_by_name__system函数的实现:

上述代码含义是:通过get_entry_value_by_name获取ddnsHostName、ddnsUsername、ddnsPassword的值并将其传入到__system中拼接执行。在这个过程中并没有对从前端输入的数据进行过滤或者检查,因此导致了命令注入漏洞。ddnsHostName、ddnsUsername、ddnsPassword的值是通过ddns_check.ccp传入。综上可知大概的payload如下:

使用FirmAE模拟固件:

默认密码为空,直接登录即可。

登录后,抓包改包验证漏洞:

复现成功,取得shell:

这个命令执行漏洞没有后台页面存在,是直接POST 数据到ddns_check.ccp交给后端处理,处理好之后将结果返回给用户。因而比较隐蔽不容易被发现,需要通过逆向ncc2文件才能发现其端倪。感觉很奇怪,为什么要留一个不提供用户接口的ddns_check功能,虽然在www文件夹下发现了一个DynamicDNS.html页面,并且ddns看命名也像是和动态dns有关,但是设置动态dns默认是关闭的并且文件中也没有向URL:/ddns_check.ccp提交数据的代码。因此怀疑本漏洞所在功能是某个版本遗留功能。

D-Link_DIR-830LA1命令执行漏洞(CVE-2021-45382) | 凉生霜气清,月上灯火明 (foxcookie.github.io)


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 1
支持
分享
最新回复 (3)
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
大佬能不能看看CVE-2023-27216_D-Link_DSL-3782_Router_command_injection的RCE,github有文档
2023-8-4 18:19
0
雪    币: 400
活跃值: (3943)
能力值: ( LV8,RANK:155 )
在线值:
发帖
回帖
粉丝
3
DavidJou 大佬能不能看看CVE-2023-27216_D-Link_DSL-3782_Router_command_injection的RCE,github有文档
安排
2023-8-4 19:39
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
大佬,我有个问题,这个url是怎么确定的?这个callback_ccp_dns_check函数是ncc文件export出去的,但是我在整个文件系统都没有看到这个函数有在别的文件中引用或者web服务中引用,求指教
2024-4-10 15:37
0
游客
登录 | 注册 方可回帖
返回
//