Herramientas de usuario

Herramientas del sitio


informatica:seguridad:cursos:hacking_etico_descubriendo_vulnerabilidades_en_aplicaciones_web:estructura_web

Estructura de la web

Archivos por defecto

Proporcionan información sobre directorios y subdirectorios de la web así como la tecnología utilizada. Ejemplos:

  • Robots.txt
  • Sitemap.xml
  • Humans.txt
  • Security.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

Similar a Robots.txt, pero para aplicaciones escritas en XML.

Security.txt

Podemos obtener información de directorios e incluso direcciones de contacto:

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ón
  • PUT: subir ficheros al servidor
  • DELETE: elimina el recurso que indiquemos
  • CONNECT:

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 existe
  • 403: 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:

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:

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:

  • Server
  • X-Powered-By
  • Etag
  • 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

Mira el código fuente de la página, cabeceras…

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.
informatica/seguridad/cursos/hacking_etico_descubriendo_vulnerabilidades_en_aplicaciones_web/estructura_web.txt · Última modificación: por tempwin