È stato scoperto un nuovo vettore d'attacco per il server HTTP Apache, che è rimasto non corretto nell'aggiornamento 2.4.50 e consente l'accesso ai file da aree al di fuori della radice del sito. Inoltre, i ricercatori hanno trovato un modo che, in presenza di alcune configurazioni non standard, non solo permette di leggere i file di sistema, ma anche di eseguire il proprio codice in remoto sul server. La problematica si manifesta solo nelle versioni 2.4.49 e 2.4.50; versioni precedenti non sono vulnerabili. Per affrontare questa nuova variante di vulnerabilità, è stata rapidamente rilasciata la versione Apache httpd 2.4.51.
По своей сути новая проблема (CVE-2021-42013) полностью аналогична изначальной уязвимости (CVE-2021-41773) в 2.4.49, разница лишь в иной кодировке символов «..». В частности, в выпуске 2.4.50 была заблокирована возможность использования последовательности «%2e» для кодирования точки, но упущена возможность двойного кодирования — при указании последовательности «%%32%65» un server декодировал её в «%2e», а затем в «.», т.е. символы «../» для перехода в предыдущий каталог можно было закодировать как «.%%32%65/».
Per quanto riguarda lo sfruttamento delle vulnerabilità tramite l'esecuzione di codice, ciò è possibile attivando mod_cgi e utilizzando un percorso di base in cui è consentita l'esecuzione di script CGI (ad esempio, se è attivata la direttiva ScriptAlias o se è impostato il flag ExecCGI nella direttiva Options). Un requisito fondamentale per il successo di un attacco è anche la concessione esplicita nelle impostazioni di Apache dell'accesso alle directory con file eseguibili, come /bin, o l'accesso alla root del filesystem “/”. Poiché di solito tale accesso non viene concesso, l'attacco tramite esecuzione di codice è poco applicabile ai sistemi reali.
Rimane attuale invece l'attacco volto a ottenere il contenuto di file di sistema casuali e sorgenti di web script accessibili in lettura dall'utente con cui è in esecuzione il server http. Per eseguire tale attacco è sufficiente avere sul sito una directory impostata tramite le direttive "Alias" o "ScriptAlias" (DocumentRoot non è sufficiente), come ad esempio "cgi-bin".
Esempio di exploit che permette di eseguire l'utilità "id" su server: curl ‘http://192.168.0.1/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh’ —data ‘echo Content-Type: text/plain; echo; id’ uid=1(daemon) gid=1(daemon) groups=1(daemon)
Пример эксплоитов, позволяющего вывести содержимое /etc/passwd и одного из web-скриптов (для отдачи кода скриптов в качестве базового должен быть указан определённый через директиву «Alias» каталог, для которого не включено исполнение скриптов): curl ‘http://192.168.0.1/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd’ curl ‘http://192.168.0.1/aliaseddir/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/usr/local/apache2/cgi-bin/test.cgi’
Il problema colpisce principalmente le distribuzioni in continuo aggiornamento, come Fedora, Arch Linux e Gentoo, così come i port di FreeBSD. I pacchetti nelle branche stabili di distribuzioni server conservative come Debian, RHEL, Ubuntu e SUSE non sono vulnerabili. Il problema non si manifesta se l'accesso alle directory è esplicitamente vietato tramite la configurazione 'require all denied'.
Fonte: opennet.ru
