目录
一.漏洞原理
SSRF 服务端请求伪造 原理:在某些网站中提供了从其他服务器获取数据的功能,攻击者能通过构造恶意的URL参数,恶意利用后可作为代理攻击远程或本地的服务器。
二.SSRF的利用
1.对目标外网、内网进行端口扫描。
2.攻击内网或本地的程序或应用
3.利用file协议读取本地文件
4.利用get攻击外网或内网的web应用
三.靶场练习
1.内网访问
根据提示在url后的参数读取flag.php
2.伪协议读取文件
根据提示,采用file协议即可拿到flag
ssrf漏洞中常使用的伪协议:
1.file:主要用于读取服务器本地文件,访问本地的静态资源
2.dict:一般用来探测内网主机以及端口开放情况,也可以用来执行一些服务的命令
3.gopher:分布式文档传递服务,使用gopher可发送各种格式的请求包,利用此协议可以攻击内网的FTP、Telnet、Redis等,也可进行GET,POST请求
3.端口扫描
根据提示爆破8000-9000的端口
发现8603端口的长度和别的端口有较大差别
4.POST请求
使用file协议查看flag.php
根据其中的php源码可得知,该源码检查客户端请求是否通过post传递了一个有效key值,传递了的话则输出flag
这里使用gopher协议向服务器发送post包,首先构造gopher协议需要的post请求
先访问flag.php获得key
即可构造gopher所需的post请求
POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Length: 36
Content-Type: application/x-www-form-urlencoded
key=6d6f1d103699402e50beaa8d49f32823
在向服务器发送请求时,浏览器会进行第一次URL解码,服务器收到请求执行curl后进行第二次URL解码。所以需要对构造的请求包也进行两次URL编码,这里借助在线工具即可,注意:第一次编码后,需要将%0A全部替换为%0D%0A
将编码后的数据放入参数中提交即可获得flag
gopher协议
?url=gopher://127.0.0.1:80/_