Verificar la propiedad del dominio¶
Antes de escanear un objetivo externo en producción (o donde la autorización de objetivo esté activa), debes demostrar que controlas el dominio. Así se evita usar la plataforma contra sitios de terceros.
Esto es distinto del checkbox de autorización escrita en el formulario Pentest: ese checkbox es tu confirmación legal; la verificación de dominio es la prueba técnica (DNS o contenido web).
Cuándo es obligatoria¶
| Situación | Verificación |
|---|---|
Producción/staging, hostname público (app.example.com) |
Obligatoria (salvo bypass contractual de operador) |
localhost, IPs privadas, laboratorios |
No |
Dev self-hosted con REQUIRE_TARGET_AUTHORIZATION=false |
Desactivada salvo que la actives en .env |
Si falta la prueba, la API devuelve 403 target_not_authorized y la consola
muestra Prove domain ownership.
Antes de empezar¶
- Rol admin de la organización.
- URL objetivo autorizada, p. ej.
https://app.example.com. - Acceso a DNS o archivos del sitio (o alguien del equipo que pueda publicar TXT, fichero HTTP o meta tag).
Paso a paso (consola)¶
-
Inicia sesión y abre Pentest (
/scan). -
Introduce la URL del objetivo.
-
Si el dominio no está verificado, aparece el panel Prove domain ownership con el token y nombres de registro exactos — usa siempre lo que muestra la consola.
-
Elige un método:
Si gestionas DNS (Cloudflare, Route 53, GoDaddy…).
- Nombre:
_vex-verify.<tu-dominio>(completo en el panel). - Tipo:
TXT - Valor:
vex-verify=<token>(copiar del panel). - Espera propagación DNS (minutos a 48 h).
Si puedes publicar archivos en el sitio.
- URL:
https://<dominio>/.well-known/vex-verify.txt - Contenido = el texto que indica la consola.
Si puedes editar el
<head>de la home (Wix, WordPress…).<meta name="vex-verify" content="<token>">en la página pública de inicio.
- Nombre:
-
Pulsa I've published it — Verify now.
-
Tras éxito, lanza el pentest. Sigue siendo obligatorio el checkbox de autorización escrita antes de LAUNCH PENTEST.
Paso a paso (API)¶
Requiere JWT de admin.
curl -sS "https://<host>/api/v1/pentest/authorize/instructions?target=https%3A%2F%2Fapp.example.com" \
-H "Authorization: Bearer <JWT>"
curl -sS -X POST "https://<host>/api/v1/pentest/authorize/verify" \
-H "Authorization: Bearer <JWT>" \
-H "Content-Type: application/json" \
-d '{"target":"https://app.example.com"}'
Respuesta: { "verified": true|false, "method": ..., "domain": ... }. Detalle en /api/docs.
Problemas frecuentes¶
| Síntoma | Revisar |
|---|---|
403 target_not_authorized |
Verificar dominio; el token es por organización. |
| DNS recién creado | Propagación; dig TXT _vex-verify.ejemplo.com. |
| Fichero HTTP | Ruta exacta, sin login, HTTPS accesible. |
| Meta tag | Debe estar en el HTML público de la home. |