Vulnerabilidad inyeccion XXE

 

www.onlinetis.com

La vulnerabilidad de inyección XML External Entity (XXE) es un tipo de ataque en el que un atacante puede explotar un analizador XML que procesa entidades externas. Esta vulnerabilidad ocurre cuando una aplicación web procesa documentos XML sin deshabilitar la capacidad de procesar entidades externas, lo que permite al atacante incluir archivos locales, realizar peticiones de red o incluso ejecutar código de forma remota.


¿Cómo funciona un ataque XXE?

El ataque se basa en la definición de una DTD (Document Type Definition) que incluye una entidad externa. Un atacante crea un documento XML que, al ser analizado por la aplicación, realiza una acción maliciosa.

Ejemplo 1: Exfiltración de archivos del sistema 📂

En este escenario, el atacante intenta leer un archivo sensible del servidor, como /etc/passwd en sistemas Linux.

  • Petición maliciosa del atacante:

    XML
    <?xml version="1.0"?>
    <!DOCTYPE foo [
    <!ENTITY xxe SYSTEM "file:///etc/passwd">
    ]>
    <foo>&xxe;</foo>
    
  • Explicación: El atacante define una entidad llamada xxe que, en lugar de ser un valor simple, apunta a un archivo del sistema de archivos local (file:///etc/passwd). Cuando la aplicación procesa el documento, el analizador XML sustituye &xxe; por el contenido del archivo, devolviendo el contenido sensible al atacante.


Ejemplo 2: Ataque de denegación de servicio (DoS) 💥

Los ataques XXE también pueden usarse para causar una denegación de servicio a través de un ataque conocido como "bomba XML" o "bomba de billones de risas".

  • Petición maliciosa del atacante:

    XML
    <?xml version="1.0"?>
    <!DOCTYPE lolz [
    <!ENTITY lol "lol">
    <!ELEMENT lolz (#PCDATA)>
    <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
    <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
    <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
    ... (y así sucesivamente hasta lol9)
    ]>
    <lolz>&lol9;</lolz>
    
  • Explicación: La entidad lol se define como la cadena "lol". Luego, cada entidad sucesiva se define como diez copias de la anterior. Cuando el analizador intenta procesar &lol9;, tiene que expandir millones de "lol"s, consumiendo rápidamente todos los recursos del sistema (CPU y memoria) y provocando un bloqueo.


Prevención

La prevención de los ataques XXE se basa principalmente en configurar los analizadores XML para que desactiven las funcionalidades peligrosas. Las configuraciones de seguridad recomendadas incluyen:

  • Deshabilitar DTD: La forma más segura es deshabilitar completamente el procesamiento de DTD si no es necesario.

  • Desactivar entidades externas: Si las DTD son necesarias, es crucial deshabilitar el procesamiento de entidades externas y el acceso a archivos remotos y locales.

Entradas populares de este blog

Hacking y ciberseguridad en kali linux con Fping

Hacking y ciberseguridad en kali linux con atk6-thcping6

Como utilizar Fierce en kali linux