Nuclei es una herramienta que permite ejecutar pruebas de pentesting sobre aplicaciones web y otros servicios pero lo que la convierte en una utilidad realmente interesante es su capacidad de reducir al máximo los falsos positivos. Para conseguir ésto, funciona con un modelo basado en plantillas en las que es necesario declarar cómo se deben realizar las peticiones y qué debería haber en la respuesta devuelta por el servidor para determinar que existe una vulnerabilidad, mala configuración o fuga de información.
Nuclei es un escáner de vulnerabilidades escrito en Go permitiendo realizar la detección en diferentes protocolos por ejemplo TCP, HTTP, DNS.
La primera vez que se ejecuta la herramienta, lo primero que hace es descargar las plantillas desarrolladas por la comunidad y almacenar dichos ficheros en $HOME/nuclei-templates. A partir de este punto, se puede lanzar la herramienta utilizando cualquiera de las plantillas ya existentes o con una nueva.
Hay varias opciones que son interesantes a la hora de ejecutar la
herramienta y simplemente leyendo la ayuda se pueden entender
fácilmente, sin embargo las más importantes son las siguientes:
- -target / -u: Permite indicar una URL sobre la que se van a realizar las pruebas.
- -list / -l: Permite indicar un listado de objetivos en un fichero de texto, una URL por cada línea en el fichero.
- -automatic-scan / -as: Ejecuta un escaneo automático utilizando Wappalyzer para la detección de la arquitectura del objetivo.
- -templates / -t: Listado de plantillas o de directorios que contienen plantillas separado por comas.
- -tl: Simplemente lista todas las plantillas que detecta nuclei. Si se ejecuta la herramienta sin la opción «-templates» enseñará las plantillas de la comunidad que como se ha indicado antes, se encuentran en el directorio $HOME/nuclei-templates.
- -validate: Valida las plantillas que se han enviado con la opción «-templates» para comprobar que los ficheros YAML se encuentran bien formados.
- -et / -exclude-templates: Listado de plantillas o de directorios que contienen plantillas que debe ser ignorado por nuclei separado por comas.
- -s / –severity: Indica que las plantillas deben ser ejecutadas en función del campo «severity» de la plantilla, en donde los posibles valores pueden ser: info, low, medium, high, critical, unknown
- -o / -output: Fichero de salida en donde se almacenan los problemas/vulnerabilidades descubiertos por la herramienta.
- -sresp / -store-resp: Almacena todas las peticiones y respuestas que ha gestionado nuclei en el directorio indicado con la opción «-output».
- -silent: No enseña trazas, solamente los problemas descubiertos.
- -config: Permite indicar un fichero de configuración personalizado para modificar el comportamiento por defecto de la herramienta.
- -update: Actualizar la herramienta
- -up / -update-templates: Actualizar las plantillas de la comunidad a la versión más reciente.
- -duc / -disable-update-check: Por defecto Nuclei verifica si las plantillas locales se encuentran actualizadas, con esta opción se deshabilita este comportamiento.
Existen muchas más opciones disponibles, el listado anterior solamente incluye algunas que son habituales cuando se ejecuta ésta herramienta. En todo caso, al leer la salida que enseña el comando «nuclei -h» se pueden ver todas las opciones disponibles y no es muy difícil entender para qué sirven. Por otro lado, hay que tener en cuenta que las opciones por defecto de la herramienta se pueden personalizar o bien manipulando el fichero de configuración ubicado en $HOME/.config/nuclei/config.yaml o indicando uno nuevo.
A continuación, en las siguientes imágenes se enseñan algunos ejemplos de uso, aunque puedes ver el vídeo en YouTube que se encuentra al principio de este post para ver los resultados que genera.
Escaneo de vulnerabilidades con Nuclei
Para realizar un escaneo de vulnerabilidades a una página web en específico es realizado con el siguiente comando.
nuclei -u https://elhacker.net
Visualizamos en la siguiente captura cual es el resultado de realizar el escaner sobre el sitio:
En otro caso si deseamos ejecutar múltiples sitios podemos realizarlo
nuclei -l urls.txt
Si deseamos realizar un escaneo con un HEADER personalizado debemos de usar la flag -H
nuclei -H 'SNIFER:HEADER' -l urls.txt
También podríamos realizar un escaneo con base en alguno de sus tags, especificar el formato que nos devolvera el resultado por ejemplo es realizado con la flag -o
cve, rce, lfi, xss, network, logs, config, ssrf
Para que llegues a sacar un mejor provecho de la herramienta, te recomiendo que revises en profundidad todas las banderas y realices las pruebas respectivas.
Modo básico
Filtros basados en la severidad de los defectos
Ejecución en modo «silencioso».
Filtrado de plantillas por severidad y tags
Nuclei pretende cubrir una necesidad que es evidente cuando se realiza pentesting web: personalizar y orientar las pruebas a las características concretas de la aplicación que se está auditando. Hay que tener en cuenta que cada aplicación web tiene sus propios modos de funcionamiento y no se puede pretender que herramientas de uso general sean capaces de detectar defectos específicos que se encuentran expuestos en la lógica de negocio de la aplicación, se hace necesario un enfoque manual para detectar fallos de forma mucho más precisa y esto lo han entendido los creadores de esta herramienta ya que es en ese punto donde precisamente Nuclei puede ser de gran ayuda gracias a la «magia» de las plantillas. No obstante y aunque las plantillas de la comunidad pueden ser de gran utilidad, para sacarle un verdadero provecho a esta herramienta se debe conocer la aplicación web a auditar y crear plantillas dirigidas a ella.
Fuentes:
https://sniferl4bs.com/2022/02/hacking-101-nuclei-escaner-de-vulnerabilidades/
No hay comentarios:
Publicar un comentario