搜索

文件下载漏洞的利用条件

发表于 2026-10-17 01:30:53 来源:烟消火灭网

文件下载漏洞的文件利用条件,说白了就三条:程序把用户输入当成了文件路径,下载没过滤,漏洞还直接把文件内容吐给浏览器。用条缺一条都玩不转。文件

先看最典型的下载案例。某个老牌CMS系统,漏洞后台有个“附件下载”功能,用条URL长这样:/download.php?文件file=report.pdf。攻击者把参数改成file=../../../../etc/passwd,下载服务器居然把密码文件当附件发过来了。漏洞这里的用条关键不是路径穿越本身,而是文件download.php压根没校验file参数指向的文件是否在允许的目录里。它只做了个简单的下载拼接:$file_path = "/var/www/uploads/" . $_GET['file'];。就这么一行代码,漏洞漏洞就成立了。

利用条件第一条:参数可控制。这个看似废话,但很多“伪漏洞”就栽在这儿。有些程序把文件名写死在配置里,或者用session值做索引,用户改URL参数根本影响不到实际路径——那叫功能设计,不叫漏洞。真正的可控制,指的是用户输入能直接或间接影响最终打开的文件路径,中间不能有强校验。比如有的系统把参数base64编码后再拼路径,那也算可控制,只是多绕一步。

第二条:服务端没有做有效的目录约束。这里要区分“黑名单过滤”和“白名单限制”。黑名单基本是摆设——你过滤../,我可以用..%2f或....//绕过;你过滤etc/passwd,我用/etc//passwd或者软链接。真正有效的是白名单,比如realpath($file)之后检查前缀是否在/var/www/uploads/下。但很多程序员图省事,只做个后缀名判断(只允许.pdf),结果攻击者用file=../../../../etc/passwd%00.pdf——老版本PHP里%00截断直接干掉后缀,照样读文件。这种细节就是漏洞和安全的差距。

第三条容易被忽略:文件内容必须能回显。有些下载功能是用readfile()直接输出二进制,有些则是先读进变量再输出。如果程序把文件内容经过二次处理(比如转码、替换敏感词),那即使路径可控,读出来的东西也可能被阉割。我见过一个案例,系统把文件内容里的“password”全部替换成“

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

Copyright © 2016 Powered by 文件下载漏洞的利用条件,烟消火灭网   sitemap

回顶部