Aprenda e pratique Hacking AWS:<imgsrc="../../.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="../../.gitbook/assets/arte.png"alt=""data-size="line">\
Aprenda e pratique Hacking GCP: <imgsrc="../../.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="../../.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
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:
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](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config)
Mais informações e técnicas para explorar essa vulnerabilidade [aqui](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/)
Verifique a descrição completa em: [https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html)
{% hint style="info" %}
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.\\
{% endhint %}
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"**.
### **Explorando Arquivos Binários**
Um exemplo de acesso ao arquivo **web.config** é mostrado abaixo:
```markup
GET /download_page?id=..%2f..%2fweb.config HTTP/1.1
Host: example-mvc-application.minded
```
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 do Diretório Raiz**
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.
### **Namespaces e Web.Config**
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**:
```markup
GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1
Host: example-mvc-application.minded
```
### **Baixando DLLs**
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:
```markup
GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
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**.
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.
## Vulnerabilidades antigas do IIS que valem a pena procurar
### Vulnerabilidade/Recurso do caractere til “\~” do Microsoft IIS – Divulgação de Nome de Arquivo/Pasta Curto
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](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/`
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](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.
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.
* **`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**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19).
## Bypass de Autenticação do IIS com senhas em cache (CVE-2022-30209) <a href="#id-3-iis-authentication-bypass" id="id-3-iis-authentication-bypass"></a>
[Relatório completo aqui](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html): 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:<imgsrc="../../.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="../../.gitbook/assets/arte.png"alt=""data-size="line">\
Aprenda e pratique Hacking GCP: <imgsrc="../../.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="../../.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.