Diferencia entre las entidades externas XML y los ataques de inclusión remota de archivos

1

Estaba estudiando sobre el ataque de entidades externas XML y el ataque de inclusión remota de archivos.

Según mi entendimiento, el ataque de entidades externas XML es donde el analizador XML en la aplicación web tiene la opción de entidades externas habilitadas y el atacante puede analizar un XML externo desde un servidor remoto y ejecutar comandos o leer archivos del sistema local.

Si bien el ataque remoto de inclusión de archivos es donde el atacante puede hacer que el sistema ejecute un archivo que se encuentra en un servidor remoto y el contenido de este archivo también puede ser malicioso y el atacante puede acceder a los archivos a nivel del sistema o incluso Instala una puerta trasera usando esta vulnerabilidad.

No puedo diferenciar entre el ataque de entidades externas XML y el ataque de inclusión remota de archivos, ya que ambos ataques significan que la ejecución remota de un archivo puede provocar la pérdida de información.

    
pregunta Skynet 27.01.2018 - 20:37
fuente

1 respuesta

1

El lenguaje de programación más notorio para la inclusión de archivos remotos es PHP. El siguiente es el código de ejemplo de php para la vulnerabilidad de inclusión remota de archivos en PHP del artículo " Vulnerabilidad de Inlucsion de Archivos ". En este ejemplo, se incluye el código de un servidor externo, por lo que es ejecutado por la aplicación vulnerable. La inclusión de archivos remotos es una vulnerabilidad de clase de ejecución remota de código.

<?php
   if ( isset( $_GET['language'] ) ) {
      include( $_GET['language'] . '.php' );
   }
?>

Una vulnerabilidad XXE (entidad externa XML) también puede ser similar al ejemplo anterior. El siguiente es un ejemplo de OWASP abusa del esquema de expectativa para ejecutar código. Esto es solo para PHP.

<?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE foo [ <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM "expect://id" >]>
    <creds>
       <user>&xxe;</user>
       <pass>mypass</pass>
    </creds>

El esquema de espera ejecuta el comando (en el nivel del sistema operativo, en lugar de como código PHP). PHP tiene un documento que explica cómo se debe utilizar el esquema de expectativa.

Pero si eliminamos el foco de PHP y observamos la aplicación web en general, a menudo se puede abusar de XXE para ver los archivos locales (o los archivos remotos a los que la aplicación web vulnerable tiene acceso a la red). Generalmente se realiza con la siguiente carga útil:

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE foo [  
   <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo>

Otro caso de uso indebido para XXE, es que se puede utilizar para desencadenar llamadas confidenciales a aplicaciones web internas mediante el método GET. Por ejemplo:

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE foo [  
   <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM "https://internal.hawaii.gov/api/pacom/alert" >]><foo>&xxe;</foo>

Pero la conclusión es que la inclusión de archivos remotos y XXE no están relacionados. Ambos pueden llevar a la ejecución remota de código. Pero, en general, la inclusión de archivos remotos es una ejecución remota de código y se abusa de XXE para robar datos de archivos locales (en el servidor)

    
respondido por el Dog eat cat world 28.01.2018 - 01:56
fuente

Lea otras preguntas en las etiquetas