TOP 10 comandos avanzados para Nuclei

TOP 10 comandos avanzados para Nuclei

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 templates 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. El binario de Nuclei por si solo "no hace nada", es decir, la potencia de la herramienta se encuentra en las templates que se le pasan por parámetro a dicho binario.

Este no es un manual de uso de Nuclei, si no que se plantea sea una colección de aquellos comandos mas avanzados que se puedan utilizar en Nuclei para sacar su máximo provecho.

1.- Envío de solicitudes HTTP con autenticación.

Por ejemplo si la aplicación web/API que está probando requiere autenticación, entonces puede enviar una autenticación basada en Cookies o token JWT a todas las solicitudes HTTP.

nuclei -l targets.txt -t nuclei-templates/ -H "Authorization: Bearer tokenJWT" 

2.- Envío de cabeceras HTTP personalizadas

Por ejemplo si la aplicación bloquea un User-Agent en particular, puede cambiarlo por cualquier otro.

nuclei -l targets.txt -t nuclei-templates/  -H "User-Agent: sample-user-agent"

3.- Ajuste de la concurrencia y los reintentos

Optimice la velocidad y la confiabilidad del escaneo ajustando la configuración de concurrencia y reintento para obtener buenos resultados.

nuclei -l targets.txt -t nuclei-templates/ -c 50 -retries 3

4.- Exclusiones

En algunas pruebas, es posible que desee excluir algunas templates. Para ello, puede utilizar la opción -exclude.

Excluir templates

nuclei -l urls.txt -t cves/ -exclude cves/2020/CVE-2020-XXXX.yaml
nuclei -l urls.txt -t nuclei-templates/ -exclude exposed-panels/ -exclude technologies

Excluir tags

nuclei -l urls.txt -t cves/ -etags xss
nuclei -l urls.txt -t cves/ -etags sqli,rce

5.- Uso de Workflows

Los Workflow encadenan varias pruebas en un orden específico y agilizan los escenarios de pruebas complejas.

Ejemplo de un uso de Workflow para Wordpress.

Comando:

nuclei -w nuclei-templates/workflows/wordpress-workflow.yaml -l wordpress_urls.txt

Ejemplo de un uso de Workflow para Jira.

nuclei -w nuclei-templates/workflows/wordpress-workflow.yaml -w workflows/jira-workflow.yaml -l urls.txt

6.- Escanee vulnerabilidades de aplicación web para todos los subdominios

Subfinder + HTTPX + Nuclei

Puede utilizar Subfinder para obtener todos los subdominios de un dominio principal. Luego con HTTPX verificará cada uno de los subdominios y mostrará solamente aquellos que dispongan de un sitio web ejecutándose por HTTP (puerto 80) o HTTPS (puerto 443). Enseguida puede usar cualquier plantilla de Nuclei para encontrar vulnerabilidades, por ejemplo filtrando el impacto de la vulnerabilidad.

Esto se logra con el parámetro "-s". A continuación se muestran las posibles opciones.

-s, -severity value[] templates to run based on severity. Possible values: info, low, medium, high, critical, unknown

Ejemplo de solo vulnerabilidad con impacto alto o crítico. Esta opción es muy útil para omitir obtener vulnerabilidad con un impacto bajo.

subfinder -d target.com -silent | httpx --silent | nuclei -s high,critical -t nuclei-templates/

7.- Obtenga información confidencial de los archivos JavaScript para todos los subdominios

Subfinder + HTTPX + getJS + Nuclei Secrets

Parecido al anterior, pero en este caso se utiliza herramienta getJS que obtendrá todos los enlaces JavaScript para cada una de los subdominios que dispongan una aplicación web. Finalmente con la plantilla ubicada en la ruta "nuclei-templates/http/exposures/tokens" obtendrá posibles secretos, apiKeys entre otro tipo de información confidencial ubicada en los archivos JavaScript.

subfinder -d target.com -silent | httpx --silent | getJS | nuclei -t nuclei-templates/http/exposures/tokens

8.- Fuzzing SQLi/XSS/etc con GoSpider y Nuclei

GoSpider + URO + Nuclei fuzzing sqli

Para este ejemplo de Fuzzing de inyección de código SQL, se utilizarán otros templates denominados "fuzzing-templates" y que se ubican en el siguiente repositorio:

https://github.com/projectdiscovery/fuzzing-templates

Entonces, puede utilizar GoSpider para extraer todas las URL de un sitio web, enseguida se pueden filtrar las URL parametrizadas utilizando URO para obtener una lista de URL no duplicadas y limpias, listas para probar inyección SQL sobre los valores en los parámetros.

./gospider -d 3 -q -s http://testphp.vulnweb.com | uro | nuclei -t ~/fuzzing-templates/sqli/error-based.yaml

GoSpider + URO + Nuclei fuzzing XSS

Muy parecido a lo anterior, solo que en este caso se comprueba la presencia de XSS reflejado.

./gospider -d 3 -q -s http://testphp.vulnweb.com | uro | nuclei -t ~/fuzzing-templates/xss/reflected-xss.yaml

9.- Fuzzing SQLi/XSS/etc con GAU y Nuclei

Subfinder + GAU + URO + Nuclei fuzzing sqli

Aquí se pueden enumerar todos los subdominios con Subfinder y con GAU obtener todas las URL de fuentes como WebArchive de todos estos subdominios, enseguida con URO se filtran las URL para evitar duplicados. Finalmente con el template de fuzzing sqli se pruebas las inyecciones SQL.

subfinder -d testphp.vulnweb.com -silent | gau | nuclei -t ~/fuzzing-templates/sqli/error-based.yaml

Subfinder + GAU + URO + Nuclei fuzzing XSS

Muy parecido a lo anterior, solo que en este caso se comprueba la existencia de XSS reflejado.

subfinder -d testphp.vulnweb.com -silent | gau | uro | nuclei -t ~/fuzzing-templates/xss/reflected-xss.yaml

10.- Usando la URL de colaborador de Burp para encontrar SSRF

Nuclei puede buscar vulnerabilidades de tipo SSRF, RCE, XXE que son verificadas mediante una URL en particular. Para esto puede utilizar su URL de colaborador de Burpsuite.

subfinder -d target.com -silent | gau | uro | gf ssrf | nuclei -t ~/fuzzing-templates/ssrf/blind-ssrf.yaml -iserver https://YourBurpCollaborator.oastify.com

Conclusión

De aquí en adelante se trata de imaginación, y del combo perfecto para usted, porque podría combinar Subfinder+GAU+getJS+linkfinder+Gospider para obtener todas las URL de todos los subdominios, para después ser tratadas y pasarel template correcto de fuzzing con Nuclei.

Resources:

  • https://github.com/tomnomnom/gf
  • https://github.com/s0md3v/uro
  • https://github.com/jaeles-project/gospider
  • https://github.com/lc/gau
  • https://github.com/projectdiscovery/subfinder
  • https://nuclei.projectdiscovery.io/
  • https://github.com/projectdiscovery/nuclei-templates
  • https://github.com/projectdiscovery/fuzzing-templates
← Back to Blog