
última versão de scanners para a vulnerabilidade de divulgação de nomes curtos (8.3) do IIS
Última apresentação:
Último post no blog:
Recomendo que todos experimentem a nova ferramenta do @bitquark em Go antes de tentar esta ferramenta antiga: https://github.com/bitquark/shortscan
A versão mais recente do scanner para a vulnerabilidade de divulgação de nomes curtos de arquivos (8.3) do IIS, usando o caractere til (~). Este problema foi descoberto em 2010, mas evoluiu algumas vezes desde então.
Esta é uma ferramenta antiga e o código é um espaguete, mas é capaz de lidar até mesmo com o IIS mais recente (IIS 10 no Windows Server 2022 no momento em que escrevo isto)! Foi atualizada recentemente, então pode suportar o envio de métodos HTTP personalizados sem hacks de reflexão em Java. No entanto, alguns pesquisadores incríveis tentaram reimplementar esta ferramenta usando outras tecnologias, como em Go, e quando amadurecerem, provavelmente funcionarão melhor do que esta.
O Microsoft IIS contém uma falha que pode levar a uma divulgação não autorizada de informações. O problema é acionado durante a análise de uma requisição que contém um caractere til (~). Isso pode permitir que um atacante remoto obtenha informações sobre nomes de arquivos e pastas.
Este scanner foi movido de https://code.google.com/p/iis-shortname-scanner-poc/ para o GitHub para melhor suporte.
Arquivo de pesquisa original: http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
É possível detectar nomes curtos de arquivos e diretórios que possuem um equivalente 8.3 no Windows usando alguns vetores em várias versões do Microsoft IIS. Por exemplo, é possível detectar todos os nomes curtos de arquivos ".aspx", pois eles têm 4 letras em suas extensões.
Nota: novas técnicas foram introduzidas nas versões mais recentes deste scanner, e agora ele pode escanear o IIS10 quando vulnerável.
Não é fácil encontrar os nomes originais de arquivos ou pastas com base nos nomes curtos. No entanto, os seguintes métodos são recomendados como exemplos:
A versão recente foi compilada usando Open JDK 18 (os arquivos jar antigos para outros JDKs foram removidos, mas podem ser encontrados no histórico do Git).
Você precisará baixar os arquivos no diretório /release para usar este aplicativo antigo!
Você também pode compilar este aplicativo por conta própria. Envie quaisquer problemas no GitHub para investigação adicional.
USO 1 (Para verificar se o alvo é vulnerável com o arquivo de configuração padrão):
java -jar iis_shortname_scanner.jar [URL]
USO 2 (Para encontrar nomes de arquivos 8.3 com o arquivo de configuração padrão):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL]
USO 3 (Para verificar se o alvo é vulnerável com um novo arquivo de configuração):
java -jar iis_shortname_scanner.jar [URL] [configFile]
USO 4 (Para encontrar nomes de arquivos 8.3 com um novo arquivo de configuração):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL] [configFile]
USO 5 (Para escanear múltiplos alvos usando uma máquina Linux):
./multi_targets.sh <scope file> <is_default_https (1=https)>
DETALHES:
[ShowProgress]: 0= Mostrar apenas resultados finais - 1= Mostrar resultados finais passo a passo - 2= Mostrar Progresso
[ThreadNumbers]: 0= Sem thread - Número Inteiro = Número de threads simultâneas [cuidado com Negação de Serviço do IIS]
[URL]: Uma URL completa - começa com protocolo http/https
[configFile]: caminho para um novo arquivo de configuração baseado em config.xml
Exemplos:
- Exemplo 0 (para ver se o alvo é vulnerável):
java -jar iis_shortname_scanner.jar http://exemplo.com/pasta/
- Exemplo 1 (usa nenhuma thread - muito lento):
java -jar iis_shortname_scanner.jar 2 0 http://exemplo.com/pasta/nova%20pasta/
- Exemplo 2 (usa 20 threads - recomendado):
java -jar iis_shortname_scanner.jar 2 20 http://exemplo.com/pasta/nova%20pasta/
- Exemplo 3 (salva a saída em um arquivo de texto):
java -jar iis_shortname_scanner.jar 0 20 http://exemplo.com/pasta/nova%20pasta/ > c:\resultados.txt
- Exemplo 4 (ignora a autenticação básica do IIS):
java -jar iis_shortname_scanner.jar 2 20 http://exemplo.com/pasta/AuthNeeded:$I30:$Index_Allocation/
- Exemplo 5 (usando um novo arquivo de configuração):
java -jar iis_shortname_scanner.jar 2 20 http://exemplo.com/pasta/ newconfig.xml
- Exemplo 6 (escanando múltiplos alvos usando uma máquina Linux):
./multi_targets.sh escopo.txt 1
Nota 1: Edite o arquivo config.xml para alterar as configurações do scanner e adicionar cabeçalhos adicionais. Nota 2: Às vezes não funciona na primeira vez, e você precisa tentar novamente.
Nos exemplos a seguir, o IIS responde com uma mensagem diferente quando um arquivo existe:
http://alvo/pasta/valido*~1.*/.aspx
http://alvo/pasta/invalido*~1.*/.aspx
No entanto, diferentes servidores IIS podem responder de forma diferente e, por exemplo, alguns podem funcionar com os seguintes ou outros padrões semelhantes:
http://alvo/pasta/valido*~1.*\.asp
http://alvo/pasta/invalido*~1.*\.asp
O método de envio da requisição, como GET, POST, OPTIONS, DEBUG, ... também é importante.
Acredito que monitorar as requisições usando um proxy é a melhor maneira de entender este problema e este scanner.
A Microsoft não corrigirá este problema de segurança. Sua última resposta é a seguinte:
Obrigado por entrar em contato com o Microsoft Security Response Center.
Agradecemos por nos trazer isso à atenção. Nossa orientação anterior permanece: implante o IIS com nomes 8.3 desativados.
Portanto, é recomendado implantar o IIS com nomes 8.3 desativados criando a seguinte chave de registro em um sistema operacional Windows:
Chave: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
Nome: NtfsDisable8dot3NameCreation
Valor: 1
Nota: A pasta da web precisa ser recriada, pois a alteração na entrada de registro NtfsDisable8dot3NameCreation afeta apenas arquivos e diretórios criados após a alteração, portanto, os arquivos que já existem não são afetados.
Construir a imagem:
docker build . -t shortname
modo arquivo:
docker run \
-v $(realpath urls.txt):/app/urls.txt \
-v $(realpath output_dir):/app/iis_shortname_results \
shortname -f urls.txt
modo único:
docker run shortname 2 20 http://exemplo.com
substituir arquivo de configuração:
docker run \
-v $(realpath config.xml):/app/config.xml \
shortname http://exemplo.com
Links de pesquisa:
Referência do site:
Links de vídeo:
Outros links: