当前位置: 当前位置:首页 > 百科 > 文件包含漏洞的危害有哪些正文

文件包含漏洞的危害有哪些

作者:时尚 来源:综合 浏览: 【大 中 小】 发布时间:2026-10-17 06:20:27 评论数:

一个攻击者往Web应用里塞一个看似无害的文件图片文件,就能拿到服务器最高权限。包含这不是漏洞电影情节,是文件文件包含漏洞干的好事。

文件包含漏洞的包含可怕之处在于它太容易被忽视。开发者为了省事,漏洞经常把页面路径直接拼进include函数里。文件比如`index.php?包含page=about.php`,这种写法在十年前就存在,漏洞到今天依然能见到。文件攻击者只需要把`page`参数改成`../../../../etc/passwd`,包含就能读到系统文件。漏洞读文件只是文件开胃菜,真正致命的包含是配合日志注入或上传功能,构造出包含PHP代码的漏洞恶意文件,然后包含执行它。去年我测试过一家电商平台,就是通过修改User-Agent写入一句话木马,再包含日志文件,直接拿到了服务器shell。整个过程不到五分钟。

危害分三层。最直接的是信息泄露——数据库配置、源码、用户密码哈希全部暴露。第二层是远程代码执行,这等于把服务器钥匙交给了攻击者。第三层最隐蔽:内网渗透。攻击者拿下一台机器后,会用它当跳板,扫描内网其他服务。我见过一个案例,攻击者通过文件包含漏洞打进一个后台管理系统,然后利用服务器上的内网IP,横向移动打穿了整个公司OA系统。整个攻击链的起点,不过是一个没过滤的`page`参数。

还有一种情况特别坑——本地文件包含配合临时文件。PHP处理上传文件时会生成临时文件,默认存在系统临时目录,生命周期极短。攻击者需要精确控制时间窗口,在临时文件被删除前完成包含。这听起来很难,但实际利用工具早就自动化了。网上公开的漏洞利用框架里,这类exp一抓一大把。真正的问题在于,很多老系统还在用`include($_GET['page'])`这种写法,连基本的`allow_url_include`都没关。

文件包含漏洞还有个变种叫远程文件包含,更狠。攻击者直接让服务器去加载自己服务器上的恶意脚本。虽然现在PHP默认关闭远程包含,但配置不当的服务器依然存在。更麻烦的是有些框架自带文件包含功能,如果参数校验不严,一样会中招。比如某个知名CMS的模板加载功能,就被爆出过本地文件包含漏洞,攻击者可以读取任意文件,甚至包含`/proc/self/environ`来执行命令。

修复方案不复杂,但执行起来需要决心。最有效的办法是白名单校验,只允许固定页面名。其次是禁用动态包含,改用路由映射。实在没办法要动态加载,至少得过滤掉`../`和绝对路径,并且关闭`allow_url_include`。但说实话,我见过太多开发团队觉得"这个功能只有内部能用"就跳过校验,结果被外网打穿。

文件包含漏洞的破坏力不取决于漏洞本身,取决于服务器上有什么。一台纯静态服务器上,最多泄露点配置信息。但现在的Web应用哪个不连着数据库、Redis、消息队列?攻击者只要读到一个数据库密码,整个业务数据就全完了。所以别小看这个老掉牙的漏洞,它就像一把万能钥匙,能不能开保险柜,只看锁是什么样的。