【SSRF漏洞及自动化扫描插件】

SSRF(Server-Side Request Forgery,服务端请求伪造)

1、概述

在服务器端请求伪造 (SSRF) 攻击中,攻击者可以滥用服务器端的功能来读取或更新内部资源。攻击者可以提供或修改服务器端运行的代码会读取或提交数据的 URL,通过精心选择 URL,攻击者可能能够读取服务器配置(例如 AWS 元数据)、连接到内部服务(例如启用 HTTP 的数据库)或向不应公开的内部服务发送 POST 请求。

2、描述

目标应用程序可能具有从 URL 导入数据、向 URL 发布数据或以其他方式从 URL 读取数据的功能,而这些功能可能被篡改。攻击者通过提供完全不同的 URL 或操纵 URL 的构建方式(例如路径遍历)来修改对这些功能的调用。

当篡改后的请求发送到服务器时,服务器端代码会获取篡改后的 URL,并尝试从该 URL 读取数据。通过选择目标 URL,攻击者可能能够从未直接暴露在互联网上的服务中读取数据:

1.云服务器元数据 - AWS 等云服务提供了一个 REST 接口,可以从中http://169.254.169.254/提取重要的配置信息,有时甚至可以提取身份验证密钥。

2.数据库 HTTP 接口------诸如 MongoDB 之类的 NoSQL 数据库通过 HTTP 端口提供 REST 接口。如果数据库仅供内部使用,则身份验证可能被禁用,攻击者可以借此窃取数据。

3.内部 REST 接口。

4.文件 - 攻击者可能能够使用file://URI 读取文件。

3、常见的绕过技巧

当开发者设置了黑名单或正则校验时,攻击者常使用以下手段绕过:

进制转换: 将 IP 地址转为八进制、十六进制或长整型。

利用特殊域名: 使用 127.0.0.1.nip.io 或类似 xip.io 的服务,将其解析到内网 IP。

URL 伪造: 利用 @ 符号(如 http://10.10.10.1)欺骗解析器。

DNS 重绑定(DNS Rebinding): 通过控制 DNS 解析时间差,在校验阶段返回合法 IP,在请求阶段返回内网 IP。

短网址与 30x 跳转: 利用外部短网址服务或服务器自身的跳转功能。

4、SSRF 漏洞可能存在的web功能点

1、从 WEB 功能上寻找

分享:通过 URL 地址分享网页内容

转码服务:将原地址的网页内容转码为适合手机屏幕的格式

在线翻译:通过 URL 地址翻译对应文本内容(如百度、有道等服务)

图片加载 / 下载:通过 URL 加载或下载图片

图片、文章收藏功能

未公开的 API 或其他调用 URL 的功能

2、从 URL 关键字中寻找

常见关键词:share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain

5. 防御方案

白名单机制(推荐): 仅允许访问预设的域名或 IP 段,从源头阻断对内网的探测。

禁用不常用协议: 只允许 http 和 https,禁止 file、gopher、dict 等危险协议。

统一解析与验证: 在发起请求前对 URL 进行 DNS 解析,验证解析后的真实 IP 是否为内网地址。

限制重定向: 默认关闭自动跟随 30x 跳转,或在跳转时重新进行安全检查。

6、pikachu-ssrf

  1. SSRF (curl)
    该关卡利用 PHP 的 cURL 库 发起请求。后台代码通常直接接收 url 参数并执行 curl_exec()。
    内网端口探测:
    修改 url 参数为内网 IP 和端口,观察返回结果(如响应时间或错误提示)来判断端口是否开放。
    ?url=http://127.0.0.1:80 (探测 80)

    ?url=http://127.0.0.1:3306 (探测 MySQL)

利用 dict 协议:

dict 协议常用于探测内网服务指纹或执行简单命令(如mysql)。

?url=dict://127.0.0.1:3306

利用 file 协议读取文件:

?url=file:///etc/passwd 或 ?url=file:///C:/Windows/win.ini

可以尝试使用 Burp Suite 的 Intruder 模块对内网 IP(如 192.168.1.0/24)或常用端口(如 80, 443, 3306, 6379, 8080)进行批量自动化探测。

  1. SSRF (file_get_contents)
    该关卡利用 file_get_contents() 函数读取资源内容。该函数在 allow_url_fopen 开启时可以读取 URL,同时也常用于读取本地文件系统。
    读取敏感文件:
    这是此函数最直接的利用方式。
    ?file=file:///C:/Windows/win.ini (读取win.ini )

请求内网 HTTP 服务:

?file=http://192.168.x.x:80

利用 php 伪协议:

如果后端对输入过滤不严,可以配合 php://filter 读取加密后的源码以绕过某些显示限制。

?file=php://filter/read=convert.base64-encode/resource=ssrf.php

7、推荐一个被动ssrf漏洞发现的burpsuite插件。

插件捕获BurpSuite流量的区域

被动扫描 指BurpSuite本身的被动扫描器

Proxy 指所有通过BurpSuite的MITM的流量,在Tab栏 Proxy -- Http history中可以看到这些流量

Repeater 指所有在BurpSuite Repeater中发送的流量

效果如下:

注意事项:该插件不支持旧版Burp Suite

wx关注【卡布奇诺的派对】回复AutoSSRF获取。

转载请注明出处及链接

本文参考:

https://owasp.org/www-community/attacks/Server_Side_Request_Forgery

https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html

相关推荐
70asunflower2 小时前
[特殊字符] Flameshot 完全指南:Ubuntu 下的终极截图工具
linux·运维·ubuntu
骆驼爱记录2 小时前
Word通配符技巧:高效文档处理指南
开发语言·c#·自动化·word·excel·wps·新人首发
千航@abc2 小时前
Win10/Win11 DCOM服务器进程启动器 CPU 占用过高解决方法
运维·安全·病毒·window10·window11·dcom进程·系统进程资源占用高
MarkHD2 小时前
Python RPA七日实战:用pyautogui打造第一个自动化脚本
python·自动化·rpa
hwj运维之路2 小时前
Docker面试题汇总系列
运维·docker·云原生·容器
蜡笔小炘2 小时前
LVS -- 部署NAT模式集群案例
linux·运维·服务器·lvs
我怎么又饿了呀2 小时前
CentOs 10 虚拟机安装【解决方法】VMware无法打开内核设备,未能启动虚拟机
linux·运维·centos
冰冰的coco2 小时前
如何设置需要sudo的命令开机自启动
linux·运维·服务器
辞旧 lekkk2 小时前
【Linux】Linux进程控制(三)自主实现简易shell命令行解释器
linux·运维·服务器·学习·萌新