综合

IIS短文件名泄露漏洞

时间:2010-12-5 17:23:32  作者:休闲   来源:时尚  查看:  评论:0
内容摘要:2017年,安全研究员在一台运行着IIS 6.0的老旧服务器上,仅凭一个8.3短文件名就撬开了整个站点的目录结构。那次渗透测试,对方是个政府遗留系统,补丁打了三年没重启过。攻击者输入 /*~1*/.a

2017年,短洞安全研究员在一台运行着IIS 6.0的文件老旧服务器上,仅凭一个8.3短文件名就撬开了整个站点的名泄目录结构。那次渗透测试,露漏对方是短洞个政府遗留系统,补丁打了三年没重启过。文件攻击者输入 /*~1*/.aspx,名泄服务器响应了404,露漏但响应头里泄露了文件名的短洞真实长度——这就是短文件名漏洞最原始的杀伤力。

漏洞的文件根源,其实是名泄Windows为了兼容老DOS程序留下的遗产。每个长文件名都会自动生成一个等价的露漏8.3短格式,比如 important_document_2024.pdf 变成 IMPORT~1.PDF。短洞IIS在处理带通配符的文件请求时,会尝试匹配这些短名,名泄而响应时间或状态码的差异,就能让攻击者像玩猜谜游戏一样逐字符还原出真实文件名。更麻烦的是,~1 后面的数字还可以遍历,~2、~3 一路试下去,整个目录的“户口本”就翻出来了。

实际操作起来比想象中更粗糙。用普通的HTTP请求就行,无需任何特殊工具。发一个 GET /a*~1*/.aspx,如果返回404,说明存在以a开头的短文件名;如果返回400,说明根本没有匹配项。就这么一位一位地猜,效率高得吓人。有人做过测试,在默认配置的IIS 7.5上,猜出一个完整文件名平均只需要发约200个请求——用脚本跑,不到两分钟。

这个漏洞最阴险的地方在于,它让你以为自己在探测目录,实际上却在泄露文件内容相关的元数据。文件名本身就是敏感信息:一个叫 backup_2019_final_old 的文件,光名字就告诉你备份策略和版本管理习惯。配合其他漏洞,攻击者能精准定位到目标文件,绕过某些防护逻辑直接发起针对性攻击。比如某金融公司曾因IIS泄露了 web.config~1.bak 的存在,被顺藤摸瓜拿到了数据库连接字符串——文件名泄露成了整个攻击链的第一环。

修复手段倒不复杂。Windows注册表里有个 NtfsDisable8dot3NameCreation 选项,设成1就能禁止NTFS生成短文件名。但这条命令有个坑:它只对新建文件生效,已存在的文件依然保留着短名。所以还得配合 fsutil behavior set disable8dot3 1,然后重启IIS,再把现有文件全部复制一遍才能彻底清干净。很多管理员嫌麻烦,干脆只关掉ASP.NET的客户端回显,但那样治标不治本。

如今IIS 10默认已经禁用短名,但老系统、云镜像和某些国产中间件还在沿用旧配置。我见过不少容器化的.NET应用,镜像里跑的是Windows Server Core,IIS版本看着新,可构建镜像时基础层带过来的旧DLL和注册表设置照样留了后门。安全这行就是这样——你以为升级了系统就完事,结果底层文件系统的一个“历史包袱”悄悄把门又打开了。

说到底,这个漏洞算不上高端,但胜在“稳”。它不依赖复杂的溢出或注入,纯粹靠协议设计和文件系统特性的错位。对付它,除了及时打补丁,更得养成定期检查短文件名是否残留的习惯。命令很简单:dir /x 看看有没有非8.3格式的文件带着波浪号。要是看到一堆 PROJE~1.DOC 之类的玩意儿,别犹豫,该清理的清理,该禁用的禁用。毕竟,攻击者早就把这种“笨办法”玩成了自动化脚本,你还在手动维护服务器的话,那就真有点说不过去了。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap