最新演讲:
最新博文:
我建议大家在尝试这个旧工具之前,先试试@bitquark用Go写的新工具:https://github.com/bitquark/shortscan
最新版本的扫描器利用波浪号(~)字符检测IIS短文件名(8.3)泄露漏洞。这个问题在2010年被发现,但自那以后已经演变了几次。
这是一个老工具,代码像一团意大利面,但它甚至能够处理最新的IIS(撰写本文时是Windows Server 2022上的IIS 10)!它最近已更新,因此支持发送自定义HTTP方法,无需在Java中使用反射hack。然而,一些出色的研究人员已经尝试使用其他技术(如Go)重新实现这个工具,当它们成熟时,可能会比这个工具更好用。
Microsoft IIS存在一个缺陷,可能导致未授权的信息泄露。该问题在解析包含波浪号(~)字符的请求时被触发。这可能允许远程攻击者获取文件和文件夹名称信息。
本扫描器已从https://code.google.com/p/iis-shortname-scanner-poc/ 迁移至GitHub以获得更好支持。
原始研究文件:http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
通过使用几种版本的Microsoft IIS中的一些向量,可以检测出在Windows中具有8.3等效名的文件和目录的短名称。例如,可以检测所有".aspx"文件的短名称,因为它们的扩展名有4个字母。
注意:本扫描器的最新版本引入了新技术,现在可以在IIS10存在漏洞时对其进行扫描。
根据短名称找到原始文件或文件夹名称并不容易。然而,以下方法作为示例被推荐:
最新版本使用Open JDK 18编译(为其他JDK编译的旧jar文件已被删除,但可以在Git历史中找到)。
你需要下载/release目录中的文件才能使用这个旧应用程序!
你也可以自己编译这个应用程序。请将任何问题提交到GitHub以供进一步调查。
用法1(使用默认配置文件验证目标是否存在漏洞):
java -jar iis_shortname_scanner.jar [URL]
用法2(使用默认配置文件查找8.3文件名):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL]
用法3(使用新的配置文件验证目标是否存在漏洞):
java -jar iis_shortname_scanner.jar [URL] [configFile]
用法4(使用新的配置文件查找8.3文件名):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL] [configFile]
用法5(在Linux机器上扫描多个目标):
./multi_targets.sh <scope file> <is_default_https (1=https)>
详情:
[ShowProgress]: 0= 仅显示最终结果 - 1= 逐步显示最终结果 - 2= 显示进度
[ThreadNumbers]: 0= 无线程 - 整数 = 并发线程数 [注意IIS拒绝服务]
[URL]: 完整URL - 以http/https协议开头
[configFile]: https://raw.githubusercontent.com/irsdl/iis-shortname-scanner/HEAD/%E5%9F%BA%E4%BA%8Econfig.xml%E7%9A%84%E6%96%B0%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%B7%AF%E5%BE%84
示例:
- 示例0(查看目标是否存在漏洞):
java -jar iis_shortname_scanner.jar http://example.com/folder/
- 示例1(不使用线程 - 非常慢):
java -jar iis_shortname_scanner.jar 2 0 http://example.com/folder/new%20folder/
- 示例2(使用20个线程 - 推荐):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/new%20folder/
- 示例3(将输出保存到文本文件):
java -jar iis_shortname_scanner.jar 0 20 http://example.com/folder/new%20folder/ > c:\results.txt
- 示例4(绕过IIS基本认证):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/AuthNeeded:$I30:$Index_Allocation/
- 示例5(使用新的配置文件):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/ newconfig.xml
- 示例6(在Linux机器上扫描多个目标):
./multi_targets.sh scope.txt 1
注意1:编辑config.xml文件以更改扫描器设置并添加额外的头部。 注意2:有时第一次不起作用,需要重试。
在以下示例中,当文件存在时,IIS会返回不同的消息:
http://target/folder/valid*~1.*/.aspx
http://target/folder/invalid*~1.*/.aspx
然而,不同的IIS服务器可能响应不同,例如其中一些可能适用于以下或其他类似模式:
http://target/folder/valid*~1.*\.asp
http://target/folder/invalid*~1.*\.asp
请求的发送方法(如GET、POST、OPTIONS、DEBUG等)也很重要。
我认为通过代理监视请求是理解这个问题和这个扫描器的最佳方式。
Microsoft不会修复这个安全问题。他们最后的回复如下:
感谢您联系微软安全响应中心。
我们感谢您将此事提请我们注意。我们之前的指导仍然有效:部署IIS时禁用8.3名称。
因此,建议在Windows操作系统上创建以下注册表项来部署禁用8.3名称的IIS:
Key: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
Name: NtfsDisable8dot3NameCreation
Value: 1
注意:需要重新创建Web文件夹,因为对NtfsDisable8dot3NameCreation注册表项的更改只会影响更改后创建的文件和目录,因此已存在的文件不受影响。
构建镜像:
docker build . -t shortname
文件模式:
docker run \
-v $(realpath urls.txt):/app/urls.txt \
-v $(realpath output_dir):/app/iis_shortname_results \
shortname -f urls.txt
单目标模式:
docker run shortname 2 20 http://example.com
覆盖配置文件:
docker run \
-v $(realpath config.xml):/app/config.xml \
shortname http://example.com
研究链接:
网站参考:
视频链接:
其他链接: