ssrf跨站请求伪造(保姆级教程)"

admin 2026-10-24 11:43:48 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

ssrf跨站请求伪造(保姆级教程)

原创

南棋子
南棋子

南棋子网络安全盟

2026年10月19日 09:50
北京

去阅读

原理

SSRF(服务器端请求伪造)的本质是让服务器成为攻击者的代理。当应用程序需要“替用户”去访问一个远程资源时,如果未能对用户提供的目标地址进行严格限制,攻击者就能诱导服务器向本不该访问的内部系统发起请求。

漏洞位置

第一类是远程资源加载,比如远程图片加载、网页抓取、分享预览、在线文档生成、文件远程导入、RSS 订阅、在线翻译或转码。这类功能通常接受一个 URL 参数,服务器会根据这个地址去下载内容,如果没校验目标地址,就可能被用来访问内网或本地服务。

第二类是回调和代理类入口,比如 Webhook、回调地址、API 代理、网关转发、对象存储远程拉取。这些位置往往允许用户提供一个目标地址,服务器会向该地址发起请求,容易被当成跳板。

第三类是解析类入口,比如 XML、SVG、HTML 解析中如果支持外部实体或远程引用,也可能触发 SSRF。尤其是 XXE 和 SSRF 经常联动出现。

第四类是比较隐蔽的位置,比如请求头中的 X-Forwarded-For、Referer,或者后端把用户输入拼进 curl、requests、file\_get\_contents、HttpURLConnection 等网络请求函数时,也可能形成 SSRF。

伪协议

SSRF 里协议是“怎么让服务器发起请求”的关键。后端如果直接把用户输入交给 cURL、file\_get\_contents、requests、HttpURLConnection 这类网络请求函数,就可能被切换协议,访问本地文件、内网服务或云元数据。

HTTP / HTTPS

最基础,也最常见。

用途主要是让服务器访问原本从外网无法访问的内部资源。

常见利用:

访问内网 Web 服务,例如http://127.0.0.1:8080/admin

访问内网微服务、管理后台

访问云实例元数据,例如http://169.254.169.254

探测内网端口是否开放,根据响应状态、延时或报错判断

示例:

http://127.0.0.1:8080/https://169.254.169.254/latest/meta-data/

HTTP/HTTPS 本身不能直接发送任意 TCP 数据,但可以用来探测服务、读取返回内容,或触发内网 Web 漏洞。

FILE

用于访问服务器本地文件系统。

如果 SSRF 点有回显,file 协议常被用来读取本地敏感文件。

常见利用:

读取/etc/passwd

读取/etc/hosts

读取 Web 配置文件、日志、环境变量

读取应用源码或数据库配置

示例:

file:///etc/passwdfile:///var/www/html/config.phpfile:///C:/Windows/System32/drivers/etc/hosts

防御上,file 协议通常应直接禁用,尤其不能让用户可控的 URL 进入文件读取函数。

DICT

DICT 是基于 TCP 的字典查询协议,但在 SSRF 里更多被用来探测端口和攻击内网服务,尤其是 Redis。

常见利用:

探测端口是否开放

识别服务指纹

攻击未授权 Redis,执行简单单行命令

示例:

dict://127.0.0.1:6379/infodict://127.0.0.1:6379/keys:*

DICT 的限制是每次通常只能发送单行命令,复杂操作需要分步执行,并且要对特殊字符做编码。

GOPHER

Gopher 是 SSRF 里最强大的协议之一。

它可以构造原始 TCP 数据流,所以能攻击 Redis、FastCGI、SMTP、MySQL 等内网服务。

常见利用:

攻击内网 Redis,写 Webshell 或写计划任务反弹 Shell

攻击 FastCGI,执行系统命令

构造 HTTP GET/POST 请求访问内网服务

绕过只允许 HTTP/HTTPS 的简单校验

示例格式:

gopher://127.0.0.1:6379/_[编码后的TCP数据]

Gopher 的关键在于 URL 中\_后面的内容会被当作 TCP 数据发送给目标端口,所以可以拼出 Redis 命令、FastCGI 包或 HTTP 请求包。

