Lathack

Herramientas Web y Fuzzing en Pentesting

Herramientas Web y Fuzzing en Pentesting

Luego de la fase de reconocimiento y escaneo, muchas veces nos encontramos con el puerto 80 en estado “open” o ciertas direcciones IP que nos redirigen hacia un sitio web. Por lo tanto, el uso de diversas herramientas web y fuzzing se vuelven fundamentales para recopilación de información en entornos de Pentesting.

En este artículo estaremos viendo diferentes herramientas para búsqueda de información como directorios, programas, versiones y todos aquellos aspectos esenciales que cumplen con el funcionamiento de un sitio web.

Whatweb

Whatweb es una herramienta de código abierto muy usada en auditorías de ciberseguridad debido a su eficaz escaneo para recopilar información con respecto a tecnologías utilizadas por un sitio web. Estas pueden ser:

  1. Gestor de contenidos.
  2. Librerías Javascript.
  3. Tipos de headers.
  4. Servidores web.
  5. Versiones de software.
  6. ID de cuentas de usuarios.
  7. Cookies.

Entre otros..

No obstante, esta herramienta cuenta con más de 700 plugins que nos permite conocer diversas funcionalidades, como las mencionadas anteriormente y aún más.

Por lo tanto, podemos realizar un escaneo pasivo y activo de la información con whatweb. Recordemos que la recolección pasiva de información, consiste en obtener la mayor cantidad de datos de forma indirecta, es decir, sin la interacción visible de la aplicación web auditada. En cambio, un escaneo de información activa consiste en interactuar de forma directa con dicho sistema web.

Veamos algunos ejemplos:

Escaneo básico

Si deseamos obtener datos “básicos” de una aplicación web, simplemente podríamos realizar la siguiente sintaxis:

#whatweb example.com

Herramientas Web y Fuzzing en Pentesting

Como podemos observar, dicha consulta nos permite ver un resumen de los encabezados HTTP, dirección IP, complementos destacados, país, cookie y tipo de script.

Escaneo avanzado

Ahora bien, para un escaneo activo y más detallado deberíamos usar la opción -v. También, lo podemos hacer mediante una dirección IP como se muestra a continuación:

Esto es una parte de la cantidad de información que me devuelve la consulta. Entonces, con este método podemos obtener información mucho mas detallada (y menos sigilosa) como puede ser todos el header, complementos instalados, cadenas del servidor, etc..

En el caso de querer saber los plugins utilizados por este comando debemos ejecutar whatweb -l.

Curl

El comando curl (Cliente URL), como su nombre lo indica, es una herramienta utilizada como cliente para verificar la conectividad y transferir datos desde y hacia un sitio web utilizando el protocolo adecuado. Estos pueden ser:

  • HTTP y HTTPS

  • TELNET

  • FTP y FTPS

  • POP3 y POP3S

  • SMB y SMBS

  • SFTP

  • SCP

  • GOPHER

  • SMTP y SMTPS

  • IMAP e IMAPS

  • LDAP y LDAPS

Su funcionamiento está basado en la librería libcurl, la cual es una herramienta open source del lado del cliente.

La sintaxis básica de este comando sería:

#curl opciones URL

Herramientas Web y Fuzzing en Pentesting

Opciones más usadas

Si queremos ver la conectavidad Request-Response de una URL simplemente podríamos hacer:

curl -v https://example.com

Con la opción -v le indicamos que nos muestre la salida en modo verbose.

Para ver las cabeceras que posee un sitio web:

curl -I https://example.com

En el caso de querer descargar algún archivo en el directorio actual de trabajo podríamos usar la opción -O. También, con la opción -o, podemos redireccionar la salida a un archivo en particular (en caso de no existir lo creará):

curl https://example.com -o test.txt

Si queremos ingresar a una URL segura cuyo certificado sea SSL/TLS puede pasar que tengamos algún error o el CN no conicide. Para estos casos podemos hacer uso del siguiente parámetro:

curl – -insecure https://example.com

Si queremos descargar un archivo a través del protocolo ftp haríamos:

curl -u user:password ftp://directory/style.css -o test.txt

Con la opción -u hemos especificado usuario y contraseña para conectarnos vía ftp.

Lo mismo podemos hacer vía el método GET:

curl -s -G http://IP_adress:Port -u user:password

Con la opción -s indicamos el modo silent y con -G transmitimos una petición GET para conectarnos a dicha URL a través de la opción -u

Para guardar las cookies de un sitio en un archivo txt podríamos realizar lo siguiente:

Herramientas Web y Fuzzing en Pentesting

Como podemos ver, hemos obtenido la cookie de la plataforma Tryhackme en el archivo mis_cookies.txt y el documento HTML que nos devuelve el servidor en index.html.

En el caso de querer enviar cookies a un sitio web:

curl – -cookies mis_cookies.txt https://example.com

Podemos enviar el User-Agent a modo de inyección a un sitio web:

Curl -A “Nuew_User_Agent” https://example.com

Esto lo especificamos detalladamente en el apartado de vulnerabilidad Logpoisoning de LFI.

wfuzz

El fuzzing (Fuzz Testing) consiste en realizar un escaneo a través de diferentes rutas o directorios aleatorios a una apliación web, con el fin de encontrar posibles vulnerabilidades o fallos de seguridad.

