> For the complete documentation index, see [llms.txt](https://www.xtormin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.xtormin.com/herramientas-comunes/nuclei.md).

# Nuclei

> Nuclei es un escáner de seguridad que utiliza una base de datos de plantillas para detectar vulnerabilidades, configuraciones incorrectas y exposición de información sensible.

Su funcionamiento se basa en tres componentes clave:

1. **Plantillas YAML**: Contienen reglas de detección para diversas vulnerabilidades.
2. **Escaneo basado en HTTP, DNS, TCP y más**: Puede realizar pruebas en distintos protocolos.
3. **Automatización y personalización**: Permite crear reglas propias para detectar vulnerabilidades específicas.

## <mark style="color:red;">Instalación</mark>

<https://docs.projectdiscovery.io/tools/nuclei/install?utm_source=github&utm_medium=web&utm_campaign=nuclei_readme>

## <mark style="color:red;">Plantillas</mark>

### Actualización de plantillas

```bash
nuclei -update  
nuclei -ut       #(actualiza solo las plantillas)
```

### Descarga de todas las plantillas públicas

{% @github-files/github-code-block url="<https://github.com/xm1k3/cent>" %}

Herramientas comunitarias como **Cent** que facilitan la gestión de plantillas de múltiples orígenes. Algunos hunters usan Cent para suscribirse a repositorios de plantillas no oficiales (otros investigadores publican las suyas en GitHub) y así ampliar su arsenal más allá del repo principal.

```bash
cent -p cent-nuclei-templates
```

## <mark style="color:red;">Ejecución</mark>

### Escaneo básico

{% code overflow="wrap" %}

```bash
# 1 URL
nuclei -u "https://example.com"                           

# Varias URLs
nuclei -l targets.txt                                     

# Usando plantillas personalizadas
nuclei -u https://example.com -t ./cent-nuclei-templates  
```

{% endcode %}

* Con salida en formato JSON y registro de tiempo de la ejecución:

{% code overflow="wrap" %}

```bash
nuclei -u "https://example.com" -json-export "nuclei/output_$(date +'%Y-%m-%d_%H-%M-%S').json"
nuclei -l scope/urls.txt -json-export "nuclei/output_$(date +'%Y-%m-%d_%H-%M-%S').json"
```

{% endcode %}

* Hilos (ej: 100 peticiones concurrentes):

```bash
nuclei -u https://example.com -c 100
```

* Peticiones por segundo (ej: 50 peticiones por segundo):

```bash
nuclei -u https://example.com -rate-limit 50
```

### Categorías de pruebas

Nuclei tiene diversas categorías de pruebas, como:

* **CVEs**: Escanea vulnerabilidades conocidas (CVE).
* **misconfiguration**: Detecta configuraciones incorrectas.
* **exposures**: Identifica archivos sensibles expuestos.
* **default-logins**: Prueba credenciales por defecto.

```bash
nuclei -u https://example.com -t cves/
nuclei -u https://example.com -t misconfigurations/
nuclei -u https://example.com -o resultados.json -json
```

Múltiples categorías:

{% code overflow="wrap" %}

```bash
nuclei -l scope/urls.txt -t cves/,misconfiguration/,exposures/,default-logins/,vulnerabilities/api/ -json-export "nuclei/full_scan_$(date +'%Y-%m-%d_%H-%M-%S').json"
```

{% endcode %}
