SSRF是什么

  1. kali中自带的工具:curl,获取对应url数据,它是在命令行中工作的文件传输工具,支持FTP、TELNET、HTTP、HTTPS、POP3等协议

  2. php curl扩展

    • 获取网页资源——爬虫
    • webservice——获取接口数据
    • FTP——下载文件
      // curl的使用
      <?php
      // 创建一个cURL资源
      $ch = curl_init();
      
      // 设置URL和相应的选项
      curl_setopt($ch, CURLOPT_URL, "http://www.w3cschool.cc/");
      curl_setopt($ch, CURLOPT_HEADER, 0);
      
      // 抓取URL并把它传递给浏览器
      curl_exec($ch);
      
      // 关闭cURL资源,并且释放系统资源
      curl_close($ch);
      ?>
      
  3. SSRF(Server-Side Request Forgery) 服务器端请求伪造

    • 一种由攻击者构造形成,从服务端发起请求的安全漏洞。原因:服务端提供了一个从其他服务器读取数据的功能,并且没有对请求地址做过滤。
    • 漏洞从服务端发起,所以可以访问到内网其他的内容
    • PHP中可能会引起SSRF漏洞的函数:
      • curl_exec()——执行cURL会话
      • file_get_contents()——将整个文件读入一个字符串中
      • fsockopen()——打开一个网络连接或者一个Unix套接字连接
  4. CURL支持的其他协议

    协议作用payload
    file查看文件curl -v ‘file:///etc/passwd’
    dict探测端口http://localhost/ssrf/ssrf1.php?url=dict://127.0.0.1:3306
    gopher反弹shellcurl -v “此处省略一大堆代码”
  5. 补充

    • dict协议:用于搭建在线字典服务(类似英汉大字典之类的)、能强行读取一些tcp内容
    • gopher协议:是一种信息查找系统,只支持文本,不支持图像,已被HTTP替代
  6. 危害

    • 扫描资产
    • 获取敏感信息
    • 攻击内网服务器(绕过防火墙)
    • 访问大文件、造成溢出
    • 通过Redis写入WebShell或建立反弹连接

SSRF常见场景

  1. 社会化分享功能
    分享功能

  2. 转码服务
    在这里插入图片描述

  3. 在线翻译
    在这里插入图片描述

  4. 图片加载,下载功能
    在这里插入图片描述

  5. 图片,文章收藏功能
    在这里插入图片描述

  6. 网站采集、网站抓取
    在这里插入图片描述
    实际案例

  • Wordpress 3.5.1以下版本xmlrpc.php pingback的缺陷与SSFR
  • discuz!的SSRF(利用php的header函数来绕过,其实就是302跳转实现协议转换)
  • weblogic的SSRF

SSRF的发现和利用

  1. 爬取地址
  2. 查看是否请求了其他资源
  3. 用Google语法搜索关键字:share\wap\url\link\src\source\target\u\3g\display\sourceURL\imageURL\domain
  4. 各种编程语言的请求函数

工具:

靶场练习(pikachu)

  • 点击SSRF-curl页面下的链接,观察到url中可能存在SSRF,手动修改url测试漏洞存在性。
    在这里插入图片描述
    👇 在url=后面修改为http://www.baidu.com页面有回显在这里插入图片描述
    👇 再试试dict协议dict://127.0.0.1:3306
    在这里插入图片描述
    👇 接着试用file协议file:///D:/files/tv.txt读取文件
    在这里插入图片描述
  • 再换用SSRF-file_get_content,点击链接,观察url
    在这里插入图片描述
    👇 该函数可以使用file协议、http协议、php协议。只有dict协议出错。测试php协议:php://filter/read=convert.base64-encode/resource=ssrf.php
    或者php://filter/read=convert.base64-encode/resource=../../../test.php

SSRF的防御措施

  1. 禁用协议
  2. 限制请求端口
  3. 设置URL白名单
  4. 过滤返回信息
  5. 统一错误信息
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