为了兼容 ms-dos,对于一些长文件(或文件夹)名,windows 会以 win_8.3 格式生成对应的短文件名。格式为
配合通配符 *
构造出存在的短文件名则返回“ 404 ”,不存在的短文件名则返回“ 400 ”。据此可以猜测后台地址,下载备份文件、sql 文件,还可以执行 dos 攻击。
扫描工具:https://github.com/irsdl/IIS-ShortName-Scanner
修复方案
-
禁止 url 中使用
~
或它的 Unicode 编码 -
关闭 windows 的 8.3 格式功能
-
修改注册列表
的值为 1,再重启机器(此修改只能禁止 NTFS8.3 格式文件名创建,已经存在的短文件名无法移除)
-
如果 web 环境不需要 asp.net 的支持则可以进入
IIS 管理器 -> Web 服务扩展 -> ASP.NET
, 选择禁止此功能 -
升级 net framework 至 4.0 以上版本
-
将 web 文件夹的内容拷贝到另一个位置,如 E:\www 到 E:\www.back,然后删除原文件夹 E:\www,再重命名 E:\www.back 到 E:\www(如果不重新复制,则已存在的短文件名不会消失)