AXFR: Una vulnerabilidad que pasa desapercibida ...

Las transferencias de zona en los servidores de DNS en simples palabras se usa para replicar lo que hay en un maestro hacia su escalvo. Si esta caracteristica se encuentra mal configurada podria ser usada por un atacante para obtener información sensible sobre el dominio.
Un servidor maestro debe filtrar por dirección IP qué esclavos pueden realizar transferencias, si esto no se configura correctamente entonces cualquier atacante podría consultar por las zonas de los dominios que administra.

imagen: https://getglue.com/topics/p/dns_zone_transfer

Las transferencias de zona se realizan mediante AXFR, que según su descripción:

Las siglas AXFR hace referencia a la transferencia por zonas de un DNS primario a un DNS secundario o de un DNS primario a un server maestro y de un server maestro a un DNS secundario, si llegara a existir algún problema de configuración o actualización del software de cualquiera de estos servidores se podrían explotar una serie de vulnerabilidades como por ejemplo un DoS y la integridad y confidencialidad de la base de datos del DNS primario se verían comprometidas, se estima que alrededor de un 60% de los servidores DNS en internet son vulnerables.

(Fuente: https://es.wikipedia.org/wiki/AXFR)

Tambien exsite la transferencia de zona incremental (IXFR).

··· Leer más ···

Esta técnica es muy útil cuando realizamos un pentesting ya que nos puede entregar información sobre los subdominios, especialmente si encontramos un dominio relacionado con "testing", "devel", o algo relacionado, ya que podriamos acceder a sistemas que se encuentren en desarrollo, que a diferencia con los que se encuentran en producción, suelen tener menos restricciones y son más faciles de explotar.

Como ejemplo, vamos a tomar el dominio "defensa.gob.es" y vamos a consultar si alguno de sus dns tiene habilitada la transferencia de zona.

Los DNS asociados a ese dominio son:

  1. ns01.mde.es
  2. ns02.mde.es
  3. ns03.mde.es

Probando uno por uno solo el ns02 es vulnerable:

Trying Zone Transfer from ns01.mde.es: Failed.
Trying Zone Transfer from ns02.mde.es: Success.
Trying Zone Transfer from ns03.mde.es: Failed

Entonces obtenemos la zona:

PRE0

Y solo por probar, intentamos hacer transferencia de zona de "mde.es" usando el mismo nameserver:

PRE1

En algunos casos nos encontramos con la sorpresa de que existen subdominios que apuntan a direcciones IP locales, por ejemplo "devel.dominio.com -> 10.0.0.55" pero sabemos (o creemos saber) que justo ese subdominio comparte alojamiento con sitios que estan en produccion, por ejemplo "dominio.com -> alguna.ip.publica.xxx", basta con que forcemos que localmente nos resuelva "devel.dominio.com" a esa IP publica y logramos entrar a una zona supuestamente de acceso local.

Comentarios (17)

newedge
Hola Zerial

no entiendo el ultimo parrafo: "En algunos casos nos encontramos con la sorpresa de que existen subdominios que apuntan a direcciones IP locales, por ejemplo “devel.dominio.com -> 10.0.0.55″ pero sabemos (o creemos saber) que justo ese subdominio comparte alojamiento con sitios que estan en produccion, por ejemplo “dominio.com -> alguna.ip.publica.xxx”, basta con que forcemos que localmente nos resuelva “devel.dominio.com” a esa IP publica y logramos entrar a una zona supuestamente de acceso local."

En concreto no entiendo cuando dices "forzar a que localmente nos resuelva devel.dominio.com a esa IP publica"

Te refieres a hacer:

dig @name_server devel.dominio.com

¡Animo con el blog!
Zerial
Hola newedge!

Con ese ultimo parrafo me refiero a lo siguiente:

Imagina tienes 1 servidor con dos virtualhost, uno "sitio.com" y el otro "test.prueba.com", el dns.sitio.com resuelve lo siguiente:

sitio.com -> cualquier.ip.publica.xxx
test.sitio.com -> 192.168.0.5 (ip privada)

Cuando alguien de afuera intenta ingresar a test.sitio.com, resolvera a una ip privada, por lo que no podra acceder... Pero, que pasa si editas tu archivo /etc/hosts agregando:

test.sitio.com -> la.ip.publica.de.sitio.com

??

Pues, cuando ingreses a http://test.sitio.com podras verlo!

A eso me refiero con "forzar"... editar tu archivo hosts para que el dominio resuelva a la ip que tu deseas.


saludos!
newedge
Ok, ya se lo que quieres decir!

Muchas gracias
agugliotta
Hola Zerial, te hago una consulta porque justamente hace unos meses agarre python para boludiar basicamente y hacer un par de scripts lo que surgio hacer una trasferencia de zona para averiguar los subdominios. Vi que tenian que tener habilitada la opciones "allow-transfer" en el archivo named.conf por lo tanto para testear busque paginas en google haciendo "allow-transfer" filetype:conf y funciono bastante bien. Ahora mi pregunta es: solamente con cambiando ese archivo desabilita la transferencia de zona? Es igual para IXFR? .

Saludos
W2P
Interesante artículo zerial, muy poca gente escribe sobre el protocolo dns y sus vulnerabilidades, por cierto, sería posible realizar otros ataques aparte del que has descrito en el texto?

Saludos! y sigue posteando cosas interesantes!
Pato
Hola Zerial,

Muy buena información ;)

Una pregunta acerca de tu blog:

¿Tienes pensado habilitar el +1 de google?
Zerial
agugliotta: Respecto a deshabilitar la transferencia de zona, por lo general se habilita pero se ponen restricciones por IP, que solo un esclavo (el dns secundario) pueda realizar esas transferencias, Tambien puedes deshabilitar y no permitir el AXFR, pero no te servira para tener un dns secundario como esclavo, a menos que cuando modifiques un registro en el master, lo modifiques a mano en el esclavo.

Respecto al IXFR, a diferencia del AXFR es que es una "transferencia" incremental, que requiere un "Serial" (el tipico serial que se le ponen a las zonas) y te transfiere solo las zonas que se han modificado desde el ultimo serial.

Te dejo estos links de apoyo:

RFC1995 - Sobre IXFR: http://www.normes-internet.com/normes.php?rfc=rfc1995&lang=es
Zerial
W2P: Hola! Pues, existen varios tipos de ataques a nivel de este protocolo, como por ejemplo dns spoofing, pero es a nivel de redes. Tambien hay otros usos que le podrias dar a un servidor de nombres mal configurado y que te permita hacer AXFR, como un DoS, ya que el servicio corre en el puerto 53/UDP y no tiene control de flujo y otras "propiedades" como el TCP (http://es.wikipedia.org/wiki/User_Datagram_Protocol)
Zerial
Pato: No habia considerado ni se me habia ocurrido ponerle ese boton, pero ahora que lo mencionas... vere como puedo hacerlo :P
seth
Que programa usaste para probar los tres dns?
Zerial
hola seth: Use un script que hice. El script saca los DNS del dominio y luego uno por uno busca hacer un AXFR del dominio especificado
seth
lo pasas?
Zerial
seth: le corregiré unas cosas y lo subo, te aviso
Israel L
Buen artículo.

Al que esté de ocioso que pruebe con adsl.terra.cl y similares :)

Saludos
Eddy_TI
Excelente información, muy util.
tty0
sed -i 's/escalvo/esvlavo/g'

Excelente artículo :)
r0st3r
wena compa, buena info ;)

saludos.

Deja un comentario