Znaleziono nowy wektor ataku na serwer HTTP Apache, który pozostał niezałatwiony w aktualizacji 2.4.50 i pozwala na dostęp do plików z obszarów poza katalogiem głównym witryny. Ponadto, badacze odkryli sposób, który umożliwia, przy pewnych niestandardowych ustawieniach, nie tylko odczyt plików systemowych, ale także zdalne wykonanie własnego kodu na serwerze. Problem występuje tylko w wersjach 2.4.49 i 2.4.50, wcześniejsze wersje nie są podatne na tę lukę. W celu rozwiązania nowego wariantu luki, szybko wydano wersję Apache httpd 2.4.51.
Nowy problem (CVE-2021-42013) jest zasadniczo identyczny z pierwotną podatnością (CVE-2021-41773) w wersji 2.4.49, różnica polega jedynie na innej kodowaniu znaków „..”. W szczególności w wersji 2.4.50 zablokowano możliwość użycia sekwencji „” do kodowania kropki, ale pominięto możliwość podwójnego kodowania — przez podanie sekwencji „%”. serwer zdekodował ją do „”, a następnie do „.”, co oznacza, że znaki „..\/” można było zakodować jako „.%\/”.
Jeśli chodzi o wykorzystanie luki poprzez wykonanie kodu, jest to możliwe przy włączeniu mod_cgi i wykorzystaniu podstawowej ścieżki, w której dozwolone jest wykonywanie skryptów CGI (na przykład, jeśli włączona jest dyrektywa ScriptAlias lub ustawiony jest flaga ExecCGI w dyrektywie Options). Obowiązkowym wymogiem dla udanej przeprowadzenia ataku jest również wyraźne przyznanie w ustawieniach Apache dostępu do katalogów z plikami wykonywalnymi, takimi jak /bin, lub dostęp do głównego katalogu FS „/”. Ponieważ zazwyczaj taki dostęp nie jest przyznawany, atak oparty na wykonaniu kodu ma niewielkie zastosowanie w rzeczywistych systemach.
Nadal aktualna jest jednak atak mający na celu uzyskanie zawartości dowolnych plików systemowych i kodów źródłowych skryptów webowych, które są dostępne do odczytu przez użytkownika, pod którym uruchomiono serwer http. Aby przeprowadzić taki atak, wystarczy, że na stronie istniałby katalog skonfigurowany przy użyciu dyrektyw „Alias” lub „ScriptAlias” (DocumentRoot nie wystarcza), taki jak „cgi-bin”.
Przykład exploita, który pozwala na wykonanie narzędzia „id” na serwerze: curl ‘http:\/\/192.168.0.1\/cgi-bin\/.%\/.%\/.%\/.%\/.%\/bin\/sh’ —data ‘echo Content-Type: text\/plain; echo; id’ uid=1(daemon) gid=1(daemon) groups=1(daemon)
Przykład exploitów umożliwiających wyświetlenie zawartości \/etc\/passwd oraz jednego z web-skryptów (aby wyświetlić kod skryptów jako bazowy, należy wskazać katalog określony przez dyrektywę „Alias”, dla którego nie włączono wykonania skryptów): curl ‘http:\/\/192.168.0.1\/cgi-bin\/.%\/.%\/.%\/.%\/.%\/etc\/passwd’ curl ‘http:\/\/192.168.0.1\/aliaseddir\/.%\/.%\/.%\/.%\/.%\/usr\/local\/apache2\/cgi-bin\/test.cgi’
Problem dotyczy głównie ciągle aktualizowanych dystrybucji, takich jak Fedora, Arch Linux i Gentoo, a także portów FreeBSD. Pakiety w stabilnych gałęziach konserwatywnych dystrybucji serwerowych Debian, RHEL, Ubuntu i SUSE nie są podatne na te luki. Problem nie występuje, jeśli dostęp do katalogów jest wyraźnie zabroniony za pomocą ustawienia „require all denied”.
Źródło: opennet.ru
