29 marzo, 2024

WFuzz (navaja suiza del pentesting WEB) 3/3

Y toca la hora de los ejemplos para tener una guía de como abordar diferentes problemas a solucionar con Wfuzz. Claro esta que es solo una guia y deberemos adaptarlos a cada uno de nuestros casos a resolver.

Clave y usuarios mediante fuerza bruta

Para localizar claves y usuarios tendremos diferentes diccionarios incluidos en la herramienta Wfuzz que nos pueden ayudar:

  • Nombres de usuarios comunes
    • /usr/share/wfuzz/wordlist/others/names.txt
  • Claves típicas
    • /usr/share/wfuzz/wordlist/others/common_pass.txt
    • /usr/share/wfuzz/wordlist/general/common.txt
    • /usr/share/wfuzz/wordlist/general/extensions_common.txt
    • /usr/share/wfuzz/wordlist/general/medium.txt
    • /usr/share/wfuzz/wordlist/general/spanish.txt

Y también nuestros propios diccionarios de usuarios comunes y claves, como en la captura de bandera de Mr.Robot que se localizo el fichero «fsocity.dic». Nuestro ejemplo sera localizar en esta maquina los usuarios y claves, ya que se trata de un WordPress y nos servirá este ejemplo para muchas maquinas cambiando los diccionarios.

Lo primero que realizaríamos en la pagina es localizar el formulario para obtener información de los campos a rellenar así como el método POST o GET.

Vemos que es un formulario tipo POST (por lo que usaremos la opción -d) los campos a rellenar son «log» y «pwd» y la acción es «wp-login.php»

Esto esta bien pero sino filtramos tendremos excesiva información por lo tanto lo mejor es ver que nos da al meter a mano un usuario casi improbable igual que su clave «p/nada» y analizamos la página.

Vemos que nos marca claramente que es un usuario incorrecto con «Invalid username» por lo tanto el filtro sera ocultar los resultados que encuentren esa cadena (–hs) para que de esta forma solo visualicemos los usuarios encontrados.

wfuzz -c -z file,fsocity.dic --hs "Invalid username" -d "log=FUZZ&pwd=nada" http://192.168.56.101/wp-login.php

En el momento que tenemos ya los usuarios, podemos ir a buscar las claves. Ejecutaremos el formulario para ver el otro filtro a realizar.

En este caso ocultaremos los que den error de clave «The password» ya que el usuario sabemos que sera correcto y usaremos dos payload uno con los usuarios detectados de tipo lista sino son muchos o con los que tienen nombre de interés (en nuestro caso solo buscaremos la clave de Elliot ya que sabemos que wordpress usa indistintamente las mayúsculas y las minúsculas en el usuario.) y el otro payload con el fichero de posibles claves que en nuestro caso es el mismo que antes.

wfuzz -c -z list,Elliot -z file,fsocity.dic --hs "The password" -d "log=FUZZ&pwd=FUZ2Z" http://192.168.56.101/wp-login.php

También podríamos haber echo todo con un solo paso, pero debíamos haber controlado los dos scripts y ademas me suele gustar ir paso a paso.

Injection-SQL

AL igual que antes tendremos que analizar la página para conocer los campos a rellenar del formulario, esto es común en todos los ejemplo por lo que solo indicaremos los campos y métodos a utilizar, ya que el procedimiento es igual en todos igual que el localizar cadenas claves.

Para los ataques de injection-SQL tenemos varios ficheros de diccionario, ademas de los que nos podamos crear.

  • /usr/share/wordlists/wfuzz/vulns/sql_inj.txt
  • /usr/share/wordlists/wfuzz/Injections/SQL.txt
wfuzz -c -z file,SQL.txt -d "uname=FUZZ&psw=FUZZ" --hc 404 --hs "Administration Login" http://192.168.56.103/index.php

El ejemplos el primero es un ataque injection-SQL con POST, como vemos ocultamos las paginas de error (404) y como vimos que si el login no es correcto nos retorna a la página origen también ocultamos ese string «Administration Login» y cuando este no aparece es que hemos logrado cambiar de página es decir el ataque tiene éxito.

NOTA: Elección String.


Deberemos intentar asegurarnos, ya que no conocemos el contenido de la página respuesta, que el texto a elegido no esta contenido en la página de respuesta para evitar que a string correctos no diga que no. Ante la duda también podremos realizar filtros por el tamaño de la página (palabras, caracteres lineas)

XSS

En este caso al igual que siempre podemos generar nuestros propios ficheros o alguno de los que se encuentra por Internet o utilizar los que disponemos en la herramienta como:

/usr/share/wordlists/wfuzz/Injections/XSS.txt

wfuzz -c -z file,XSS.txt --filter content~FUZZ -Z http://192.168.56.109/xss/example1.php?name=FUZZ

wfuzz -c -z file,XSS.txt,urlencode -z file,XSS.txt -m zip --filter content~FUZ2Z -Z http://192.168.56.109/xss/example7.php?name=FUZZ

La opción -Z nos permite ignorar errores que se suelen producir por los códigos, que suelen ser javaScript, se produce al invocar la URL.

Filtramos para que solo se muestre las respuesta que mete al completo el Payload, ya que la página podría filtrar el Script y seria un XSS no valido aunque de una pagina correcta.

El segundo ejemplo codificamos «FUZZ» que es el código a inyectar para que el filtro no lo localice y comprobamos que tiene la respuesta del código decodificado (FUZ2Z) y se utiliza un iterador «zip» para que sea uno a uno. Este ejemplo sin codificar no retorna ningún resultado y en cambio con la codificación obtenemos 4 resultados.

Ficheros vulnerables y Metodos vulnerables.

Como no Wfuzz nos permite localizar ficheros vulnerables, y también disponemos de ficheros para ello, así como poder detectar los métodos soportados por el servidor y que después podremos utilizar para buscar vulnerabilidades.

wfuzz -t 1 --sc 200 -z file,http_methods.txt -X FUZZ http://192.168.56.109/

Ficheros y directorios vulnerables:

  • /usr/share/wordlists/wfuzz/general/admin-panels.txt (Nos permite localizar paneles de control)
  • /usr/share/wordlists/wfuzz/vulns
    • apache.txt
    • cgis.txt
    • dirTraversal-nix.txt

Esto es solo un ejemplo de algunas de las cosas que podemos realizar con wfuzz.

2 comentarios en «WFuzz (navaja suiza del pentesting WEB) 3/3»

  1. Saludos,
    Gran aporte, gracias.
    Estoy probando wfuzz siguiendo tus explicaciones , intentando averiguar la contraseña de un formulario de login (concretamente el formulario de acceso a DVWA de Metasloitable2) con un diccionario, pero obtengo siempre el codigo 200 para todas las contraseñas del fichero names.txt… Sabes por que puede ser? (el usuario y contraseña estan probados y se puede acceder)

    wfuzz -c -z list,gordonb -z file,/usr/share/wordlists/wfuzz/others/names.txt,md5 –hs «Login failed» -d «username=FUZZ&password=FUZ2Z» http://192.168.101.230/dvwa/login.php

    Gracias por tu tiempo.

    1. A ver si me instalo DVWA y lo miro, en principio parece bien, lo que debes asegurar el el mensaje «Login failed» no sea que te este dando otro mensaje recuerdo hace tiempo en un curso que ese detalle me dio un problema por no ajustar bien el texto aunque era con hydra en esa ocasion.

      En cuanto la instale lo miro y te dgo.

Responder a webmaster Cancelar la respuesta

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

Información básica sobre protección de datos Ver más

  • Responsable: Javier.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger.es que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad