Análisis de todos los robots.txt del Top 1 Millón del ranking de Alexa #pentesting #Python

Como ya se sabe hace tiempo, el fichero robots.txt es un auténtico incomprendido y lleva a que incluso sitios como Facebook, Gmail o WhatsApp tengan problemas con la indexación. Se ha hablado de la imposibilidad de utilizar comodines para prevenir la indexación de subrutas en determinados motores de búsqueda o ficheros con una determinada extensión, así como del poco sentido que tiene que el fichero robots.txt sea indexado por los buscadores, lo que habilita el uso de dorks para realizar hacking con buscadores.

Figura 1: Análisis de todos robots.txt del Top 1 Millón del ranking de Alexa

Si tienes un fichero robots.txt y quieres que nadie lo indexe tienes algunas alternativas pero el fichero seguirá ahí y lo que tienes que garantizar es que tu servidor esté correctamente configurado a nivel de permisos en todas las rutas, aparte de no se ofrecer ningún tipo de información confidencial bajo la premisa de que no se va a indexar o de que nadie lo va a encontrar.

Figura 2: Ficheros robots.txt prohibiendo la indexación de bases de datos

Las arañas que analizan el robots.txt pueden elegir hacer caso omiso del User-Agent: o pueden simplemente no ser arañas, sino simplemente un proceso automático curioseando para saber qué es lo que no quieres que te indexen. Durante cualquier pentest es básico mirar el robots.txt y el sitemap.xml, pero es igual de básico durante la fase de information gathering realizar pruebas de fuerza bruta contra los directorios más comunes en busca de rutas cuya seguridad se ha abandonado a la defensa por oscuridad.

Figura 3: Fichero robots.txt con mucha información jugosa

Hay muchas aplicaciones que disponen de sus propios diccionarios pero lo que realmente motiva es ir un paso más allá y tratar de encontrar tu propio diccionario para buscar Directory Index o información confidencial.

Alexa to Dictionary

AtoD (que viene de Alexa to Dictionary) es un script en Python que te permite crear tu propio diccionario basándote en qué es lo que las web más visitadas del mundo no quieren que se indexe }:F. Haciendo un barrido por todos los ficheros robots.txt de 1.000.000 de URLs y usando ambos esquemas HTTP y HTTPs, nos da como salida dos ficheros, un diccionario que contiene todas las rutas que se han encontrado como Disallowed dentro del robots.txt, ordenadas por número de apariciones, y un fichero de estadísticas para que puedas analizar lo que no quieren que veas.

Figura 4: Descarga AtoD de GitHub

Puedes modificar su configuración para decirle el número de URLs que quieres que analice tras descargar el fichero top1M desde Alexa. Inicialmente viene configurado para analizar las 1000 primeras pero te invito a que lo pruebes con diferentes configuraciones. Los resultados difieren mucho según el tamaño de la muestra va aumentando.

Figura 5: Ejecución completa de Alexa to Dictionary

Atod automatiza la siguiente secuencia:
- Descarga el fichero.
- Lo descomprime.
- Mete X procesos paralelos, ya que el sistema de multithreading en Python no es muy eficiente así que opté por usar mejor procesos.
- Cada proceso busca por el robots.txt en base a dos esquemas: HTTP y HTTPs.
- Se registra todo en un diccionario que luego es volcado a un fichero con todos los directorios no permitidos para indexación, previo postprocesado.
- Adicionalmente se construye otro fichero para estadísticas con el número de apariciones de cada una de las rutas no permitidas.
Como todo, esto toma su tiempo, analizar 2000 URLs llevará apenas un par de minutos pero si quieres intentarlo con más de 100K hay que tener paciencia.

El análisis del Millón de robots

Cómo no, yo he querido analizar todas y cada una de las URLs lo que ha resultado en 804.098 entradas después de postprocesado en mi nuevo diccionario. Y como para esto tenemos el fichero de estadísticas, aquí está mi análisis de lo que he podido encontrar como top 10 disallowed en el Top 1 millón de sitios más visitados en Internet.

Figura 6: Top 10 de URLs en los robots.txt del Top 1M de Alexa

Ya mirando el Top 10 te encuentras con cosas muy curiosas, como tecnologías que a día de hoy son poco comunes en una aplicación moderna (Common Gateway Interface), que además puede ser una puerta de entrada para ataques Shellshock, y mucho sitio con Wordpress (wp-admin, xmlrpc.php) que debería estar fortificado en Paranoid Mode. También hay muchos que no quieren que se indexe absolutamente nada (/).

La cuestión es averiguar qué tendrán realmente accesible para lo que podríamos usar nuestro nuevo diccionario quizá }:). Pero los resultados realmente curiosos llegan un poco más adelante y es que simplemente filtrando el Top 100 encontramos rutas como las siguientes:
- /user/password/
- /?q=user/password/
- /INSTALL.pgsql.txt
- /INSTALL.mysql.txt
- /installation/
- /update.php
- /profiles/
- /?q=admin/
- /api/
- /test/
Y esto es sólo por citar algunos de los que más llaman la atención. Repito de nuevo que AtoD está parametrizado inicialmente solo para las 1.000 primeras URLs de forma que si quieres ejecutarlo para más, las constantes NPROCESS y LIMIT regulan el número de procesos y las direcciones URLs a analizar respectivamente. El script no está parametrizado por línea de comandos así que  se lanza con ./atod y a correr sobre cualquier sistema que tenga Python instalado, como tu Kali Linux 2, por supuesto. El porqué no está parametrizado es sencillo, creo que no aporta nada más que complejidad al código añadir un parser para un script relativamente simple, pero si es importante para ti, tienes el código disponible para adaptarlo.

Figura 7: Configuración de parámetros en el script de AtoD

Estoy lejos de ser un experto en programación en Python por lo que soy consciente de que el código es muy mejorable pero para mí hizo bien su trabajo. Espero que te sea de utilidad. Si no lo es, no pasa nada, habrá una versión 2.0 con los códigos HTTP de respuesta, para tener mejor información de esos directorios y saber si está el documento, hay una redirección, o se produce un error en el servidor al acceder. Veremos qué sale en el siguiente artículo

Desde aquí puedes descargar la última versión de AtoD. Sólo necesitas el script. Los ficheros comprimidos son mis resultados contra el total de URLs pero te invito a que uses el script y obtengas los tuyos propios.

Autor: Miguel A. Hernández Ruiz
https://plusplussecurity.com

Via: www.elladodelmal.com
Análisis de todos los robots.txt del Top 1 Millón del ranking de Alexa #pentesting #Python Análisis de todos los robots.txt del Top 1 Millón del ranking de Alexa #pentesting #Python Reviewed by Zion3R on 1:02 Rating: 5