当前位置: 首页 > news >正文

网络安全之任意文件读取利用

0 概述

刚好最近一大批漏洞都爆出来了,比如 CVE-2025-1097, CVE-2025-1098, CVE-2025-24514, CVE-2025-1974 Kubernetes Ingress-Nginx Admission Controller RCE Escalation,是危害性极大的高危漏洞,在内网渗透中能直接击穿K8S集群。

这些高危漏洞其实分析文章很多,看国内外众多大佬的分析都非常精彩,这里我也不献丑了。

但引起我关注的漏洞是 CVE-2025-30208 Vite Development Server Arbitrary File Read 这个任意文件读取漏洞。

其实我们很多时候都轻视了任意文件读取漏洞,特别是很多刚入行学习网安的师傅,往往瞧不上任意文件读取漏洞,其实这是一种偏见。

今天就从 CVE-2025-30208 发散去讲任意文件读取漏洞,这种漏洞是有操作空间的,况且 CVE-2025-30208 利用简单、覆盖面广,那就有必要拎出来和大家交流一下,今天我就来抛砖引玉一下。

1 漏洞原理?

CVE-2025-30208 漏洞原理非常简单,就简单提一下:

Vite 开发服务器提供 @fs 机制,用于防止访问 Vite 允许列表之外的文件。然而,由于 URL 解析时的正则表达式处理不当,攻击者可以通过 ?raw???import&raw?? 等查询参数绕过访问限制,从而读取任意文件。

在 Vite 服务器的 URL 处理逻辑中,@fs 机制原本用于限制对非白名单目录的访问,例如:

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

Vite 在 URL 解析过程中会移除部分特殊字符,而未正确考虑查询参数的影响,导致攻击者可以构造类似如下的请求绕过安全检查:

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

由于 Vite 解析 URL 时未正确处理这些参数,导致绕过 server.fs.allow 限制,并返回任意文件内容。

按理说,此漏洞仅影响明确将 Vite 开发服务器暴露到网络的应用程序,即使用 --hostserver.host 配置选项的情况。

但经过公网的资产测绘来看,涉及的数量非常可观,且实际测试的结果发现成功率较高,怪不得各家厂商都打上了高危的标签,该漏洞Exploit工具已经公开

3 什么是bash_history?

众所周知,Linux用户的根目录是有区别的,root用户的根目录在 /root,而其他用户的根目录一般在 /home/用户名,比如我有一个名叫 demo 的用户,那这个用户的根目录在 /home/demo 下。

在Linux系统下每个用户的根目录下,都有四个bash隐藏文件,需要使用 ll -a 参数才会显示出来:

-rw-------   1 demo demo      1710 Jan 22 16:20 .bash_history
-rw-r--r--   1 demo demo        28 Oct 3 09:07 .bash_logout
-rw-r--r--   1 demo demo       237 Jan  12 12:53 .bash_profile
-rw-r--r--   1 demo demo       331 Oct 11 08:07 .bashrc

其中今天要说的主角是 .bash_history,它是Linux 命令的历史记录,会持久化存储,默认位置是当前用户根目录的 .bash_history 文件。

当 Linux 系统启动一个 Shell 时,Shell 会从 .bash_history 文件中,读取历史记录,存储在相应内存的缓冲区中。

我们平时所操作的 Linux 命令,都会记录在缓冲区中。包括 history 命令所执行的历史命令管理,都是在操作缓冲区,而不是直接操作 .bash_history 文件。

当我们退出 Shell,比如按下 Ctrl+D 时,Shell 进程会把历史记录缓冲区的内容,写回到 .bash_history 文件中去。

4 漏洞利用纵深

好了,上面把基础部分说完了。既然理论存在,那就实践开始!

注明:以下内容均为外网重点目标的实际利用(说句实话,这次在该漏洞的应急上,某大国居然比我国表现差),请在遵守当地法律的情况下合理学习利用

首先通过该漏洞读取 /etc/passwd 文件,发现该Linux上存在的用户信息,通过搜索 /home/ 关键词找到Linux上的实际用户,然后尝试读取 /root/.bash_history 文件,如下:

会发现显示 permission denied, open '/root/.bash_history' 这是因为不是所有业务都是用 root 账户起的(有些目标还是可以的),所以并没有权限读取 /root/.bash_history 文件,那接下来就要尝试其他用户,如下:

