默认Web内容
作者:Chris Sullo
Chris拥有30年安全领域经验,主要从事渗透测试工作,是Nikto网页扫描器作者、RVAsec会议创始人,参与过多项开源项目和社区建设。
技术细节
开发者在构建网站时通常专注于功能实现和需求满足,而清理工作(包括应用环境产生的残留文件)往往被置于bug修复和功能添加之后。如果问题出在Web服务器本身(而非应用程序),这究竟是开发人员还是系统管理员的责任?
示例程序
示例程序有时会成为入侵的源头。这类应用旨在展示技术功能而非保证安全性。快速搜索显示,与Apache Tomcat默认示例相关的CVE漏洞近十余个。
即使是管理界面本身也属于“默认内容”(后续详述)。生产环境的Web服务器根本不需要对外公开这些管理界面和示例程序。
在安装复杂技术栈时,说明文件确实能提供帮助。但一旦系统运行正常,这些文件可能通过信息泄露暴露已安装软件的详细版本。
问:Apache 2.4.59和2.4.60有何区别?
答:CVE-2024-36387漏洞
安装残留
与安装/更新文件相关的CVE难以计数,但实际案例层出不穷。例如Atlassian Confluence曾受CVE-2023-22518影响,残留的安装文件允许攻击者重置管理员密码。
其他残留可能包括示例配置文件或脚本,这些同样会泄露安装信息。另一流行CMS系统Drupal包含多个本应默认限制访问的“点文件”,但由于Web服务器配置错误往往可被直接访问。同时存在的example.gitignore和Composer文件等均可用于系统指纹识别。
图片与网站图标
图片看似无害,浏览器标签页显示的小图标favicon.ico呢?实际情况可能出乎意料。
网页扫描器Nikto收录了350多个favicon文件哈希值,可用于识别已安装软件。而“PHP彩蛋”问题(如/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42
类URL)能让攻击者精确判断PHP安装版本。
其他注意事项
管理界面也值得在此讨论。虽然关闭或迁移这些界面可能更困难,但它们通常位于默认路径,既可能导致信息泄露,也可能引发全面入侵。
网页扫描器包含大量针对管理界面的检测规则。Gobuster等工具的默认文件列表更是数量庞大——原因很简单:这些地方往往藏着“宝藏”!
工具与检测
识别Web服务器默认内容的扫描软件主要分两类:通用网页应用扫描器和发现工具。各有利弊,目录发现工具通常更快速易用,而网页扫描器则提供更灵活的详细分析能力。
以下列表聚焦开源或常见工具(非 exhaustive):
发现工具
- Gobuster
BHIS博文:《网页内容发现该找谁?Gobuster!》 - Dirsearch
BHIS博文:《Dirsearch使用指南》 - ffuf
扫描器
- Nikto
- WPScan
- Burp Suite Pro(内容发现功能)
修复方案
将应用或服务器部署到生产环境前,务必删除或限制安装残留、默认文件、管理界面等非必要内容。
通过.htaccess等文件实施默认限制是有效方法,使用模式匹配还能为后续升级提供一定“未来防护”。Drupal自带的.htaccess文件限制了安装文件等资源的访问,该方案几乎可适配所有PHP应用。
理想情况下,管理界面应通过源IP限制或VPN保护确保攻击者无法访问。将访问权限限定在企业出口IP、跳板系统等范围内,能有效降低攻击者发现这类功能的概率。
虽然不能提供完整防护,但将默认管理路径修改为随机字符串也能抵御“路过式”攻击——即攻击者简单尝试常见目录的行为。这同时能避免被网页扫描器轻松识别。
总结
清理工作(无论是自己还是他人的遗留)总是项繁琐任务,但这个常被忽视的步骤能有效限制攻击者可获取的环境信息。在极端情况下,这个步骤甚至能阻止系统被入侵——所投入的时间精力完全值得。