Tabla de Contenidos
Estructura de la web
Notas del curso Hacking ético: descubriendo vulnerabilidades en aplicaciones web
Archivos por defecto
Proporcionan información sobre directorios y subdirectorios de la web así como la tecnología utilizada. Ejemplos:
Robots.txtSitemap.xmlHumans.txtSecurity.txt
Robots.txt
El fichero Robots.txt se encuentra normalmente situado en la raíz del servidor cuya función es evitar que los buscadores de contenido puedan indexar directorios, subdirectorios, funcionalidades de la propia aplicación… de manera pública.
En el ejemplo siguiente podemos adivinar que se trata de un WordPress:
Sitemap.xml
Security.txt
Humans.txt
Podría servirnos para preparar futuros ataques de ingeniería social con la información que se incluye en ocasiones en este fichero:
Descubrimiento de directorios
Métodos HTTP
Métodos soportados por el servidor HTTP:
OPTIONS: permite saber qué métodos están habilitados en el servidor.GET:POST:TRACE: obtener información sobre cookies de sesiónPUT: subir ficheros al servidorDELETE: elimina el recurso que indiquemosCONNECT:
Script en Bash para saber qué métodos soporta un servidor:
for metodo in OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT ; do echo -e "\nProbando método $metodo\n\n" echo -e "$metodo / HTTP/1.1\nHost: 192.168.1.99\nConnection: close\n\n" | nc 192.168.1.99 80 | head sleep 2 done
Descubrimiento por fuerza bruta
Observar el método HTTP devuelto tras solicitar un recurso web al servidor:
GET https://server.es/admin/login.php
El recurso existe.
En otros casos:
GET https://server.es/admin/facturas/factura.pdf
404: el recurso no existe403: no estamos autorizados para acceder a ese recurso, así que la aplicación o el servidor cuenta con una parte autenticada.302: el recurso existe, pero nos hace una redirección.
Basándonos en esta filosofía, lo que necesitaremos será un diccionario los suficientemente completo de directorios y subdirectorios para probarlos y observar los códigos de error.
Descubrimiento de directorios: Descubrimiento por fuerza bruta
Algunas herramientas para el descubrimiento de directorios usando fuerza bruta:
- Dirbuster: Interfaz gráfica escrito en JAVA (https://tools.kali.org/web-applications/dirbuster). Incluida en Kali Linux.
- dirsearch: línea de comandos y escrito en Python (https://github.com/maurosoria/dirsearch). Recomendado por el tutor del curso.
- Gobuster: línea de comandos y escrito en Golang (https://github.com/OJ/gobuster)
Ejemplo de uso de dirsearch:
Kali Linux dispone de diccionarios en /usr/share/wordlists que podemos usarlos con dirsearch por ejemplo:
dirsearch -u http://servidor -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Crawling
- Análisis del comportamiento de la página web.
- URLs presentes en el código fuente de la página.
- Redirecciones.
Con el crawling, se revisa el código fuente de la página web para encontrar enlaces en ella.
Herramientas:
- Burp Suite
- ZapWebCrawling: alternativa de código de abierto de Burpsuite (https://www.zaproxy.org/)
- Hakrawler: https://github.com/hakluke/hakrawler
Ejemplo usando Hakrawler:
echo http://servidor | hakrawler -d 3
Crawling: Descubrimiento por fuerza bruta vs Crawling
| Fuerza bruta | Crawling |
|---|---|
| Necesidad de un diccionario de rutas. | Necesidad de definir un nivel de profundidad |
| Posibilidad de encontrar una ruta si esta se encuentra en el diccionario. | Solo se descubre lo que aparece en el código fuente |
| Elevado numero de peticiones (posible DoS o bloqueo). | Pocas peticiones a recursos existentes. |
| Tiempo de ejecución elevado | Tiempo de ejecución bajo. |
Fingerprinting
Obtención de información a partir de lo que la aplicación nos muestra.
Comentarios en el código fuente
- Comentarios en el código fuente.
- Tecnologías utilizadas.
- Librerías de terceros.
- Funcionalidades posteriores.
- Lógica de la aplicación en el lado del cliente.
Burp Suite cuenta con una opción para encontrar todos los comentarios de una página web que estemos analizando:
Metadatos
Datos que dan información sobre un fichero. Por ejemplo, podríamos saber:
- Última fecha de modificación.
- Usuario que ha creado el archivo.
- Usuario que ha modificado por última vez.
- Software utilizado.
- Sistema operativo en el que se ha creado el archivo.
La herramienta FOCA es útil para analizar metadatos:
Respuestas del servidor
Hay diferentes cabeceras que podemos utilizar para lograr información:
ServerX-Powered-ByEtag- Software utilizado.
- Cabeceras propias(WordPress)
- Cookies de sesión.
- Extensiones de ficheros.
Captura de Burp Suite al realizar una petición y obtener la respuesta:
Mensajes de error
En los mensajes de error de la aplicación web se puede obtener información como rutas internas, tecnologías utilizadas y posibles vulnerabilidades de la aplicación.
¿Cómo podemos forzar errores?
- Acceder a urls sin autorización.
- Provocar errores de tipado en los campos de la aplicación (como comparar un string con un entero).
- Inyección de caracteres especiales.
- Modificación parcial o total de las peticiones realizadas al servidor.
En la siguiente captura, al provocar un error, obtenemos por ejemplo que el servidor es un IIS:
Herramientas y extensiones
Whatweb
Wappalyzer
Funciona como add-on para el navegador web. Tras navegar por una web nos dará todo tipo de información sobre la misma:
Conclusiones
- Revisar archivos por defecto.
- Obtener la estructura de la web descubriendo los directorios y subdirectorios.
- Detectar posibles puntos de entrada (paneles de administración, variables, campos de texto, etc).
- Obtener información sobre el servidor y la tecnología que lo conforma.




















