游客发表

Web服务器目录遍历任意文件访问

发帖时间:2026-10-17 04:53:07

一个配置不当的服访问Nginx,能把整个服务器的器文件文件系统变成裸奔的档案室。这不是目录危言耸听,而是遍历我上周在测试某政府网站时亲眼所见——对方只是少写了一行autoindex off;,我就顺着URL路径/uploads/把2020年至今的任意每一份用户身份证扫描件按月份翻了个遍。

Web服务器的服访问目录遍历漏洞,本质上就是器文件个权限管理疏忽。服务器默认允许客户端直接访问物理目录结构,目录攻击者只需在浏览器地址栏输入http://target.com/images/,遍历如果响应里出现文件列表,任意那就中奖了。服访问更致命的器文件是,这种漏洞经常和任意文件下载叠加——比如用../../etc/passwd这种路径穿越手法,目录配合未过滤的遍历filename参数,能直接把你服务器上的任意/etc/shadow拖下来。

真实案例比教科书狠多了。2019年某云厂商的CDN节点被爆出遍历漏洞,黑客通过?file=../../../../etc/nginx/nginx.conf拿到了回源地址,顺藤摸瓜掏空了整个OSS存储桶。我自己的服务器也栽过跟头——当时图省事用Python的SimpleHTTPServer开了个临时文件共享,忘了绑内网IP,结果被扫描器抓了个正着,整个/home目录的代码备份被扒得干干净净。

别以为用了Apache或IIS就安全。Apache的Alias指令如果配了<Directory>块却没加Require all denied,一样暴露。IIS的WebDAV模块一旦开启,PUT和DELETE方法都可能被滥用——攻击者不仅能读,还能写webshell。真正让人头疼的是那些框架自带的静态文件中间件,比如Express的express.static,默认就允许路径遍历,除非你显式设置fallthrough: false。

修复思路其实不复杂,但需要点强迫症。第一层防线是关掉目录浏览,Nginx里写autoindex off;,Apache里删掉Options Indexes。第二层是过滤用户输入,对..、%2e这些编码变体做白名单校验,别偷懒用黑名单。第三层最容易被忽略——给文件系统做隔离,把上传目录挂载成独立分区,用chroot或容器把Web进程关进笼子里,就算被穿越了也只能摸到空壳。

有个细节我得提醒你:很多开发者以为只要URL里有download.php?file=就安全,其实PHP的basename()函数绕过方式多到能写本书。攻击者用....//....//这种双重编码,或者Windows下的..\..\反斜杠,就能把过滤逻辑耍得团团转。我见过最骚的操作是往参数里塞file:///etc/passwd,直接绕过本地路径检查。

防护工具倒是不少,但别迷信WAF。ModSecurity的CRS规则集能拦截常规payload,可遇到分块传输或参数污染就哑火。真正靠谱的做法是定期用nikto或dirsearch扫自己的站点,把漏洞当bug修,而不是当风险扛。我自己的习惯是每季度做一次全量路径爬取,把返回200且带目录列表的URL全部拉黑。

最后说句掏心窝的——这漏洞之所以泛滥,根子在于很多团队把“能跑就行”当成了开发准则。你去看那些被拖库的站,八成都有个2015年写的上传接口,至今还在用拼接字符串的方式处理文件名。安全不是玄学,就是一行配置、一个过滤函数的事。但就是这一行,往往决定你是坐在工位上喝咖啡,还是半夜爬起来删数据库。

    热门排行

    友情链接