AI hackers por iNBest.cloud  agentes en línea

// Reporte de ejemplo · cliente ficticio

Reporte de ejemplo de AI hackers: evaluación externa de un cliente ficticio

Este reporte describe una empresa ficticia, pero tiene la misma forma que uno real: la estructura, la evidencia literal, la calificación de cada hallazgo y lo que no se probó. Aquí tienes el resumen; el PDF trae los 12 hallazgos completos.

Resumen ejecutivo

Cliente
Grupo Ejemplo, S.A. de C.V. (empresa ficticia)
Objetivo
grupo-ejemplo.example (dominio reservado, no existe)
Superficie
34 nombres de host, 19 direcciones IP, 4 proveedores
Tipo
Caja negra externa, autorizada, no destructiva
Estándares
OWASP WSTG v4.2, OWASP API Security Top 10 2023, PTES, NIST SP 800-115
Evidencia
58 archivos
  • 1Crítico
  • 3Alto
  • 5Medio
  • 2Bajo
  • 1Informativo

Más 1 hallazgo retirado por falso positivo, documentado en el reporte.

Riesgo global: Alto. Los cuatro hallazgos de mayor severidad comparten una causa: artefactos que llegaron a internet sin que nadie decidiera publicarlos. Un mapa de código en la compilación de producción, cuatro entornos no productivos con nombre público, una consola administrativa en su ruta original y una redirección que degrada el cifrado.

Hay un segundo patrón: controles que existen pero no aplican. El DMARC está en modo monitoreo, así que no bloquea nada, y la política de contenido permite enviar formularios a cualquier destino.

El reporte también dice lo que está bien: la transferencia de zona DNS está rechazada en los cuatro servidores de nombres, el panel de la tienda usa un nombre no predeterminado y no hay dominios susceptibles de apropiación.

Qué distingue el formato

  • Cada hallazgo abre con el riesgo en una línea y cierra con una remediación al nivel de línea de configuración.
  • La evidencia es literal: el comando para reproducirlo y la respuesta del servidor, solo con peticiones de lectura.
  • La severidad no usa CVSS: califica la exposición real del cliente, con pisos y techos declarados.
  • Declara lo que no se probó y documenta un hallazgo retirado por falso positivo, con la prueba de control que lo desmintió.

Los 12 hallazgos

IDHallazgoSeveridad
CRIT-AMapa de código en producción expone el portal de socios y un servidor no enumerableCrítico
HIGH-ALa consulta de registros acepta el identificador suministrado por el navegadorAlto
HIGH-BCredenciales corporativas en texto plano en corpus públicosAlto
HIGH-CToda visita al sitio transita una vez por HTTP en claro, y no hay HSTSAlto
MED-ACuatro entornos no productivos con nombre públicoMedio
MED-BLa suplantación del dominio en correo no está bloqueadaMedio
MED-CConsola administrativa accesible en su ruta predeterminadaMedio
MED-DCertificado vencido en el portal de soporteMedio
MED-EPolítica de contenido permisiva en la ruta de pagoMedio
LOW-ADivulgación de versiones e infraestructura internaBajo
LOW-BRegistros DNS que apuntan a hosts que ya no respondenBajo
INFO-AResultados limpios, registradosInformativo

Un hallazgo completo

CRÍTICOCRIT-AMapa de código en producción expone el portal de socios y un servidor no enumerable
activo
portal.grupo-ejemplo.example
el riesgo, en una línea
El código del portal de socios es público, y entrega el mapa completo de una API interna que no aparece en ningún inventario de subdominios.
qué encontramos
El portal es una aplicación de página única publicada en almacenamiento estático detrás de una red de distribución. Se desplegó con su mapa de código fuente, y el mapa contiene sourcesContent, es decir el código original completo y no solo la lista de nombres de archivo.
reproducción · solo lectura, sin autenticación
# 1. El paquete compilado declara su propio mapa en la ultima linea
curl -s https://portal.grupo-ejemplo.example/static/js/main.<hash>.js | tail -c 120

# 2. El mapa responde
curl -sI https://portal.grupo-ejemplo.example/static/js/main.<hash>.js.map
respuesta del servidor · lo que entrega a cualquiera
//# sourceMappingURL=main.<hash>.js.map

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 4518621
Cache-Control: public, max-age=31536000

{"version":3,"sources":[...612 rutas...],"sourcesContent":[...codigo original...]}
por qué importa
El mapa entrega el código de 28 archivos propios y el contrato completo de la API, y nombra un servidor, api-datos, que no apareció en ninguna de las cinco fuentes de enumeración. Un atacante que enumere de la forma habitual no lo encuentra; uno que descargue el mapa, sí. No se encontró ninguna credencial activa: la severidad descansa en la divulgación del código y en el servidor que quedó al descubierto.
remediación
  1. Eliminar los archivos .map del almacenamiento e invalidar la caché de la red de distribución. Mientras no se invalide, el archivo se sigue sirviendo.
  2. Fijar GENERATE_SOURCEMAP=false en la compilación de producción, para que no reaparezca en el siguiente despliegue.
  3. Conservar los mapas donde sí sirven: como artefacto de integración continua o en el servicio de seguimiento de errores.
  4. Tratar api-datos como un nombre ya conocido por terceros. Retirarlo del DNS no lo protege: seguiría siendo alcanzable por dirección IP.

Qué hacer primero

Los dos primeros son cambios de una línea.

  1. Borrar dos archivos del almacenamiento y desactivar su generación en la compilación (CRIT-A).
  2. Cambiar el destino de una redirección y publicar un encabezado (HIGH-C).
  3. Restablecer 19 identidades y revocar sus sesiones (HIGH-B).

Qué no se probó

Una evaluación sin límites declarados no es verificable. El reporte deja por escrito lo que quedó fuera:

  • Pruebas autenticadas: nada detrás de un inicio de sesión. Es lo que HIGH-A necesita para cerrarse.
  • Validación de explotación: ningún hallazgo se llevó más allá de confirmar que la condición existe.
  • Acciones que modifiquen estado, pruebas de carga, denegación de servicio e ingeniería social.
  • Límites de la recolección, registrados como desconocidos y no como limpios: la matriz de autenticación quedó parcial y las cifras del corpus de credenciales son un piso.

El hallazgo retirado

La primera pasada reportó los servidores de nombres como resolutores abiertos a recursión, un hallazgo Medio.

Antes de publicarlo se corrió la prueba de control obligatoria: la misma consulta contra una dirección de documentación (RFC 5737) que no aloja ningún servidor. Devolvió el mismo resultado, así que la medición estaba contaminada en el origen. El hallazgo se retiró y el reporte deja constancia.

Por qué es ficticio

La empresa, el dominio, los nombres de host y todas las direcciones IP son ficticios. El dominio usa el TLD .example, reservado por el RFC 2606, y las direcciones provienen de los rangos de documentación del RFC 5737. Ningún sistema descrito aquí existe.

Lo que sí es real es la forma. Los hallazgos reproducen los patrones que la práctica encuentra con más frecuencia, para que una organización de perfil similar reconozca el suyo.