
CVE-2021-41773 | Apache HTTP Server 2.4.49 ist anfällig für Path-Traversal- und Remote-Code-Execution-Angriffe.
CVE-2021-41773 Gemäß der National Vulnerability Database (NVD) ist CVE-2021-41773 anfällig für Path Traversal und Remote Code Execution Angriffe.
Die Path-Traversal-Schwachstelle wurde durch die neue Codeänderung zur Pfadnormalisierung eingeführt, d.h. um unerwünschte oder gefährliche Teile aus dem Pfadnamen zu entfernen,
war jedoch nicht ausreichend, um verschiedene Kodierungstechniken der Path-Traversal-Zeichen "dot-dot-slash (../)" zu erkennen. Um Path-Traversal-Angriffe zu verhindern, löst die Normalisierungsfunktion, die für die Auflösung URL-kodierter Werte aus dem angeforderten URI zuständig ist, Unicode-Werte nacheinander auf. Wenn also der zweite Punkt als %2e URL-kodiert wird, erkennt die Logik %2e nicht als Punkt und dekodiert ihn daher nicht. Dadurch werden die Zeichen ../ in .%2e/ umgewandelt und die Prüfung umgangen.
Zusammen mit der Umgehung der Path-Traversal-Prüfung ist ein Apache-HTTP-Server nur dann anfällig, wenn die HTTP-Server-Konfiguration entweder die Directory-Direktive für das gesamte Dateisystem des Servers als Require all granted enthält oder die Directory-Direktive vollständig in der Konfigurationsdatei fehlt.
Daher ermöglicht die Umgehung der Dot-Dot-Prüfung als .%2e in Kombination mit einer falsch konfigurierten Directory-Direktive einem Angreifer, beliebige Dateien wie z.B. passwd aus dem Dateisystem des anfälligen Servers zu lesen.
Während CVE-2021-41773 zunächst als Path-Traversal- und Dateioffenlegungsschwachstelle dokumentiert wurde, ergab die weitere Forschung, dass die Schwachstelle weiter ausgenutzt werden kann, um eine Remote Code Execution durchzuführen, wenn das mod_cgi-Modul auf dem Apache-HTTP-Server aktiviert ist. Dies ermöglicht es einem Angreifer, die Path-Traversal-Schwachstelle auszunutzen und über HTTP-POST-Anfragen beliebige Binärdateien auf dem System aufzurufen.
auf dem Apache-HTTP-Server deaktiviert, indem die obige Zeile in der Konfigurationsdatei auskommentiert wird. Wenn mod_cgi aktiviert ist und die Konfiguration "Require all granted" auf die Directory-Direktive des Dateisystems angewendet wird, kann ein Angreifer remote Befehle auf dem Apache-Server ausführen.
docker run -dit --name Apache -p 83:80 b0x
#In den Container einloggen und folgendes ausführen
cp /bin/sh /usr/bin/
ruby CVE-2021-41773.rb
# c c wWw wWw -2021-41773
# (OO) (O) (O) wWw
# ,'.--.) ( / ) (O)_
# / //_|_ / / .' __)
# | ___ / / ( _)
# '. ) `--' / `.__)
# `-.' `-..-'
# Author:Habib
# ruby CVE-2021-41773.rb target_url dir command
# ruby CVE-2021-41773.rb http://localhost bin/sh whoami
ruby CVE-2121-41773.rb http://localhost:83
Target: http://localhost:83 is vulnerable
Command:
ruby CVE-2121-41773.rb http://localhost:83 bin/sh id Target: http://localhost:83 is vulnerable
Command: uid=1(daemon) gid=1(daemon) groups=1(daemon)