CTF SSRF(服务器端伪造请求)

南笙酒味 提交于 2019-11-28 13:13:16

CTF SSRF(服务器端伪造请求)

一、概念

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

对外发起网络请求的地方都可能存在SSRF漏洞

二、危害

  • 1、可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息
  • 2、攻击运行在内网或本地的应用程序(比如溢出)
  • 3、对内网Web应用进行指纹识别,通过访问默认文件实现
  • 4、攻击内外网的Web应用,主要是使用Get参数就可以实现的攻击(比如Struts2漏洞利用,SQL注入等)
  • 5、利用file协议读取文件

三、漏洞挖掘与判断

  • 从WEB功能上寻找
    • 分享:通过URL地址分享网页内容
    • 转码服务:通过URL地址吧原地址的网页内容调优使其适合手机屏幕浏览
    • 在线翻译:通过URL地址翻译对应文本的内容。
    • 图片加载与下载:通过URL地址加载或下载图片
    • 未公开的api实现以及其他调用URL的功能
  • 从URL关键字中寻找
    • share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain
  • 基本判断
    • 回显
      • 直接观察
      • 抓包
      • 用vps监听
    • 延时
    • DNS请求

四、相关函数

  • file_get_contents

  • fsockopen

  • curl_exec

五、IP绕过

  • 添加端口
    例如:192.168.200.9:80
  • 短网址
    利用302跳转到目标网址
  • 指向任意IP的域名xip.io
    例如:10.0.0.1.xip.io resolves to 10.0.0.1
  • IP限制绕过
    • 十进制
    • 八进制
    • 十六进制
    • 不同进制组合转换
  • 302跳转
  • 结合dict://file://gopher://
  • http://A.com@10.10.10.10
    相当于以http://A.com的身份访问10.10.10.10
  • http://A.com?xxx=xx
    后跟无用参数绕过

六、Gopher协议

gopher是一个互联网上使用过的分布型的文件搜索获取网络协议
gopher协议支持发出GET、POST请求:可以先截获get请求包和post请求包,在构成符合gopher协议的请求。gopher协议是ssrf利用中最强大的协议
利用 Gopher 协议拓展攻击面

1、使用限制


(图片来源见水印)

  • phpinfo中查看curl支持的协议
  • 数据库无密码

2、构造payload

https://github.com/tarunkant/Gopherus
https://github.com/swisskyrepo/SSRFmap

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!