SSRF漏洞实战:当端口探测受限于IP过滤时,如何巧妙绕过防护?

在当今的Web安全领域,SSRF(Server-Side Request Forgery,服务器端请求伪造) 是一个极具威胁性的漏洞类型。它允许攻击者“借刀杀人”,利用服务器的身份发起任意网络请求,从而探测内网服务、读取本地文件,甚至实现远程代码执行。

SSRF漏洞实战:当端口探测受限于IP过滤时,如何巧妙绕过防护?

然而,随着安全意识的提升,越来越多的系统开始对SSRF进行防御,其中最常见的手段就是对目标IP地址进行黑名单或白名单过滤。面对这种限制,许多初学者会陷入“无法探测内网”的困境。本文将深入剖析在SSRF漏洞利用中,当IP被限制时的多种绕过技巧与实战方法,助你在渗透测试中突破防线。


SSRF与IP限制:攻防对抗的起点

什么是SSRF?

SSRF漏洞的核心在于:服务器未对用户提供的URL参数进行严格校验,导致攻击者可以构造恶意URL,让服务器向内网或其他敏感地址发起请求。

常见的IP限制方式

开发者通常采用以下方式防御SSRF:

  • 黑名单过滤:禁止请求 127.0.0.110.0.0.0/8172.16.0.0/12192.168.0.0/16 等私有IP段。

  • 正则匹配:通过正则表达式检测URL中是否包含内网IP。

  • 域名白名单:仅允许访问指定域名。

但这些防御手段往往存在可被绕过的“缝隙”。


实战绕过技巧:8种方法突破IP限制

以下是经过实战验证的SSRF绕过IP限制的常用方法,适用于端口探测、服务指纹识别等场景。

1. @符号绕过(URL解析规则)

原理:在URL中,@ 符号用于分隔用户名和密码。如果格式为 http://user:pass@host,则 @ 后的 host 才是实际访问的目标。

绕过技巧

http://notfound.ctfhub.com@127.0.0.1:8080/

即使目标系统要求URL必须以 http://notfound.ctfhub.com 开头,加入 @127.0.0.1 后,服务器最终会访问 127.0.0.1 的8080端口。

适用场景:目标系统仅校验URL前缀,未正确解析URL结构。


2. IP地址进制转换

原理:IP地址本质是32位二进制数,可转换为十进制、十六进制、八进制等形式。

示例

  • 127.0.0.1 可表示为:

    • 十进制:2130706433

    • 十六进制:0x7f000001

    • 八进制:017700000001

绕过技巧

http://2130706433/          # 十进制
http://0x7f000001/          # 十六进制
http://017700000001/        # 八进制

适用场景:正则仅匹配点分十进制格式(如 \d+\.\d+\.\d+\.\d+)。


3. Enclosed Alphanumerics 绕过

原理:使用Unicode编码的数字字符,如 ①、②、③ 等,绕过纯ASCII数字的检测。

示例

  • 127.0.0.1 → ①②⑦.⓿.⓿.①

绕过技巧

http://①②⑦.⓿.⓿.①/flag.php

适用场景:系统使用简单字符串匹配或ASCII正则,未处理Unicode编码。


4. DNS重绑定(DNS Rebinding)

原理:利用DNS解析的TTL(生存时间)机制,在第一次解析时返回公网IP(绕过检测),第二次解析时返回内网IP(实现攻击)。

工具推荐

  • rbndr.us:提供DNS重绑定服务。

  • 自建DNS服务器,配置短TTL和多IP返回。

操作流程

  1. 注册 yourdomain.rbndr.us

  2. 配置其DNS解析先返回 8.8.8.8,再返回 127.0.0.1

  3. 在SSRF请求中使用:http://yourdomain.rbndr.us:8080/

适用场景:系统仅在请求前校验一次域名IP,不持续监控。


5. 302跳转绕过

原理:服务器先请求一个跳转地址,再跟随重定向到目标内网地址。

PHP示例代码

<?php
header("Location: http://127.0.0.1:8080/");
?>

绕过技巧

  • 构造一个公网URL,返回 302 Found 并指向 http://127.0.0.1:8080/

  • SSRF请求该公网URL,服务器会自动跳转至内网。

适用场景:服务器支持HTTP重定向,且未禁止跳转到内网。


6. xip.io 域名绕过

原理xip.io 是一个动态DNS服务,会将子域名解析为对应IP。

示例

http://127.0.0.1.xip.io       → 解析为 127.0.0.1
http://10.0.0.1.xip.io        → 解析为 10.0.0.1
http://admin.192.168.1.1.xip.io → 解析为 192.168.1.1

绕过技巧

http://127.0.0.1.xip.io:8080/

适用场景:系统允许域名访问,但过滤IP地址。


7. 特殊符号替换

原理:使用非标准字符替代 . 或使用 localhost

绕过技巧

  • 使用全角句号:http://127。0。0。1/

  • 使用 localhosthttp://localhost:8080/

  • 使用 0.0.0.0:某些系统中等价于 localhost

⚠️ 注意:现代解析器通常会拒绝全角符号,但仍有部分旧系统存在漏洞。


8. 短网址服务绕过

原理:将目标内网地址转换为短链接,绕过原始URL检测。

工具推荐

  • https://tinyurl.com

  • https://is.gd

  • https://985.so

操作流程

  1. 将 http://127.0.0.1:8080/ 生成短链,如 https://tinyurl.com/abc123

  2. 在SSRF中请求该短链。

适用场景:系统未对短链进行反向解析或黑名单。


防御建议:如何有效防范SSRF绕过?

作为开发者,应采取以下措施:

  1. 使用白名单机制:仅允许访问可信域名或IP。

  2. 禁用危险协议:如 file://gopher://dict:// 等。

  3. 统一URL解析:使用标准库解析URL,避免自定义正则。

  4. 限制端口范围:只允许常见端口(80、443)。

  5. 部署WAF:使用Web应用防火墙识别异常请求模式。

  6. 禁用重定向:在服务端请求中禁止自动跳转。


SSRF漏洞的攻防本质上是解析逻辑的博弈。攻击者利用URL解析、DNS机制、编码转换等“灰色地带”绕过检测,而防御者则需构建更严谨的校验体系。

在实际渗透测试中,面对IP限制的SSRF,应尝试:

  • 优先使用@符号、进制转换、xip.io 等简单方法;

  • 若无效,考虑 DNS重绑定或302跳转 等高级技巧;

  • 始终结合目标环境特性,灵活组合多种绕过方式。

🔐 安全提醒:本文内容仅用于合法渗透测试与安全研究,请勿用于非法用途。

发表评论

评论列表

还没有评论,快来说点什么吧~