Durante la semana pasada me tocó impartir la sesión dedicada a Pentesting con técnicas OSINT - Open Source Intelligence - en el curso de Ciberdefensa, donde hago un resumen del contenido que recopilé en el libro de Pentesting con FOCA. Tanto en este libro, como en la sesión del curso, procuro contar qué busca FOCA, de dónde, por qué y para qué se buscan esas cosas. Entre los temas que cuento está por supuesto la explotación del módulo mod_negotiation en los servidores Apache, que permiten escanear el contenido de sitios web en busca de backups utilizando el mensaje de error de Multiple Choices.
Este método - que puse en la lista de las 20 técnicas para listar ficheros de un sitio web, está en la lista de 10 cosas que puedes revisar en la seguridad de tu Apache y por supuesto está tratado en el libro de Hardening GNU/Linux - permite conocer qué otros ficheros en el mismo directorio tiene el mismo nombre, pero diferente extensión, cuando se solicita un archivo que no se encuentra en ese directorio. Es decir, cuando se produce un error de 404 en lugar de dar una página con la excepción se muestra una lista de archivos similares al solicitado.
La idea es que una vez que se descubre que un servidor tiene habilitado el módulo de mod_negotiation, lo que hay que hacer es solicitar todos los archivos que se conocen sin extensión. Es decir, si hay un archivo indexado en Google con el nombre index.hml, se pide index. y así sucesivamente. Esto se debe hacer también con los directorios, donde como están los enlaces . y .. se debe pedir cualquier fichero que empiece por dos puntos. Es decir, ..FOCA o ..Whaetever, y se conseguirá la lista de archivos que comiencen por un punto.
La lista de sitios con este módulo activado es grande, pero para probarlo basta con poner ..FOCA - por ejemplo - en el dominio principal y ver el mensaje. Un sitio famoso con este módulo es www.w3.org, donde puedes obtener la lista de ficheros en el sitio principal.
Figura 1: mod_negotiation activado en w3c.org |
Buscando directorios en Google es posible encontrar muchos directorios en www.w3.org, como el subdirectorio TR. Probar el mismo mensaje en TR dará la lista de ficheros que comienzan por . en este nuevo directorio.
Figura 2: Lista de ficheros que comienzan por . en /TR/ |
Haciendo esta prueba se puede ver que aparecía el archivo .cvsingnore, así que era fácil imaginar que existía el directorio CVS, aunque como se puede ver no está indexado en Google para nada.
Figura 3: El directorio /TR/CVS no aparece indexado en Google |
Probándolo a capón se puede ver que el mensaje de error que se obtiene es de que no hay privilegio para obtener el contenido de este directorio, pero al menos sabemos que existe.
Figura 4: Privilegios insuficientes para hacer el listado del directorio |
Sin embargo, como los archivos por defecto que se crean son siempre Entries, Root y Repository y además el módulo mod_negotiation de este Apache está activado, en primer lugar se puede ver que existen dichos pidiéndolos directamente. Aunque su contenido es poco sí que es posible acceder a una ruta local del servidor y a un servidor nuevo donde se ubica el CVS.
Figura 5: Contenidos de los ficheros Entries, Repository y Root |
Y en segundo lugar, como pudiera ser que existiera alguna copia de estos archivos, se puede hacer el mismo truco de pedir uno de estos archivos pero con otra extensión, o sin ella. En este caso se puede ver que solicitando Entries. aparece otro archivo con otra extensión. Curioso, aunque el archivo está vacío.
Figura 6: Error de Multiple Choices para Entries. |
Volviendo al directorio TR para evaluar el resto de los archivos, aparecen otros bastante curiosos, como !dtbbos, que al abrirlo da la sorpresa de ser un volcado de directorio completo con todos los archivos y directorios de esta carpeta. Es decir, se puede ver el contenido completo de esta carpeta.
Figura 7: El archivo .!dtbbos tiene un ls -al de la carpeta TR |
He intentado ver de dónde puede provenir este archivo, pero no lo tengo muy claro. Si alguien tiene pistas, se agradece. Lo cierto es que entre la lista de los archivos hay muchos .old, muchos que acaban en ~ y muchos con la doble extensión .1. Vamos, copias de seguridad de archivos.
Como también hay un directorio llamado /old/ podemos hacer una petición a /TR/old/..foca para ver qué hay en ese directorio, y ahí tenemos otra lista de ficheros curioso, como uno con extensión .wmd.
Figura 8: Archivos que comienzan con . en el directorio /TR/old/ |
En él hay información que puede ser útil para un atacante, como son rutas locales del servidor web. De nuevo una fuga de información que podría utilizarse en un ataque.
Figura 9: Contenido del archivo .dir3_0.wmd |
Como se puede ver, el módulo de mod_negotiation puede servir para acabar encontrando una buena cantidad de juicy files de los servidores web, solo por la falsa sensación de seguridad que puede dar a un administrador el que un archivo no esté enlazado en la página principal o indexado en un buscador.
Saludos Malignos!