哦哟,你看我发现了什么?SSH服务的公钥 authorised_keys.ssh/ 文件夹路径!

其实刚看 .bash_history 很糊,内容都缩成一团了,但可以通过编辑器工具对内容进行格式化:

剩下的大家都猜的出来了,通过 CVE-2025-30208 读取 /home/d*****in/.ssh/id_rsa 成功拿到了私钥,成功拿下该服务器,其实也可以直接猜测路径:

/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??

通过尝试拼接这个URL,可以批量去尝试读取对方机器的SSH私钥,但不一定在 /root 下,如果是在其他用户的目录下,就需要像上面一样尝试从 /etc/passwd 拿到用户名,并读取 /home/用户名/.ssh/id_rsa 拿到私钥。

同时不止是找到SSH私钥,还可以在 .bash_history 找到数据库账号密码,认证需要的Key,以及SSH密码等等,如下:

没想到任意文件读取漏洞还能这么玩吧?

5# 任意文件读取还能这么玩?

好了,通过上面你应该认识到任意文件读取漏洞的危害了~

既然都说到任意文件读取漏洞了,接下来我要分享之前在某高校平台提交的任意文件读取组合技实现GetShell的实战报告(PS:该漏洞目前已经上报修复啦,且我不是在SRC平台提交的,有相关授权,说泄露报告的师傅就不必了,本次披露仅做警示作用!

通过信息搜集和模糊测试,对核心平台头像地址进行探测,发现敏感地址 /stu/common/getPic?path=/2023/图片名,模糊测试发现任意文件读取漏洞(且该接口无鉴权),链接如下

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

尝试对 root 账户和 *****admin 账户的历史执行命令进行读取:

/root/.bash_history 文件中,发现Tomcat的绝对路径,同样在 /home/*****admin/.bash_history 也找到类似的目录

于是对tomcat的敏感路径进行读取,发现Tomcat日志路径,链接如下:

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

在Tomcat的日志文件中,可以清晰的看到平台登录的传参!!!在核心平台登录过程中,居然使用Get进行登录明文传输,而不是Post进行加密传输!

通过编写Python脚本利用该任意文件读取漏洞,可以批量下载日志文件:

再通过编写Python脚本对下载的TXT进行正则匹配和输出,最终得到18万行的核心平台用户的账户和明文密码,后续通过登录平台找到其他漏洞成功GetShell!

6 总结

今天我就是来抛砖引玉,详细的讲解了任意文件读取漏洞的攻击利用链,任意文件读取漏洞一直是我们日常所忽视的漏洞,大部分情况下它可能是鸡肋的,但有时候就能作为神助攻,成功祝你GetShell!

相关文章:

  • nt!CcGetDirtyPages函数分析之Scan to the end of the Bcb list--重要
  • 设计模式笔记_创建型_工厂模式
  • C++ vector(2)
  • 【学习笔记】NLP 基础概念
  • 微软因安全漏洞禁用黑暗环境下的Windows Hello面部识别功能
  • langChain4j-流式输出
  • 前端压缩图片的免费软件
  • C# winform教程(二)----ComboBox
  • Pycharm(二十)神经网络入门
  • 【技术】记一次 Docker 中的 ES 数据迁移,使用 Reindex API
  • 运行ollama V0.9.1 异常 GLIBC_2.27 not found
  • 香橙派3B学习笔记12:C语言操作GPIO_<wiringPi.h>_点灯通用输入输出
  • 数字孪生:为UI前端设计带来前所未有的创新体验
  • 《解构线性数据结构的核心骨架:从存储模型到操作范式的深度解析》
  • 深度学习进阶:卷积神经网络(CNN)原理与实战
  • Vue 3 常用响应式数据类型详解:ref、reactive、toRef 和 toRefs
  • 卫星通信链路预算之二:带宽和功带平衡
  • YOLO进化史:从v1到v12的注意力革命 —— 实时检测的“快”与“准”如何兼得?
  • 用ε贪婪算法解决多老虎机问题
  • 简单了解TypeScript
  • 做招聘网站客户要发票怎么办/seo网站推广优化论文
  • 郑州web网站制作/定制网站
  • 住房和城乡建设部网站打不开/yahoo引擎入口
  • 如何建设微信网站/当日网站收录查询统计
  • 建设自己的网站步骤/整合网络营销公司
  • 网站建设柚子网络科技/网站制作