FTP

FTP 主要用于文件传输,但在 SSRF 里危害相对弱一些,更多用于探测端口或尝试访问远程文件。

常见利用:

探测 FTP 端口是否开放

尝试访问远程 FTP 文件

某些环境下可能扩大协议攻击面

示例:

ftp://127.0.0.1:21/ftp://user:pass@target/file

FTP 是否能被利用,取决于后端使用的网络库是否支持该协议,以及是否允许访问内网地址。

面试记忆版

HTTP/HTTPS

:访问内网 Web、探测端口、读云元数据。

FILE

:读本地文件。

DICT

:探测端口、识别服务、攻击 Redis。

GOPHER

:构造任意 TCP 数据,最危险。

FTP

:探测端口、访问远程文件,危害相对小。

最稳防御仍是:只允许 http/https,禁用 file、dict、gopher、ftp 等协议,再做 IP 白名单、DNS 解析后校验、禁止自动重定向和出站网络隔离。

防御

只允许 http/https

禁用 file://、gopher://、dict://、ftp:// 等危险协议。

域名/IP 用白名单,不用黑名单

能白名单就白名单;必须开放公网时,至少校验不是内网、回环、链路本地和云元数据地址。

DNS 解析后再校验 IP

域名解析出真实 IP,确认不在禁止网段;如果业务允许,把解析结果绑定到连接,防 DNS 重绑定。

禁止自动重定向

关闭 HTTP 客户端的 30x 自动跳转;必须跳转时,对最终目标重新校验协议、域名和 IP。

出站网络隔离

服务器出口流量禁止访问内网段和元数据地址,最好走受控出站代理。

常见绕过手法

绕过通常发生在“校验层”和“实际请求层”不一致时。

协议绕过:file://、gopher://、dict:// 等危险协议

本地回环绕过:localhost、127.0.0.1、[::1]、0、127.1 等

IP 变形:八进制、十六进制、十进制整数、混合进制

URL 解析差异:http://[email protected]、

片段截断

重定向绕过:先通过白名单,再 301/302 跳转到内网

DNS 重绑定:首次解析返回公网 IP,二次解析返回内网 IP

短链接 / 开放重定向:用可信域名做跳板

NAT64 / IPv6 翻译:用 IPv6 地址绕过 IPv4 黑名单

危害

SSRF 的危险点在于它能穿透网络边界:

探测内网存活主机、端口

读取本地文件,如 file:///etc/passwd

访问内网管理后台、微服务、Redis、MySQL、FastCGI

窃取云实例元数据,例如 AWS/Aliyun/TencentCloud 的临时凭证

结合 Gopher/Dict 等协议攻击内网服务

触发 DoS,甚至链式利用实现 RCE

    ssrf跨站请求伪造(保姆级教程)" 网络安全文章

    ssrf跨站请求伪造(保姆级教程)"

    本文为SSRF保姆级教程,系统讲解其原理、常见漏洞位置(远程资源加载、回调代理、解析类入口等)、伪协议利用(HTTP、FILE、DICT、GOPHER、FTP)及防御方案。核心结论是SSRF本质是让服务器成为攻击者代理,需严格限制用户可控URL。建议采用协议白名单、IP白名单、DNS二次校验、禁止重定向及出站网络隔离等防御措施,并注意常见绕过手法。
    我被诈骗了" 网络安全文章

    我被诈骗了"

    本文复盘一起真实诈骗案例,揭露从微信群引流到APP内收网的完整黑产链条:利用兼职人员拉群、发红包制造信任,诱导受害者下载未加密诈骗APP,通过敏感词屏蔽、心理操控(互惠原理、损失厌恶)实施`票房预售`骗局。技术分析显示其代码存在硬编码密钥、弱加密、无通信加密等严重漏洞,并暴露出团伙内部数据管理系统。建议公众警惕`轻松赚钱`陷阱,安全从业者应加强云存储审计与反欺诈监测。
    评论:0   参与:  0