entidad externa XML - enumeración de archivos local (pregunta de evaluación de impacto)

2

Me encontré con un par de solicitud-respuesta XML al probar una aplicación web e intenté inyectar cargas útiles XXE. Tenga en cuenta que, en este caso, ningún parámetro XML enviado en la solicitud se reflejó en la respuesta. Sin embargo, como la solicitud y la respuesta estaban en XML, decidí probar las cargas útiles XXE.

Aunque no pude incluir ningún archivo local del servidor en la respuesta, recibí diferentes respuestas HTTP para la solicitud que contenía nombres de archivos válidos e inválidos. p.ej.

<!ENTITY file SYSTEM "file:///etc/hosts" (valid file) 
<!ENTITY file SYSTEM "file:///etc/hosts1" (invalid file)

Para cada uno de los casos anteriores se recibieron diferentes respuestas HTTP. El nombre de archivo válido devolvió una respuesta XML sin ningún error y el nombre de archivo no válido devolvió un error de análisis XML que indica claramente "archivo no encontrado".

He terminado con mi informe para la actividad y he informado de este problema como "Enumeración de nombre de archivo debido a errores de análisis de XML". Sin embargo, tenía curiosidad acerca de las diferentes formas en que esta vulnerabilidad puede ser explotada para obtener más información sobre el servidor back-end y me gustaría recibir cualquier entrada para evaluar el impacto técnico de esta vulnerabilidad.

    
pregunta Shurmajee 11.10.2015 - 19:54
fuente

1 respuesta

1

No es una respuesta completa, pero vale la pena señalar que XXE a menudo puede ser un error DoS, así como un error de divulgación de información. Intente leer desde /dev/zero o \.\pipe\atsvc o cualquier otro tipo de tubería / socket / archivo especial que nunca termina o simplemente se bloquea para siempre. Por supuesto, si la XXE funciona, por lo general también puede hacer una expansión recursiva de la entidad (también conocida como Billion Laughs , que también es bastante fácil DoS.

XXE también se puede usar para pivotar un escaneo de red detrás del firewall del servidor. No es necesario especificar un esquema de URI file: ; http: , https: , ftp: , y así sucesivamente también funcionan. También puede especificar puertos no estándar, lo que es útil cuando busca cosas como ciertas interfaces de administración. Esto es, por supuesto, más útil cuando tiene acceso a los contenidos de esas URL, pero el simple hecho de saber qué servicios se prestan a menudo es útil.

Es muy extraño que no hayas podido obtener el contenido del archivo. Por lo general, eso es posible de una forma u otra, ya sea a través de un mensaje de error o especificando el contenido del archivo como entrada suministrada por el usuario y luego leyéndola usando otra función (como en "por qué, sí, mi dirección de casa es el contenido de su clave privada TLS! ").

    
respondido por el CBHacking 11.10.2015 - 23:29
fuente

Lea otras preguntas en las etiquetas