Ein neuer Angriffsvektor auf den Apache HTTP-Server wurde entdeckt, der in der Version 2.4.50 ungepatcht blieb und den Zugriff auf Dateien außerhalb des Root-Verzeichnisses der Website ermöglicht. Darüber hinaus fanden Forscher einen Weg, der bei bestimmten nicht standardmäßigen Einstellungen nicht nur das Lesen von Systemdateien, sondern auch die Fernausführung eigenen Codes auf dem Server zulässt. Das Problem tritt nur in den Versionen 2.4.49 und 2.4.50 auf; ältere Versionen sind nicht betroffen. Um die neue Schwachstelle zu beheben, wurde umgehend das Update Apache httpd 2.4.51 veröffentlicht.
По своей сути новая проблема (CVE-2021-42013) полностью аналогична изначальной уязвимости (CVE-2021-41773) в 2.4.49, разница лишь в иной кодировке символов «..». В частности, в выпуске 2.4.50 была заблокирована возможность использования последовательности «%2e» для кодирования точки, но упущена возможность двойного кодирования — при указании последовательности «%%32%65» der Server декодировал её в «%2e», а затем в «.», т.е. символы «../» для перехода в предыдущий каталог можно было закодировать как «.%%32%65/».
Was die Ausnutzung von Schwachstellen durch Codeausführung betrifft, ist dies möglich, wenn mod_cgi aktiviert ist und ein Basisverzeichnis verwendet wird, in dem die Ausführung von CGI-Skripten erlaubt ist (z. B. wenn die Direktive ScriptAlias aktiviert ist oder das Flag ExecCGI in der Options-Direktive gesetzt ist). Eine weitere Voraussetzung für den erfolgreichen Angriff ist die explizite Bereitstellung des Zugriffs auf Verzeichnisse mit ausführbaren Dateien, wie z. B. /bin, in den Apache-Einstellungen, oder der Zugriff auf das Root-Verzeichnis „/“. Da dieser Zugang in der Regel nicht gewährt wird, ist ein Codeausführungsangriff in realen Systemen kaum praktikabel.
Die Bedrohung durch Angriffe zur Auslesung beliebiger Systemdateien und Quelltexte von Web-Skripten, die für den Benutzer, unter dem der HTTP-Server läuft, lesbar sind, bleibt jedoch bestehen. Für einen solchen Angriff reicht es aus, dass auf der Website ein Verzeichnis vorhanden ist, das mit Hilfe der Direktiven „Alias“ oder „ScriptAlias“ konfiguriert wurde (DocumentRoot ist nicht ausreichend), wie zum Beispiel „cgi-bin“.
Beispiel eines Exploits, der es ermöglicht, das Tool „id“ auf 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’
Das Problem betrifft hauptsächlich kontinuierlich aktualisierte Distributionen wie Fedora, Arch Linux und Gentoo sowie Ports von FreeBSD. Pakete in stabilen Zweigen konservativer Server-Distributionen wie Debian, RHEL, Ubuntu und SUSE sind nicht anfällig für diese Schwachstelle. Das Problem tritt nicht auf, wenn der Zugriff auf Verzeichnisse ausdrücklich mit der Konfiguration „require all denied“ verweigert wird.
Quelle: opennet.ru
