游客发表
把Apache的`mod_autoindex`模块打开,再配上个不设防的遍历目录,你的漏洞网站就会变成一个公开的文件浏览器。访客在浏览器地址栏敲个斜杠,目录就能看到服务器上所有文件的遍历列表——配置文件、备份压缩包、漏洞甚至数据库导出文件,目录一排排整齐列在那儿,遍历像超市货架上的漏洞商品。
我见过最离谱的目录一次,是遍历某家做跨境电商的公司。他们的漏洞运维图省事,把整个`/backup`目录挂在web根目录下,目录还开了索引。遍历结果谷歌爬虫把备份文件全抓了,漏洞里面躺着的是客户信用卡信息的明文记录——连加密都没做。那家公司后来被罚得差点破产,但问题根源其实简单得可笑:Apache默认配置里,`Options Indexes`是开着的。
这个漏洞的本质,就是Apache允许服务器在没有`index.html`(或`DirectoryIndex`指定的其他文件)时,自动生成目录文件清单。攻击者不需要什么高深技巧,只要用浏览器或curl就能枚举文件。更麻烦的是,很多开发者以为“目录里没放敏感文件就没事”——但备份文件、`.git`目录、临时文件、日志文件,这些往往就藏在看似无害的文件夹里。
实际测试中,我常用一个笨办法:访问`/css/`、`/js/`、`/images/`这类静态资源目录。如果看到文件列表,就继续往上翻路径,`/css/../`或`/js/../../`,直到找到根目录。运气好的话,能直接看到`web.config`或`.env`文件。有个真实案例是,某政府网站的子域名开了目录遍历,里面放着一个`.sql`文件——那是他们整个用户数据库的备份,密码还是MD5未加盐的。
修复方法并不复杂。最直接的是在Apache配置里删掉`Options Indexes`,或者改成`Options -Indexes`。如果用的是虚拟主机,就在对应的`
另一个常被忽略的点是,即使关掉了索引,如果目录名能被猜到,攻击者还是能直接访问具体文件。比如`/backup/2024-01-01.sql`,你关掉索引也没用,因为文件本身是公开可读的。所以根本的解法是:把敏感文件移出web根目录,或者用Apache的`
检查你的服务器吧——用浏览器访问几个常见目录,或者跑个简单的扫描工具。这花不了五分钟,但能让你避免成为下一个被挂在公开列表里的“货架”。毕竟,没人愿意自己的数据库备份变成别人浏览器里的下载链接。
友情链接