IIS - Internet Information Services
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Testa le estensioni dei file eseguibili:
asp
aspx
config
php
Su qualsiasi server IIS dove ottieni un 302, puoi provare a rimuovere l'intestazione Host e utilizzare HTTP/1.0 e all'interno della risposta l'intestazione Location potrebbe indicarti l'indirizzo IP interno:
Risposta che rivela l'IP interno:
Puoi caricare file .config e usarli per eseguire codice. Un modo per farlo è aggiungere il codice alla fine del file all'interno di un commento HTML: Scarica l'esempio qui
Ulteriori informazioni e tecniche per sfruttare questa vulnerabilità qui
Scarica l'elenco che ho creato:
È stato creato unendo i contenuti dei seguenti elenchi:
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
Usalo senza aggiungere alcuna estensione, i file che ne hanno bisogno ce l'hanno già.
Controlla il resoconto completo in: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html
In sintesi, ci sono diversi file web.config all'interno delle cartelle dell'applicazione con riferimenti a file "assemblyIdentity" e "namespaces". Con queste informazioni è possibile sapere dove si trovano gli eseguibili e scaricarli. Dai Dll scaricati è anche possibile trovare nuovi namespaces dove dovresti provare ad accedere e ottenere il file web.config per trovare nuovi namespaces e assemblyIdentity. Inoltre, i file connectionstrings.config e global.asax possono contenere informazioni interessanti.\
Nelle applicazioni .Net MVC, il file web.config gioca un ruolo cruciale specificando ogni file binario su cui l'applicazione fa affidamento tramite i tag XML "assemblyIdentity".
Un esempio di accesso al file web.config è mostrato di seguito:
Questa richiesta rivela varie impostazioni e dipendenze, come:
EntityFramework versione
AppSettings per pagine web, validazione client e JavaScript
Configurazioni di System.web per autenticazione e runtime
Impostazioni dei moduli di System.webServer
Binding di assembly di Runtime per numerose librerie come Microsoft.Owin, Newtonsoft.Json e System.Web.Mvc
Queste impostazioni indicano che determinati file, come /bin/WebGrease.dll, si trovano all'interno della cartella /bin dell'applicazione.
I file trovati nella directory radice, come /global.asax e /connectionstrings.config (che contiene password sensibili), sono essenziali per la configurazione e il funzionamento dell'applicazione.
Le applicazioni MVC definiscono anche ulteriori file web.config per namespace specifici per evitare dichiarazioni ripetitive in ciascun file, come dimostrato con una richiesta per scaricare un altro web.config:
Il riferimento a uno spazio dei nomi personalizzato suggerisce la presenza di una DLL chiamata "WebApplication1" nella directory /bin. A seguire, viene mostrata una richiesta per scaricare la WebApplication1.dll:
Questo suggerisce la presenza di altri DLL essenziali, come System.Web.Mvc.dll e System.Web.Optimization.dll, nella directory /bin.
In uno scenario in cui un DLL importa uno spazio dei nomi chiamato WebApplication1.Areas.Minded, un attaccante potrebbe dedurre l'esistenza di altri file web.config in percorsi prevedibili, come /area-name/Views/, contenenti configurazioni specifiche e riferimenti ad altri DLL nella cartella /bin. Ad esempio, una richiesta a /Minded/Views/web.config può rivelare configurazioni e spazi dei nomi che indicano la presenza di un altro DLL, WebApplication1.AdditionalFeatures.dll.
Da qui
Se vedi un errore come il seguente:
Significa che il server non ha ricevuto il nome di dominio corretto all'interno dell'intestazione Host. Per accedere alla pagina web, puoi dare un'occhiata al Certificato SSL servito e forse puoi trovare il nome del dominio/sottodominio lì. Se non è presente, potresti dover forzare VHosts fino a trovare quello corretto.
Puoi provare a enumerare cartelle e file all'interno di ogni cartella scoperta (anche se richiede l'autenticazione di base) utilizzando questa tecnica. La principale limitazione di questa tecnica, se il server è vulnerabile, è che può trovare solo fino ai primi 6 caratteri del nome di ciascun file/cartella e i primi 3 caratteri dell'estensione dei file.
Puoi usare https://github.com/irsdl/IIS-ShortName-Scanner per testare questa vulnerabilità:java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/
Ricerca originale: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
Puoi anche usare metasploit: use scanner/http/iis_shortname_scanner
Un'idea carina per trovare il nome finale dei file scoperti è chiedere a LLMs per opzioni come fatto nello script https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py
Bypass un'autenticazione di base (IIS 7.5) provando ad accedere a: /admin:$i30:$INDEX_ALLOCATION/admin.php
o /admin::$INDEX_ALLOCATION/admin.php
Puoi provare a mescolare questa vulnerabilità e l'ultima per trovare nuove cartelle e bypassare l'autenticazione.
ASP.NET include una modalità di debugging e il suo file si chiama trace.axd
.
Tiene un log molto dettagliato di tutte le richieste fatte a un'applicazione nel corso del tempo.
Queste informazioni includono IP dei client remoti, ID di sessione, tutti i cookie di richiesta e risposta, percorsi fisici, informazioni sul codice sorgente e potenzialmente anche nomi utente e password.
https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/
ASPXAUTH utilizza le seguenti informazioni:
validationKey
(stringa): chiave codificata in esadecimale da utilizzare per la validazione della firma.
decryptionMethod
(stringa): (predefinito “AES”).
decryptionIV
(stringa): vettore di inizializzazione codificato in esadecimale (predefinito a un vettore di zeri).
decryptionKey
(stringa): chiave codificata in esadecimale da utilizzare per la decrittazione.
Tuttavia, alcune persone utilizzeranno i valori predefiniti di questi parametri e utilizzeranno come cookie l'email dell'utente. Pertanto, se riesci a trovare un web che utilizza la stessa piattaforma che sta usando il cookie ASPXAUTH e crei un utente con l'email dell'utente che vuoi impersonare sul server sotto attacco, potresti essere in grado di usare il cookie dal secondo server nel primo e impersonare l'utente. Questo attacco ha funzionato in questo writeup.
Rapporto completo qui: Un bug nel codice non ha controllato correttamente la password fornita dall'utente, quindi un attaccante il cui hash della password colpisce una chiave già presente nella cache sarà in grado di accedere come quell'utente.
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)