摘要:
什么是SSRF?
SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造恶意请求,并由服务器端 代为发起此请求的安全漏洞。攻击者能够利用存在缺陷的Web应用作为代理,去攻击服务器所在内网或本地的其他服务。
简单比喻 :A(用户)让B(存在漏洞的服务器)去访问C(目标,通常是内网或本地的资源)。如果B在"不知情"(即未对A的请求目标做严格校验)的情况下执行了请求,就形成了SSRF。
本文围绕 SSRF(服务端请求伪造)攻击实战展开,聚焦四大核心关卡:内网访问、伪协议读取文件、端口扫描、POST 请求伪造。
作者对SSRF漏洞的总结: 网络安全进学习:SSRF(服务器端请求伪造)漏洞全解析-CSDN博客

目录
第一关:内网访问
点击内网访问

由题知要我们在URL上修改,那就用http伪协议去访问http://127.0.0.1/flag.php

将得到的信息复制到提交栏,通关。

第二关:伪协议读取文件

访问题目给的文件,发现 ???,没有得到什么信息,检查源代码

得到想要的信息,通关!


第三关:端口扫描

访问127.0.0.1:8000端口,并使用bp抓包,发送intruder

由于只要一个变量,就直接选sniper,标亮端口

由题目知:Payload set选择numbers,范围是8000-9000,step是1

验证匹配结果,并开始攻击(不必要的参数都删掉,影响判断)

端口爆破成功,根据我们要的数据长度和别的数据不一样,找到我们要的数据(就像我这样参数太多了),复制信息,通关!

第四关:POST请求
题目这里说了使用跟踪302跳转,这就要求使用gopher协议来解答,gopher可以理解为古早版本的http请求。

访问目标文件

又没给我们信息,检查代码,复制这个key,后面有用

使用bp抓包,发送到repeater

点击发送,我们可以看到key值和我们刚刚复制的一样

构造一个简单的POST请求:
POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36
key=c6dd59e90eebad8e3b6bb36df8e12188
对构造的post请求进行url编码
随便找个在线编码工具,对这个请求编码

对第一次编码的换行符进行处理:复制内容,把%0A改成%0D%0A;

再把得到的结果,再进行编码一次

得到的结果加上 gopher://127.0.0.1:80/_

再把URL后面的内容替换成复制的内容,点击发送,response回应我们要的数据,通关!
