搜索

任意文件读取漏洞

发表于 2026-10-17 02:19:20 来源:烟消火灭网

某次渗透测试,任意目标是文件个政府网站。管理员后台登录框旁边有个“下载附件”功能,漏洞参数是任意file=report_2023.pdf。我手贱改成file=../../../../etc/passwd,文件浏览器直接吐出了root:x:0:0:root:/root:/bin/bash。漏洞整个过程不到十秒,任意没绕过任何验证,文件没爆破任何密码——就这么简单。漏洞

任意文件读取漏洞的任意本质,是文件程序把用户输入当成了文件路径的一部分,又没做过滤。漏洞攻击者通过构造../跳转目录,任意或者用绝对路径直接指定文件,文件就能让服务器把任意文件内容吐出来。漏洞这类漏洞常见于文件下载、图片预览、导出报表功能,甚至某些富文本编辑器的图片上传接口。

危害比想象中大得多。读/etc/passwd只是开胃菜,真正致命的是配合其他信息。比如读/proc/self/environ能拿到Web服务的环境变量,里面可能藏着数据库密码;读/root/.ssh/id_rsa直接拿到服务器SSH私钥;读/var/www/html/config.php能抠出源码里的数据库连接信息。更恶心的是,如果目标跑着Spring Boot,读/actuator/env或/actuator/heapdump能直接拖走内存中的敏感数据。

有个真实案例让我印象很深。某电商平台的图片处理服务,参数里带个path=字段,本意是让用户指定要裁剪的图片。攻击者把参数改成path=/proc/net/tcp,结果把服务器所有TCP连接状态全读出来了。再配合时间戳分析,直接定位到管理员登录时建立的会话端口,反手就伪造了管理员会话。整个攻击链没用一个0day,全是靠文件读取漏洞一步步堆出来的。

修复思路其实不复杂。最稳妥的方案是维护一份白名单,只允许读取指定目录下的文件。如果业务确实需要动态路径,那就用realpath()函数把路径标准化,再检查是否以允许的目录开头。还有个小细节——很多人忽略了对file://协议头的过滤,某些框架会自动解析这种协议,变成读本地文件的通道。

测试时有个土办法挺实用。拿到一个文件下载功能,先试着读/etc/hostname看能不能返回机器名。能返回的话,再试/proc/self/cmdline看启动命令。这两步能确认漏洞存在,同时不触碰敏感数据,方便写报告时留证据。

说实话,这类漏洞在真实环境中比SQL注入更常见。因为很多开发者知道SQL要参数化,却不知道文件路径也要参数化。尤其现在前后端分离,后端接口直接透传文件路径的情况比比皆是。碰到过一次,某内部系统把FTP服务器路径直接拼接在URL后面,连编码都没做,../随便跳。

最后提醒一句,读文件只是起点。拿到数据库配置文件后,下一步就是连数据库,然后提权,然后横向移动。所以别小看这个漏洞,它经常是内网沦陷的第一块多米诺骨牌。

随机为您推荐
友情链接
版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright © 2016 Powered by 任意文件读取漏洞,烟消火灭网   sitemap

回顶部