Esta técnica es una de las más usadas con diversas herramientas web y fuzzing en auditorías de pentesting, ya que podemos comprobar validaciones de entradas, manejo de errores, análisis estático y dinámico en aplicaciones, entre otras cosas. Esto permite abordar de forma proactiva todos los posibles ataques malintencionados a los equipos de seguridad y desarrollo en una organización, y de este modo, mejorar la seguridad y prevenir futuros fallos.

Existen muchos tipos de herramientas web para fuzzing que pueden aplicarse a sistemas operativos como aplicaciones android o iOS en pentesting. En este artículo, nos centraremos en aquellas aplicadas en sitios web.

Herramientas y parámetros

Existen diversas herramientas para fuzzing como dirb, gobuster, dirsearch, etc.. El próposito es mismo: Buscar directorios desconocidos en una aplicación web. Para esto, haremos uso de wfuzz, la cual está hecha en Python y es una de las más usadas ya que viene por defecto en algunas distribuciones como Kali Linux.

Las opciones para búsquedas de directorio más usadas son las siguientes:

– c: Permite la salida en color.

–hc: Lo usamos para especificar los código de estado que NO queremos imprimir.

-w: Especificamos la ruta con el conjunto de directorios a buscar. Estos suelen ser:

  • /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

  • /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt

  • /usr/share/wordlists/dirbuster/directory-list-lowecase-2.3-medium.txt

  • /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-small.txt

  • /usr/share/wordlists/dirbuster/directory-list-1.0.txt

  • /usr/share/wordlists/dirbuster/directories.jbrofuzz

  • /usr/share/wordlists/dirbuster/apache-user-enum-1.0.txt

  • /usr/share/wordlists/dirbuster/apache-user-enum-2.0.txt

t: Temporizador

u: Se usa para indicar la URL

Listar directorios ocultos

En el siguiente ejemplo estaremos listando los directorios ocultos de nuestra máquia DVWA:

Herramientas Web y Fuzzing en Pentesting

Como vemos, empezará a buscar directorio por directorio incluidos en dicha ruta. Si nos fijamos bien, vemos que al final de la URL hemos colocado “FUZZ”, con esto especificamos dónde queremos probar nuestro directory-list-2.3-medium.txt (ya que suele ser el más usado). Como resultado empezaremos a obtener códigos de estado 200,301, 403, etc. Cabe mencionar que este proceso puede variar en la velocidad, con respecto el temporizador que coloquemos o la herramienta que usemos.

Buscar subdominios

Ahora bien, usaremos wfuzz para encontrar posibles dns o subdominios (virtual hosting). Para esto usaremos la opción ‘-H‘ de la siguiente manera:

Como vemos, esta vez hemos colocado FUZZ por delante del dominio. Esto se debe porque todo subdominio se escribe por delante (o a la izquierda) del dominio. Por lo tanto, ese será el lugar donde se probarán todas las palabras. Como resultado obtendremos:

En este caso, sí nos aparecen códigos 404. Sin el embargo, podemos ver que se repite una misma línea varias veces, y tal vez, no nos interese dicho contenido. Entonces, si si esto ocurre (Como la línea 10 que se muestra en la imagen), podríamos ocultarla colocando – -hl 10.

Searchsploit

Llegados a este punto, y con todas las herramientas recomendadas para obtener diferente tipo de información, no puede faltar Searchsploit. Esta herramienta, como su nombre lo indica, nos permite realizar una búsqueda de manera off-line (sin usar internet) a través de la base de datos más grande de exploits “exploit-database”.

Podemos ver las últimas versiones para distintos sistemas operativos y el estándar CVE (Common Vulnerabilities and Exposures) donde se encuentran de forma pública distintas vulnerabilidades con su respectiva fecha.

Ahora bien, en base a su sintaxis en la imagen anterior, veamos algunos ejemplos de esta herramienta:

Buscar por título algún exploit hecho en Python:

searchsploit -t python

Una buena manera es enumerar la salida con el comando de filtro nl.

Herramientas Web y Fuzzing en Pentesting

Podemos ver que cada exploit cuenta con un Path. Por tanto, si queremos copiarnos algunos de estos en nuestro directorio actual de trabajo deberíamos hacer:

searchsploit -m PATH

Por ejemplo, en el caso de querer copiar la primera línea perteneciente a la vulnerabilidad 27728 haríamos:

Herramientas Web y Fuzzing en Pentesting

Veamos los que nos dice este archivo:

Ejemplos complementarios

Si antes de descargar algún exploit queremos examinarlo o ver más información podemos hacer uso de la opción -x de la siguiente manera:

searchsploit -x 27728

Incluso, luego de la fase de escaneo vía el comando nmap, podemos guardar la salida de dicha ejecución en un archivo xml y, en base a esto, podemos buscar algún exploit con respecto a dicha información escaneada a través del parámetro – -nmap. Por ejemplo:

nmap -sV IP_adress -oX resultado.xml

Una vez realizado el escaneo y guardado el resultado en resultado.xml buscaremos algún exploit de la siguiente manera:

searchsploit -x – -namp resultado.xml

Por lo tanto, esta es una exelente herramienta para búsqueda de exploits y vulnerabilidades. De igual manera, no debemos dejar de buscar en nuestros navegadores más información con respecto a actualizaciones, comentarios de la gente, algún dato más relevante, etc.. Con el fin de sumar más información a nuestra búsqueda.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

veinte − 5 =

Lathack
Scroll al inicio