SSRF(Server-Side Request Forgery 服务器端请求伪造)
作用:利用漏洞伪造服务器端发起请求,从而突破客户端获取不到数据的限制


应用场合

  1. 内外网的端口和服务扫描
  2. 主机本地敏感数据的读取
  3. 内外网主机应用程序漏洞的利用
  4. 内外网Web站点漏洞的利用等

漏洞利用:

  1. RFI(远程文件包含)在Payload中加入各种目的的脚本
  2. XXE获取敏感文件内容,使用如http协议、php协议、file协议

以上都是发送GET请求进行利用的
如果内网站点的漏洞在POST请求的参数中又或者在Request header中的某个字段里,该如何构造SSRF请求进行利用
SSRF在各个编程语言中可以使用的协议:

gopher协议的运用:
gopher协议比http协议出现得更早,现在已经不常用了,但在SSRF漏洞利用中,gopher可以发送各种格式的请求包,这样可以解决漏洞点不在GET参数的问题
基本协议格式 URL:gopher://<host>:<port>/<gopher-path>
进行如下请求可以发送一个POST请求,且参数cmd的值为balabal,这里构造gopher请求的时候,回车换行符号要进行2次url编码%250d%250a
http://192.168.163.150/test.php?url=gopher://192.168.163.1:80/_POST /evil.php HTTP/1.1%0d%0aHost: 192.168.163.1%0d%0aUser-Agent: curl/7.43.0%0d%0aAccept: */*%0d%0aContent-Type: application/x-www-form-urlencoded%0d%0a%0d%0acmd=balabala
由于gopher可以构造各种HTTP请求包,所以gopher在SSRF漏洞利用中充当万金油的角色

具体的攻击方式可以参考如下链接:
https://blog.chaitin.cn/gopher-attack-surfaces/


dict协议的运用:
dict协议是一个字典服务器协议,通常用于让客户端使用过程中能访问更多的字典源,但是在SSRF中使用dict协议可以轻易地获取目标服务器端口上运行的服务版本等信息

如请求http://192.168.163.150/test.php?url=dict://192.168.163.1:3306/info

 posted on 2018-05-30 15:12  Amev  阅读(432)  评论(0编辑  收藏  举报