SSRF

服务端请求伪造(Server Side Request Forgery, SSRF)

攻击者构造形成以服务器的身份发送一条构造好的请求给服务器所在内网。因为请求是由服务端发起的,所以服务端能请求到与自身相连而与外网隔离的内部系统

危害

  • 可以对服务器所在的内网环境进行端口扫描、资源访问
  • 访问内部资源,如连接数据库等
  • 若在云服务器可以利用云服务器元数据攻击云平台内其他组件或服务
  • 利用Redis未授权访问getshell

场景

  • XXE漏洞点
  • 图片加载/下载:通过URL加载网络图片(头像上传等)
  • 转码服务:适配手机屏幕大小并通过URL地址进行图片转码
  • 分享功能:通过URL地址分享网页内容,通过URL获取目标页标题、页面、截图等内容
  • 编辑器进行远程图片抓取
    • 如: ueditor(ueditor的远程图片抓取的地址一般在/ueditor/editor_config.js中的catcherUrl参数中)

利用

访问内网服务

伪协议利用

Redis利用

云主机

工具

Bypass

更改IP地址写法

解析到内网的域名

利用HTTP状态码跳转

协议替代

利用域名特殊字符标准化处理

利用IPv6

DNS Rebinding(DNS重绑定)

Fix

看到很多面试喜欢问这个,就顺手写一下

设置内网IP的黑名单,对于在黑名单内的IP,禁止访问

统一 IP 地址格式

过滤特殊字符,对URL规范化处理

禁止302跳转,设置不跟随跳转

对于域名来说,应先通过DNS解析IP,判断IP是否为内网黑名单中

检测协议,设置协议白名单,可以防止file://,gopher://,ftp:// 等协议引起的问题。

对DNS Rebinding(DNS重绑定),考虑使用DNS缓存或者Host白名单


本站由 Wells 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。