SSRF 漏洞利用方式
1. 端口扫描
这是最基础也最常见的利用方式。通过控制服务器向内网 IP 的不同端口发起请求,并根据响应时间、响应内容或 HTTP 状态码来判断端口是否开放
- 利用方式:
- GET 请求:
http://192.168.1.1:22
- 响应判断: 如果端口开放,通常会有 HTTP 响应;如果端口关闭或服务不存在,请求会超时或返回连接失败。通过脚本自动化这个过程,可以快速绘制出内网的端口图
- GET 请求:
2. 访问内网应用
如果服务器能够访问内网,攻击者就可以通过SSRF漏洞来探测和攻击那些通常无法从外部网络访问的应用
- 利用方式:
- 访问管理后台: 很多公司的内部管理系统、OA、数据库管理工具等都在内网运行。攻击者可以通过SSRF 漏洞直接访问这些后台,如果存在弱口令,就可能直接接管系统
- 攻击内网服务: 利用 SSRF 访问内网中的 Redis、MySQL、Elasticsearch、Memcached 等服务。例如,利用 Gopher 协议 攻击 Redis 服务器,可以写入 Webshell 或者 SSH key,从而获得服务器的控制权
- 示例:
gopher://127.0.0.1:6379/_*2%0D%0A$4%0D%0Ainfo%0D%0A
这个 payload 可以向本地的 Redis 服务发送info
命令,获取 Redis 信息
- 示例:
- 利用
file://
协议: 如果没有协议限制,可以直接读取服务器本地文件,如/etc/passwd
、/etc/hosts
、.bash_history
等,从而获取敏感信息- 示例:
file:///etc/passwd
- 示例:
3. 攻击本地文件包含(LFI)
在某些场景下,SSRF 可以与文件包含漏洞结合利用。例如,当目标网站的 URL 处理逻辑是 file=http://example.com/a.txt
时,你可以将 http
替换为 file
,从而实现本地文件读取
- 利用方式:
http://target.com/?url=file:///etc/passwd
4. 绕过防火墙
许多 Web 应用服务器会部署在防火墙后面,防火墙通常只允许特定的出站请求。SSRF 漏洞可以利用服务器作为跳板,绕过防火墙的限制,直接攻击内网
5. 探测云服务元数据
在云服务环境(如 AWS, Google Cloud, Aliyun)中,服务器通常有一个特殊的元数据地址,例如 http://169.254.169.254/
。这个地址只在虚拟机内部可访问,其中包含了非常敏感的信息,比如 IAM 角色凭证、密钥、实例信息等
- 利用方式:
http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
- 通过 SSRF 漏洞访问这个地址,攻击者可以获取临时密钥,利用这些密钥就能以该角色的权限访问云服务,比如操作 S3 存储桶、启动或停止虚拟机等,造成巨大的安全风险
6. DoS 攻击
攻击者可以利用 SSRF 漏洞让服务器向自身或内网中的关键服务发起大量的请求,从而造成拒绝服务
- 利用方式:
http://localhost:80
- 通过循环请求
http://localhost/
,可以耗尽服务器资源,使其无法正常提供服务