Cloudflare – ¿Lo has instalado bien?

Hace unos días estaba leyendo hilos en ForoCoches y me paré en uno de un shurmano que nos decía que tenía un sitio web sobre un juego online y que daba 50€ a quién consiguiese sacarle algún usuario y contraseña, vamos que quería una auditoria low-cost.

Lo cierto es que era domingo por la tarde y no tenía mucho que hacer (mejor dícho no tenía ganas de hacer mucha cosa) así que decidí echar un vistazo, y así es como descubrí un ejemplo de como no debe implementarse un WAF en una página web.

La web en cuestión es andromeda-serv.com, de lo primero que vi es que utilizaba cloudflare, así que pensé… ¡mierda! aunque sea vulnerable el WAF me va a parar… pero antes de nada decidí hacer la prueba de fuego…

Para entender esta prueba hay que entender como funciona cloudflare, así que vamos a ello… cuándo te conectas a cualquier web que no tenga cloudflare instalado los pasos que se llevan a cabo son:

  • Haces una petición al DNS para que te de la IP del servidor
  • Haces una petición a la IP del servidor preguntando por ese dominio
  • El servidor procesa la petición (consultas a base de datos, sesiones, etc…) y te devuelve el HTML resultante

Y cuándo está cloudflare lo que ocurre es:

  • Haces una petición al DNS para que te de la IP del servidor
  • El DNS en lugar de darte la IP del servidor, te devuelve la IP de cloudflare
  • Haces una petición a la IP de cloudflare preguntando por ese dominio
  • Cloudflare analiza esa petición, y si no hay nada malo, se la reenvía al servidor
  • El servidor procesa esa petición y te acaba devolviendo el HTML resultante

Entonces… ¿qué ocurre si tu haces la petición directamente a la IP del servidor? pues que ya no pasa por cloudflare y aunque estés haciendo algo malo no va a haber nada que te lo impida.

Pero si tu haces un ping a ese dominio la IP que te devuelve es la IP de cloudflare, ¿como sabes la IP del servidor? aquí no hay una técnica 100% fiable, pero en este caso fue sencillo, esa web no «nació» con cloudflare instalado, sino que se puso más tarde, así que lo que hice fue consultar ViewDNS.info en el apartado de IP History:

Como se puede ver en la imagen anterior, nos aparece la IP a la que apuntaba ese dominio unos meses atrás, probablemente la migraron y en esa migración estuvo sin cloudflare algún tiempo.

En este caso al poner la IP en el navegador ya nos lleva a la web, esto es porqué el servidor web no tiene ninguna página más, en caso de que no nos lleve a la web que nos interesa, o que simplemente queramos poder acceder por dominio pero sin cloudflare, solo hay que añadir la resolución al archivo hosts de nuestro equipo.

Llegados a este punto ya me puse a tirar SQLMap, pero lo cierto es que no hubo suerte y la cosa quedó ahí.

Pero y entonces… ¿como evitamos que alguien que consulte ese histórico del DNS pueda evitar pasar por el WAF? es muy sencillo, lo único que hay que hacer bien en el .htaccess, bien en el firewall del servidor, o preferiblemente en algún firewall perimetral que tengamos lo que tenemos que hacer es limitar las peticiones a las IPs de Cloudflare.

Deja un comentario