IIS - Internet Information Services
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Testar extensões de arquivos executáveis:
asp
aspx
config
php
Em qualquer servidor IIS onde você obtiver um 302, você pode tentar remover o cabeçalho Host e usar HTTP/1.0 e dentro da resposta o cabeçalho Location pode apontar para o endereço IP interno:
Resposta revelando o IP interno:
Você pode fazer upload de arquivos .config e usá-los para executar código. Uma maneira de fazer isso é anexando o código ao final do arquivo dentro de um comentário HTML: Baixar exemplo aqui
Mais informações e técnicas para explorar essa vulnerabilidade aqui
Baixe a lista que eu criei:
Ela foi criada mesclando os conteúdos das seguintes listas:
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt
Use-a sem adicionar nenhuma extensão, os arquivos que precisam já a possuem.
Verifique a descrição completa em: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html
Como resumo, há vários arquivos web.config dentro das pastas da aplicação com referências a arquivos "assemblyIdentity" e "namespaces". Com essa informação, é possível saber onde estão os executáveis e baixá-los. A partir dos Dlls baixados, também é possível encontrar novos namespaces onde você deve tentar acessar e obter o arquivo web.config para encontrar novos namespaces e assemblyIdentity. Além disso, os arquivos connectionstrings.config e global.asax podem conter informações interessantes.\
Em aplicações .Net MVC, o arquivo web.config desempenha um papel crucial ao especificar cada arquivo binário do qual a aplicação depende através de tags XML "assemblyIdentity".
Um exemplo de acesso ao arquivo web.config é mostrado abaixo:
Esta solicitação revela várias configurações e dependências, como:
EntityFramework versão
AppSettings para páginas da web, validação de cliente e JavaScript
Configurações de System.web para autenticação e tempo de execução
Configurações de módulos System.webServer
Vínculos de assembly de Runtime para várias bibliotecas como Microsoft.Owin, Newtonsoft.Json e System.Web.Mvc
Essas configurações indicam que certos arquivos, como /bin/WebGrease.dll, estão localizados na pasta /bin da aplicação.
Arquivos encontrados no diretório raiz, como /global.asax e /connectionstrings.config (que contém senhas sensíveis), são essenciais para a configuração e operação da aplicação.
Aplicações MVC também definem arquivos web.config adicionais para namespaces específicos para evitar declarações repetitivas em cada arquivo, como demonstrado com uma solicitação para baixar outro web.config:
A menção a um namespace personalizado sugere a presença de uma DLL chamada "WebApplication1" no diretório /bin. Em seguida, um pedido para baixar a WebApplication1.dll é mostrado:
Isso sugere a presença de outros DLLs essenciais, como System.Web.Mvc.dll e System.Web.Optimization.dll, no diretório /bin.
Em um cenário onde um DLL importa um namespace chamado WebApplication1.Areas.Minded, um atacante pode inferir a existência de outros arquivos web.config em caminhos previsíveis, como /area-name/Views/, contendo configurações específicas e referências a outros DLLs na pasta /bin. Por exemplo, uma solicitação para /Minded/Views/web.config pode revelar configurações e namespaces que indicam a presença de outro DLL, WebApplication1.AdditionalFeatures.dll.
De aqui
Se você ver um erro como o seguinte:
Isso significa que o servidor não recebeu o nome de domínio correto dentro do cabeçalho Host. Para acessar a página da web, você pode dar uma olhada no Certificado SSL servido e talvez encontre o nome do domínio/subdomínio lá. Se não estiver lá, você pode precisar forçar VHosts até encontrar o correto.
Você pode tentar enumerar pastas e arquivos dentro de cada pasta descoberta (mesmo que exija Autenticação Básica) usando esta técnica. A principal limitação dessa técnica, se o servidor for vulnerável, é que ela pode encontrar apenas até as primeiras 6 letras do nome de cada arquivo/pasta e as primeiras 3 letras da extensão dos arquivos.
Você pode usar https://github.com/irsdl/IIS-ShortName-Scanner para testar essa vulnerabilidade:java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/
Pesquisa original: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
Você também pode usar metasploit: use scanner/http/iis_shortname_scanner
Uma boa ideia para encontrar o nome final dos arquivos descobertos é pedir a LLMs por opções, como é feito no script https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py
Bypass de uma autenticação básica (IIS 7.5) tentando acessar: /admin:$i30:$INDEX_ALLOCATION/admin.php
ou /admin::$INDEX_ALLOCATION/admin.php
Você pode tentar misturar essa vulnerabilidade com a última para encontrar novas pastas e burlar a autenticação.
ASP.NET inclui um modo de depuração e seu arquivo é chamado trace.axd
.
Ele mantém um log muito detalhado de todas as solicitações feitas a uma aplicação ao longo de um período de tempo.
Essas informações incluem IPs de clientes remotos, IDs de sessão, todos os cookies de solicitação e resposta, caminhos físicos, informações de código-fonte e potencialmente até mesmo nomes de usuários e senhas.
https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/
ASPXAUTH usa as seguintes informações:
validationKey
(string): chave codificada em hex para usar na validação de assinatura.
decryptionMethod
(string): (padrão “AES”).
decryptionIV
(string): vetor de inicialização codificado em hex (padrões para um vetor de zeros).
decryptionKey
(string): chave codificada em hex para usar na descriptografia.
No entanto, algumas pessoas usarão os valores padrão desses parâmetros e usarão como cookie o e-mail do usuário. Portanto, se você conseguir encontrar um site usando a mesma plataforma que está usando o cookie ASPXAUTH e você criar um usuário com o e-mail do usuário que deseja impersonar no servidor sob ataque, você pode ser capaz de usar o cookie do segundo servidor no primeiro e impersonar o usuário. Esse ataque funcionou neste writeup.
Relatório completo aqui: Um bug no código não verificou corretamente a senha fornecida pelo usuário, então um atacante cujo hash de senha atinge uma chave que já está no cache poderá fazer login como esse usuário.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)