Kolejna luka w Apache httpd, która umożliwia dostęp poza katalogiem głównym witryny

Znaleziono nowy wektor ataku dla serwera HTTP Apache, który pozostał nieskorygowany w aktualizacji 2.4.50 i umożliwia dostęp do plików z obszarów znajdujących się poza katalogiem głównym witryny. Ponadto badacze znaleźli metodę, która pozwala, w przypadku pewnych niestandardowych ustawień, nie tylko na odczytanie plików systemowych, ale także na zdalne wykonanie ich kodu na serwerze. Problem pojawia się tylko w wersjach 2.4.49 i 2.4.50, nie dotyczy to wcześniejszych wersji. Aby wyeliminować nową lukę, szybko wydano Apache httpd 2.4.51.

W swojej istocie nowy problem (CVE-2021-42013) jest całkowicie podobny do pierwotnej luki (CVE-2021-41773) w wersji 2.4.49, jedyną różnicą jest inne kodowanie znaków „..” W szczególności w wersji 2.4.50 zablokowano możliwość użycia sekwencji „%2e” do zakodowania punktu, ale pominięto możliwość podwójnego kodowania - przy podaniu sekwencji „%%32%65” serwer ją zdekodował do „%2e”, a następnie do „.”, tj. znaki „../” umożliwiające przejście do poprzedniego katalogu można zakodować jako „.%%32%65/”.

Jeśli chodzi o wykorzystanie luki poprzez wykonanie kodu, jest to możliwe, gdy włączony jest mod_cgi i używana jest ścieżka bazowa, w której dozwolone jest wykonywanie skryptów CGI (przykładowo, jeśli włączona jest dyrektywa ScriptAlias ​​lub w pliku jest podana flaga ExecCGI dyrektywa opcyjna). Obowiązkowym wymogiem udanego ataku jest również wyraźne zapewnienie dostępu do katalogów z plikami wykonywalnymi, takimi jak /bin, lub dostępu do katalogu głównego systemu plików „/” w ustawieniach Apache. Ponieważ taki dostęp nie jest zazwyczaj przyznawany, ataki polegające na wykonaniu kodu mają niewielkie zastosowanie w rzeczywistych systemach.

Jednocześnie aktualny pozostaje atak mający na celu uzyskanie zawartości dowolnych plików systemowych i tekstów źródłowych skryptów internetowych, czytelnych dla użytkownika, na których działa serwer http. Aby przeprowadzić taki atak, wystarczy mieć na stronie skonfigurowany katalog przy pomocy dyrektyw „Alias” lub „ScriptAlias” (nie wystarczy DocumentRoot), np. „cgi-bin”.

Przykład exploita umożliwiającego wykonanie na serwerze narzędzia „id”: curl 'http://192.168.0.1/cgi-bin/.%%32%65/.%%32%65/.%% 32%65/.%% 32%65/.%%32%65/bin/sh” —data „echo Typ zawartości: tekst/zwykły; Echo; id' uid=1(demon) gid=1(demon) groups=1(demon)

Przykład exploita umożliwiającego wyświetlenie zawartości pliku /etc/passwd oraz jednego ze skryptów internetowych (aby wyprowadzić kod skryptu, należy podać katalog zdefiniowany dyrektywą „Alias”, dla którego nie jest włączone wykonywanie skryptów jako katalog bazowy): curl 'http://192.168.0.1 .32/cgi-bin/.%%65%32/.%%65%32/.%%65%32/.%%65%32/.% %65%192.168.0.1/etc/passwd' curl 'http: //32/aliaseddir/.%%65%32/.%%65%32/.%%65%32/.%%65%32/. %%65%2/usr/local/apacheXNUMX/cgi -bin/test.cgi'

Problem dotyczy głównie stale aktualizowanych dystrybucji, takich jak Fedora, Arch Linux i Gentoo, a także portów FreeBSD. Luka nie dotyczy pakietów w stabilnych gałęziach konserwatywnych dystrybucji serwerów Debian, RHEL, Ubuntu i SUSE. Problem nie występuje, jeśli dostęp do katalogów jest wyraźnie zabroniony przy użyciu ustawienia „Wymagaj odmowy”.

Źródło: opennet.ru

Dodaj komentarz