
последняя версия сканеров для уязвимости раскрытия коротких имен файлов (8.3) в IIS
Последняя презентация:
Последний пост в блоге:
Я рекомендую всем сначала попробовать новый инструмент @bitquark на Go, прежде чем использовать этот старый: https://github.com/bitquark/shortscan
Последняя версия сканера для уязвимости раскрытия коротких имён файлов (8.3) в IIS с использованием символа тильды (~). Эта проблема была обнаружена в 2010 году, но с тех пор несколько раз развивалась.
Это старый инструмент, и код представляет собой спагетти, но он способен справляться даже с последними версиями IIS (IIS 10 на Windows Server 2022 на момент написания)! Недавно он был обновлён, чтобы поддерживать отправку пользовательских HTTP-методов без использования хаков с рефлексией в Java. Однако некоторые замечательные исследователи попытались перереализовать этот инструмент с использованием других технологий, таких как 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
Можно обнаружить короткие имена файлов и каталогов, имеющие эквивалент 8.3 в Windows, используя некоторые векторы в нескольких версиях Microsoft IIS. Например, можно обнаружить все короткие имена файлов ".aspx", так как их расширения имеют 4 буквы.
Примечание: в последние версии этого сканера были добавлены новые техники, и теперь он может сканировать IIS10, когда он уязвим.
Найти оригинальные имена файлов или папок по коротким именам непросто. Однако рекомендуется использовать следующие методы в качестве примеров:
Последняя версия скомпилирована с использованием Open JDK 18 (старые jar-файлы для других JDK были удалены, но их можно найти в истории 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]: путь к новому файлу конфигурации, основанному на config.xml
Примеры:
- Пример 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 не будет патчить эту уязвимость. Их последний ответ был таким:
Thank you for contacting the Microsoft Security Response Center.
We appreciate your bringing this to our attention. Our previous guidance stands: deploy IIS with 8.3 names disabled.
Поэтому рекомендуется развернуть IIS с отключёнными именами 8.3, создав следующий реестровый ключ в операционной системе Windows:
Ключ: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
Имя: NtfsDisable8dot3NameCreation
Значение: 1
Примечание: Веб-папку необходимо пересоздать, так как изменение записи реестра 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
Исследовательские ссылки:
Ссылка на сайт:
Видео-ссылки:
Другие ссылки: