2.4_SSRF服务端请求伪造

时间:2024-11-10 09:38:00
  • SSRF服务端请求伪造


  1. 定义:服务端请求伪造。是一种攻击者构造请求后,交由服务端发起请求的漏洞;

  2. 产生原理:该服务器提供了从其他服务器获取数据的功能,但没有对用户提交的数据做严格校验;

  3. 利用条件:
    1). 提供了从 其他服务器 获取数据的功能;
    2). 其他服务器 地址可控并且没有经过严格过滤;

  4. 分类:有回显型,无回显型;

  5. 验证方式:
    1). 有回显:访问外部的网址看是否回显;
    2). 无回显:使用 DNSLOG 外带或 HTTP 日志外带 ;

  6. 漏洞函数:
    1). file_get_contents(),读取并展示文件内容;
    2). cur_exec(),读取并展示URL内容;
    3). fsockopen(),使用 socket 与服务器建立连接,进行数据传输;

  7. SSRF 利用协议:http://file://dict://gopher:// 等;
      ①. 例:http://127.0.0.1/Testing/pikachu-master/vul/ssrf/ssrf_curl.php?url=http://www.baidu.com/路径      加载外部资源;
      ②. 例:http://127.0.0.1/Testing/pikachu-master/vul/ssrf/ssrf_curl.php?url=file://文件绝对路径名   读取文件内容;
      ③. 例:http://127.0.0.1/Testing/pikachu-master/vul/ssrf/ssrf_curl.php?url=dict://ip:port   | dict://ip:port/命令       获取端口信息(通过响应时间判断端口开放情况);
      ④. 例:http://127.0.0.1/Testing/pikachu-master/vul/ssrf/ssrf_curl.php?url=gopher://IP:port/_{TCP/IP数据流}     传输文本信息
      ⑤. PS:在使用 Gopher 协议发送 POST 请求包时,HostContent-Length 和 Content-Type 请求头是必不可少的,但在 GET 请求中可以没有。

  8. 危害(攻击方式:对内网攻击,利用协议攻击):
    1). 对受害者主机所在的内网进行 主机发现,端口扫描和服务探测;
    2). 攻击运行在 内网的应用程序 和 内外网的web应用;
    3). 利用 file 协议,读取其本地文件;
    4). 利用其他协议进行恶意攻击;

  9. SSRF 可以攻击的内网应用有 redisfast-cgithinkphp

  10. SSRF 攻击内网 redis 服务 getshell 的几种方式:

    1. Windows 系统:
      1). 写入 webshell;
      2). 计划任务反弹 shell;
    2. Linux 系统:
      1). 写入 SSH 公钥;
      2). 主从复制;
      3). 沙盒命令执行;
  11. SSRF 攻击内网 redis 可以利用的协议:http 和 gopher

  12. 过滤绕过方式: 回环地址短地址,@替换分隔符,添加端口和后缀,最后编码重定向;
    1). 回环地址替换绕过:127.0.0.1 替换为localhost或其他编码;
    2). URL短地址绕过:http://127.0.0.1 替换为 http://mtw.so/5zmAOm
    3). 利用 @(或 ?)绕过:限制了必须有某个URL(http://www.xxx.com),http://www.xxx.com@(或?)127.0.0.1
    4). 分隔符替换绕过:127.0.0.1 替换为 127。0。0。1
    5). 添加端口绕过:127.0.0.1:3306
    6). 添加后缀绕过:127.0.0.1.xip.io 或127.0.0.1.nip.io
    7). URL编码绕过:限制请求不为内网地址,127.0.0.1替换为2130706433
    8). 重定向绕过:使用网站生成重定向URL,重定向到需要访问的站点;
          ①. POC:<?php header("location:http://127.0.0.1:80/flag.php"); exit();?>
          ②. POC放于目录下,ip访问:例192.168.3.16/2.php 会进行跳转;

  13. CSRF与SSRF的区别:

    1. CSRF 是跨站请求伪造,SSRF 是服务端请求伪造;   (定义)
    2. CSRF 针对的是用户的操作,SSRF 针对的是服务端能访问的资源;   (针对目标)
    3. CSRF 需要登录,SSRF 无需登录;  (是否登录)
    4. CSRF 欺骗客户端发起请求,SSRF 欺骗服务端发起请求;(本质)
  14. 如何挖掘SSRF漏洞:寻找该服务器能访问 其他服务器资源的功能点;如下载,收藏,分享,翻译,加载等;

  15. SSRF 防御方案:
    1). 禁用协议;
    2). 限制内网IP和请求端口;
    3). 过滤返回信息;
    4). 统一错误信息;

  16. SSRF 常与什么漏洞一起利用:信息泄露(http),文件包含(file) 和 命令执行(dict,gopher);

  17. SSRF 漏洞和 URL 跳转漏洞的区别:

    SSRF 漏洞 URL 跳转漏洞
    请求方(决定性) 跳板服务器的 IP 地址 本机的 IP 地址
    页面是否跳转 不会跳转 会跳转
  18.  Google语法挖掘SSRF漏洞

    inurl:?url=
    inurl:?share=
    inurl:?wap=
    inurl:?src=
    inurl:?source=
    inurl:?target=
    inurl:display=
    inurl:sourceURL=
    inurl:imageURL=
    inurl:domain=

  • 免责声明


  1. 本专栏内容仅供参考,不构成任何投资、学习或专业建议。读者在参考本专栏内容时,应结合自身实际情况,谨慎作出决策。

  2. 本专栏作者及发布平台尽力确保内容的准确性和可靠性,但无法保证内容的绝对正确。对于因使用本专栏内容而导致的任何损失,作者及发布平台概不负责。

  3. 本专栏部分内容来源于网络,版权归原作者所有。如有侵权,请及时联系我们,我们将尽快予以处理。

  4. 读者在阅读本专栏内容时,应遵守相关法律法规,不得将内容用于非法用途。如因读者行为导致不良后果,作者及发布平台不承担任何责任。

  5. 本免责声明适用于本专栏所有内容,包括文字、图片、音频、视频等。读者在阅读本专栏内容时,视为已接受本免责声明。

  6. 作者及发布平台保留对本免责声明的解释权和修改权,如有变更,将第一时间在本专栏页面进行公告。读者继续使用本专栏内容,视为已同意变更后的免责声明。

敬请广大读者谅解。如有疑问,请联系我们。谢谢!