XML external entity (XXE) injection

Identificación XXE

General

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <name>MrW0l05zyn</name>
    <email>[email protected]</email>
    <tel>112233</tel>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [<!ENTITY xxe "XXE PoC">]>
<root>
    <name>&xxe;</name>
    <email>[email protected]</email>
    <tel>112233</tel>
</root>

Out-of-band (OOB)

Máquina atacante.

Lectura de archivos

Lectura de archivo general

Lectura de archivo id_rsa

Lectura de archivo id_rsa correspondiente a llave privada de usuario del servicio SSH (Secure SHell).

Lectura de archivo PHP

Lectura de archivo utilizando CDATA

Creación de archivo DTD (Document Type Definition).

Habilitación de servidor HTTP para compartir el archivo xxe.dtd.

Lectura de archivo.

Es posible que no podamos leer algunos archivos (como index.php), ya que el servidor web evitaría un ataque de DOS causado por la autorreferencia de archivo/entidad (es decir, bucle de referencia de entidad XML).

Lectura de archivo basado en error

Creación de archivo DTD (Document Type Definition).

Habilitación de servidor HTTP para compartir el archivo xxe.dtd.

Lectura de archivo.

Lectura de archivo basado en XInclude

Lectura de archivo out-of-band (OOB)

HTTP

Creación de archivo DTD (Document Type Definition).

Habilitación de servidor PHP.

Lectura de archivo.

PHP (protocol)

Creación de archivo DTD (Document Type Definition).

Creación de archivo index.php.

Habilitación de servidor PHP.

Lectura de archivo.

XML external entity (XXE) injection a Remote Code Execution (RCE)

Wrapper expect://

Creación de webshell.

Habilitación de servidor HTTP para compartir el archivo webshell.php.

Ejecución de cURL para descargar archivo webshell.php en el servidor.

Ejecución de comandos.

Última actualización

¿Te fue útil?