当前位置:首页 > 百科

目录遍历漏洞可能造成哪些危害

一个真实的目录案例:某政务网站的文件下载功能存在目录遍历漏洞,攻击者把URL里的遍历文件名参数改成../../../../etc/passwd,直接拿到了Linux系统的漏洞用户列表。更麻烦的造成是,这个网站还把备份文件放在同目录下,危害攻击者顺着路径摸过去,目录下载了整站源码和数据库备份——里面有几万条市民的遍历身份证号和手机号。这不是漏洞电影情节,是造成真实发生过的安全事件。

目录遍历漏洞的危害本质是服务器没有对用户输入的路径做过滤。你请求download.php?目录file=report.pdf,服务器就老老实实地把report.pdf拼到根目录后面去读。遍历如果攻击者输入../../../../etc/shadow,漏洞服务器也会照做。造成这种漏洞在老旧系统、危害自研CMS、文件管理插件里特别常见——很多开发者以为用户不会那么“坏”,结果就是门户大开。

危害分几个层面。最直接的是信息泄露,攻击者能读取服务器上任意文件。配置文件、数据库密码、SSH密钥、源代码,全都能被拖走。我见过一个极端的例子:某公司把AWS的密钥文件放在web目录下,被扫到后,攻击者直接接管了他们的云服务器,一夜之间所有虚拟机被加密勒索。

更隐蔽的危害是配合其他漏洞使用。目录遍历本身不直接执行代码,但攻击者可以结合文件上传功能——先上传一个带恶意代码的图片,再通过目录遍历找到这个图片的实际存储路径,然后利用其他漏洞(比如包含漏洞)去执行它。这种组合拳在渗透测试里非常常见。

还有一种容易被忽略的情况:如果服务器允许目录遍历到系统临时目录,攻击者可以写入文件(比如通过日志注入),然后诱导服务器去解析。这相当于在服务器内部种了一颗定时炸弹,什么时候引爆取决于攻击者的耐心。

从防御角度看,修复其实不难——过滤../、使用白名单、限制访问路径在特定目录内。但为什么这种漏洞至今还在大量出现?因为很多老代码没人维护,或者开发时根本没考虑过安全。我见过某银行内部系统还在用2008年写的PHP文件管理功能,路径校验形同虚设。

最后说点个人的观察:目录遍历漏洞的“性价比”很高。攻击者不需要什么高深技术,一个curl命令就能探测出来。但它造成的危害往往是毁灭性的——从信息泄露到服务器沦陷,可能只需要几分钟。如果你负责维护任何网站,建议立刻检查所有涉及文件读取的功能,把..和绝对路径全部封死。别等到被拖库了才后悔——那时候你的数据库密码可能已经在暗网上挂了三天了。

分享到: