
ultima versione degli scanner per la vulnerabilità di divulgazione dei nomi file brevi (8.3) di IIS
Ultima presentazione:
Ultimo post sul blog:
Raccomando a tutti di provare il nuovo strumento di @bitquark in Go prima di provare questo vecchio strumento: https://github.com/bitquark/shortscan
L'ultima versione dello scanner per la vulnerabilità di divulgazione del nome breve dei file IIS (8.3) utilizzando il carattere tilde (~). Questo problema è stato scoperto nel 2010 ma è stato evoluto diverse volte da allora.
Questo è uno strumento vecchio e il codice è uno spaguetti, ma è in grado di affrontare anche l'ultimo IIS (IIS 10 su Windows Server 2022 al momento della scrittura)! È stato recentemente aggiornato, quindi può supportare l'invio di metodi HTTP personalizzati senza hack di riflessione in Java. Tuttavia, alcuni ricercatori fantastici hanno provato a reimplementare questo strumento usando altre tecnologie come Go, e quando diventano maturi, probabilmente funzionano meglio di questo.
Microsoft IIS contiene una falla che può portare a una divulgazione non autorizzata di informazioni. Il problema viene innescato durante l'analisi di una richiesta che contiene un carattere tilde (~). Ciò può permettere a un attaccante remoto di ottenere informazioni sui nomi di file e cartelle.
Questo scanner è stato spostato da https://code.google.com/p/iis-shortname-scanner-poc/ a GitHub per un migliore supporto.
Documento di ricerca originale: http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
È possibile rilevare i nomi brevi di file e directory che hanno un equivalente 8.3 in Windows utilizzando alcuni vettori in diverse versioni di Microsoft IIS. Ad esempio, è possibile rilevare tutti i nomi brevi dei file ".aspx" poiché hanno 4 lettere nelle loro estensioni.
Nota: nuove tecniche sono state introdotte nelle ultime versioni di questo scanner, e ora può scansionare IIS10 quando è vulnerabile.
Non è facile trovare i nomi originali dei file o delle cartelle basandosi sui nomi brevi. Tuttavia, i seguenti metodi sono raccomandati come esempio:
La versione recente è stata compilata usando Open JDK 18 (i vecchi file jar per altri JDK sono stati rimossi ma possono essere trovati nella cronologia di Git).
Dovrai scaricare i file nella directory /release per usare questa vecchia applicazione!
Puoi anche compilare questa applicazione da solo. Segnala eventuali problemi su GitHub per ulteriori indagini.
USO 1 (Per verificare se il target è vulnerabile con il file di configurazione predefinito):
java -jar iis_shortname_scanner.jar [URL]
USO 2 (Per trovare i nomi dei file 8.3 con il file di configurazione predefinito):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL]
USO 3 (Per verificare se il target è vulnerabile con un nuovo file di configurazione):
java -jar iis_shortname_scanner.jar [URL] [configFile]
USO 4 (Per trovare i nomi dei file 8.3 con un nuovo file di configurazione):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL] [configFile]
USO 5 (Per scansionare più target usando una macchina Linux):
./multi_targets.sh <scope file> <is_default_https (1=https)>
DETTAGLI:
[ShowProgress]: 0= Mostra solo risultati finali - 1= Mostra risultati finali passo dopo passo - 2= Mostra progresso
[ThreadNumbers]: 0= Nessun thread - Numero intero = Numero di thread concorrenti [fare attenzione al Denial of Service di IIS]
[URL]: Un URL completo - inizia con protocollo http/https
[configFile]: percorso a un nuovo file di configurazione basato su config.xml
Esempi:
- Esempio 0 (per vedere se il target è vulnerabile):
java -jar iis_shortname_scanner.jar http://example.com/folder/
- Esempio 1 (usa nessun thread - molto lento):
java -jar iis_shortname_scanner.jar 2 0 http://example.com/folder/new%20folder/
- Esempio 2 (usa 20 thread - raccomandato):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/new%20folder/
- Esempio 3 (salva output in un file di testo):
java -jar iis_shortname_scanner.jar 0 20 http://example.com/folder/new%20folder/ > c:\results.txt
- Esempio 4 (bypass dell'autenticazione IIS di base):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/AuthNeeded:$I30:$Index_Allocation/
- Esempio 5 (usando un nuovo file di configurazione):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/ newconfig.xml
- Esempio 6 (scansionando più target usando una macchina Linux):
./multi_targets.sh scope.txt 1
Nota 1: Modifica il file config.xml per cambiare le impostazioni dello scanner e aggiungere header aggiuntivi. Nota 2: A volte non funziona al primo tentativo, ed è necessario riprovare.
Negli esempi seguenti, IIS risponde con un messaggio diverso quando un file esiste:
http://target/folder/valid*~1.*/.aspx
http://target/folder/invalid*~1.*/.aspx
Tuttavia, diversi server IIS possono rispondere in modo diverso, e per esempio alcuni potrebbero funzionare con i seguenti o altri pattern simili:
http://target/folder/valid*~1.*\.asp
http://target/folder/invalid*~1.*\.asp
Anche il metodo di invio della richiesta come GET, POST, OPTIONS, DEBUG, ... è importante.
Credo che monitorare le richieste usando un proxy sia il modo migliore per comprendere questo problema e questo scanner.
Microsoft non correggerà questo problema di sicurezza. La loro ultima risposta è la seguente:
Thank you for contacting the Microsoft Security Response Center.
We appreciate your bringing this to our attention. Our previous guidance stands: deploy IIS with 8.3 names disabled.
Pertanto, si raccomanda di distribuire IIS con i nomi 8.3 disabilitati creando la seguente chiave di registro su un sistema operativo Windows:
Key: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
Name: NtfsDisable8dot3NameCreation
Value: 1
Nota: La cartella web deve essere ricreata, poiché la modifica alla voce di registro NtfsDisable8dot3NameCreation colpisce solo i file e le directory creati dopo la modifica, quindi i file già esistenti non vengono influenzati.
costruisci l'immagine:
docker build . -t shortname
modalità file:
docker run \
-v $(realpath urls.txt):/app/urls.txt \
-v $(realpath output_dir):/app/iis_shortname_results \
shortname -f urls.txt
modalità singola:
docker run shortname 2 20 http://example.com
sovrascrivi file di configurazione:
docker run \
-v $(realpath config.xml):/app/config.xml \
shortname http://example.com
Link di ricerca:
Riferimento sito web:
Link video:
Altri link: