找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4009

积分

0

好友

561

主题
发表于 昨天 23:21 | 查看: 5| 回复: 0

最近不忙,就琢磨了些新出炉的漏洞。最近高危洞真不少,像 CVE-2025-1097CVE-2025-1098CVE-2025-24514CVE-2025-1974 这些 Kubernetes Ingress-Nginx 的 RCE 漏洞,杀伤力巨大,内网渗透里能直接打穿整个 K8S 集群。

不过,我今天想聊的倒不是这些,而是另一个引起我注意的洞:CVE-2025-30208 —— Vite 开发服务器的任意文件读取漏洞。说实话,很多刚入门安全的朋友可能不太看得上任意文件读取,觉得它“鸡肋”,但这其实是一种偏见。CVE-2025-30208 利用简单,影响面又广,正好拿它当个例子,聊聊这种漏洞的“操作空间”到底有多大。

漏洞原理简述

CVE-2025-30208 的原理其实不复杂。Vite 开发服务器提供了 @fs 机制来限制访问白名单之外的文件。问题出在 URL 解析的正则处理上。攻击者可以通过在请求后附加 ?raw???import&raw?? 这类查询参数,绕过安全检查,从而读取服务器上的任意文件。

例如,常见的 Vite 配置会像这样限制可访问目录:

server: {
  fs: {
    allow: [path.resolve(__dirname, 'src')]
  }
}

但由于 URL 解析时对查询参数的处理不当,构造如下请求就能绕过 server.fs.allow 的限制:

GET /etc/passwd?raw??
GET /etc/passwd?import&raw??
GET /@fs/etc/passwd?raw??
GET /@fs/etc/passwd?import&raw??

理论上,这个漏洞只影响那些明确将 Vite 开发服务器暴露到公网的应用(比如用了 --hostserver.host 配置)。但公网资产测绘的结果显示,这类暴露的资产数量相当可观,实际测试成功率也不低,难怪各家厂商都给标了高危。相关的漏洞利用工具已在 GitHub 公开。

关键文件:.bash_history 是什么?

在深入利用前,得先明白一个关键文件:.bash_history。它是 Linux 系统下用户命令历史的持久化存储文件,默认位于用户的家目录下(root 用户在 /root/.bash_history,普通用户在 /home/用户名/.bash_history)。

当你启动一个 Shell,系统会从这个文件读取历史命令到内存缓冲区。你执行的命令会先记录在缓冲区,退出 Shell(比如按 Ctrl+D)时,缓冲区内容才会被写回 .bash_history 文件。这意味着,这个文件里很可能藏着之前执行过的、包含敏感信息的命令。

漏洞利用实战:从读取到突破

理论讲完,实践开始。以下是基于外网真实目标的利用过程(仅作技术研究探讨,请务必遵守法律法规)。

首先,通过漏洞读取 /etc/passwd,了解系统上有哪些用户。
通过CVE-2025-30208漏洞读取/etc/passwd文件内容

接着,尝试读取 root 用户的命令历史:
尝试读取/root/.bash_history时提示权限拒绝

看到 permission denied?这很正常,很多服务并非以 root 权限运行。这时就需要转向其他在 /etc/passwd 中发现的用户。尝试读取例如 /home/某用户/.bash_history
从普通用户的.bash_history中发现敏感操作路径

看,发现了什么?SSH 相关的 authorized_keys 文件和 .ssh/ 目录路径!刚读出来的 .bash_history 内容可能很杂乱,可以用文本编辑器进行格式化查看,逻辑会更清晰。
使用编辑器格式化.bash_history内容以便阅读
格式化后的.bash_history显示具体的SSH密钥操作命令

接下来的事情就顺理成章了:利用同一个漏洞,直接读取 /home/用户名/.ssh/id_rsa 文件,成功拿到了 SSH 私钥。当然,你也可以直接“盲猜”常见的私钥路径进行批量尝试:

/root/.ssh/id_rsa?import&raw??
/root/.ssh/id_ed25519?import&raw??
/@fs/root/.ssh/id_rsa?raw??
/@fs/root/.ssh/id_ed25519?import&raw??

不光是 SSH 私钥,.bash_history 里还可能藏着数据库连接命令(包含账号密码)、API 密钥、甚至是其他服务的明文密码。
从.bash_history中发现的认证密钥等信息

没想到吧?一个“小小”的任意文件读取,通过 .bash_history 这个跳板,竟能打开如此大的局面。

案例扩展:任意文件读取的组合技

为了进一步说明任意文件读取的危害,我再分享一个之前在授权测试中遇到的实战案例(漏洞已修复,仅作技术警示)。

在某高校平台的信息搜集过程中,发现一个图片读取接口 /system/common/getPic?path= 存在路径遍历,可无鉴权读取任意文件。

https://target.edu.cn/system/common/getPic?path=/../../../../../../../../../../../../../../../../../etc/passwd

利用任意文件读取漏洞成功读取/etc/passwd

成功读取系统用户列表后,自然想到去读 root 和关键管理用户的 .bash_history 文件。
读取root用户的.bash_history发现Tomcat路径

在历史记录中,发现了 Apache Tomcat 的绝对安装路径。于是顺藤摸瓜,尝试读取 Tomcat 的日志文件。

https://target.edu.cn/system/common/getPic?path=/../../../../../../../../../../../../usr/local/apache-tomcat-8.5.50/logs/localhost_access_log.2023-10-25.txt

读取Tomcat访问日志文件

在日志里,赫然发现该平台用户登录时,竟然使用 GET 请求并以明文传输用户名和密码!接下来,编写一个简单的 Python 脚本,利用该漏洞批量下载了多日的日志文件。
使用Python脚本批量下载日志文件

再通过脚本对海量日志进行正则匹配提取,最终获得了大量平台用户的明文账号密码。凭借这些凭证登录系统后,结合其他漏洞,最终成功实现 Getshell。整个过程,任意文件读取漏洞成了撕开防线的最关键一环。

总结与思考

通过 CVE-2025-30208 和上述实战案例,我们可以看到,任意文件读取绝非“鸡肋”。它可能直接泄露敏感配置文件、源代码、密钥,更可以通过 .bash_history、日志文件等“跳板”,关联出数据库凭证、后台密码,甚至间接导致系统沦陷。

在安全评估中,我们不应轻视任何一类漏洞。防守方也需注意,不仅要修复漏洞本身,还应检查相关日志、历史记录是否已泄露敏感信息,并定期清理或保护这些文件。对于开发者而言,避免将开发服务器暴露于公网、对用户输入进行严格过滤和校验,都是基本的安全准则。

希望这篇从具体漏洞切入的杂谈,能让大家对任意文件读取的风险有更深的认识。安全是一个持续对抗的过程,细节往往决定成败。如果你有更多有趣的利用思路或防护见解,欢迎在 云栈社区安全技术论坛 与其他安全爱好者一起交流探讨。




上一篇:复现CVE-2025-50154:利用Windows LNK快捷方式漏洞获取NTLM哈希
下一篇:AI 开始黑自己写的代码了:硬核拆解 Shannon 自动化渗透测试系统
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-5 04:11 , Processed in 0.470280 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表