Laboratorios de hacking
Cómo crear una red Docker aislada para tu laboratorio
Crea una red Docker sin acceso a internet, ejecuta OWASP Juice Shop en ella y publica una copia para el navegador solo en 127.0.0.1.
Estructure un informe de pentest y escriba un hallazgo que otra persona pueda reproducir, con evidencia, impacto, vector CVSS v4.0 y remediación.
Un informe de pentest es el registro escrito de una prueba de seguridad autorizada. Dice qué se probó, qué se encontró, cómo puede confirmar un lector cada hallazgo y qué hay que cambiar. La prueba termina cuando el evaluador deja de enviar solicitudes. El informe es lo que conserva el dueño del sistema, lo que comparte con los desarrolladores y lo que usa para demostrar que el trabajo se mantuvo dentro del alcance acordado.
El NIST SP 800-115, guía técnica sobre pruebas y evaluaciones de seguridad de la información, cubre el proceso completo, incluido el análisis de los hallazgos y el desarrollo de estrategias de mitigación. La Web Security Testing Guide de OWASP tiene un capítulo de Reporting que empieza por la estructura del informe y por un esquema de nombres para los hallazgos. Lea ambos cuando pueda. Este artículo se centra en la parte que escribirá primero: un informe claro con un hallazgo que otra persona pueda reproducir.
Un error real que nadie puede reproducir casi nunca se corrige. Los desarrolladores necesitan pasos que puedan ejecutar desde un estado limpio. Los gerentes necesitan saber qué significa el riesgo para el negocio. Los auditores necesitan pruebas de que el trabajo respetó la autorización. Un solo documento tiene que servir a los tres lectores.
El informe también protege a quien prueba. Un alcance escrito y un registro fechado de lo que se probó muestran que cada acción estuvo dentro de la autorización. Sin ese registro, un evaluador que encontró una falla real puede terminar discutiendo si la prueba estaba permitida.
Una estructura práctica tiene seis partes:
Cada hallazgo responde a las mismas preguntas, en el mismo orden.
curl -i, sin secretos. Numere cada evidencia para que los pasos puedan señalarla.Un hallazgo que el lector no puede reproducir solo con la página no está terminado, por bueno que sea su título.
El impacto sigue a la evidencia. Si demostró que un script se ejecutó en el navegador de una cuenta de prueba en su propio laboratorio, escriba exactamente eso. Una frase como "un atacante puede tomar todas las cuentas" sin una demostración es una exageración, y un desarrollador lo notará. Además, le quita credibilidad en el siguiente hallazgo. Cuando no verificó algo, dígalo y nombre la prueba que lo confirmaría.
El resultado de un scanner le dice dónde mirar. Antes de que entre al informe, reprodúzcalo a mano, registre la solicitud y la respuesta y confirme el comportamiento usted mismo. Puede citar el scanner como origen de la pista. No pegue su salida en bruto como prueba, porque puede estar equivocada y el lector no sabe qué partes alguien revisó.
La especificación de CVSS v4.0 define un grupo de métricas Base con dos lados. Las métricas de explotabilidad son el vector de ataque (AV), la complejidad del ataque (AC), los requisitos de ataque (AT), los privilegios requeridos (PR) y la interacción del usuario (UI). Las métricas de impacto cubren el sistema vulnerable (VC, VI, VA) y los sistemas subsecuentes (SC, SI, SA). Una cadena de vector empieza con CVSS:4.0 y enumera todas las métricas base.
Las bandas cualitativas de severidad son None en 0.0, Low de 0.1 a 3.9, Medium de 4.0 a 6.9, High de 7.0 a 8.9 y Critical de 9.0 a 10.0.
La puntuación tiene cuatro variantes según los grupos de métricas usados: CVSS-B solo con Base, CVSS-BT con Base y Threat, CVSS-BE con Base y Environmental, CVSS-BTE con los tres. Un primer informe suele llevar solo la puntuación Base, así que etiquétela como CVSS-B y no la presente como una evaluación completa del riesgo.
Use la calculadora oficial en https://www.first.org/cvss/calculator/4.0 para construir el vector y obtener la puntuación. Incluya el vector en el informe, no solo el número, para que el lector vea qué supuestos usó. La cadena siguiente muestra solo el formato. No es la puntuación de ningún hallazgo de su laboratorio:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:NPuntúe lo que verificó. Si el ataque depende de una condición que no pudo reproducir, la métrica tiene que reflejarlo.
La evidencia suele contener cookies de sesión, tokens bearer, contraseñas y datos personales. Elimínelos antes de que el archivo salga de su equipo. Mantenga el nombre de la cabecera y la forma del valor, para que el lector pueda seguir la solicitud:
Cookie: session=<REDACTED>
Authorization: Bearer <REDACTED>No pegue un token activo en un chat, un ticket o un repositorio público, y no haga commit de un archivo que todavía lo contenga. Si un secreto quedó expuesto en su propio laboratorio, rótelo de todos modos y anote la rotación en el informe.
Necesita el contenedor de OWASP Juice Shop de su laboratorio, ejecutándose en su propia máquina. Este ejercicio solo toca esa instancia local en 127.0.0.1. No ejecute ninguno de estos pasos contra un sitio que no sea suyo ni para el que no tenga permiso escrito de prueba.
Ejecute:
docker psMire la columna de puertos. El mapeo debería empezar con 127.0.0.1, lo que significa que solo su máquina puede llegar al servicio. Si ve 0.0.0.0 o ninguna dirección, detenga el contenedor y vuelva a iniciarlo con la dirección de loopback en el parámetro de publicación.
docker run -d -p 127.0.0.1:3000:3000 bkimminich/juice-shopLuego compruebe que el laboratorio responde:
curl -i http://127.0.0.1:3000La línea de estado debería mostrar un código de respuesta exitoso. Guarde la salida. Va en la sección de Alcance como prueba del objetivo que probó.
Escoja un comportamiento que haya probado en el navegador o con una sola solicitud, y que pueda describir en unos pocos pasos. Mantenga el alcance pequeño. Un hallazgo bien respaldado es más útil que ocho sin verificar.
Repita la solicitud con curl -i para que se vean las cabeceras. Cambie la ruta por la que usa su hallazgo y guarde la salida en un archivo:
curl -i "http://127.0.0.1:3000/<ruta-probada>" > evidence-01.txtEl flag -i imprime las cabeceras de la respuesta antes del cuerpo. Lea la línea de estado, la cabecera Content-Type y cualquier cabecera de la que dependa su hallazgo. Después quite cualquier token o cookie del archivo antes de hacer commit.
Cree report.md en el repositorio de su laboratorio y use esta plantilla. Reemplace cada marcador por lo que observó de verdad:
## Scope
- Target: http://127.0.0.1:3000, my own OWASP Juice Shop container
- Authorization: I run this lab on a machine I own
- Dates: <start date> to <end date>
- Out of scope: everything else
## Finding title
<Flaw> in <exact location>
## Steps to reproduce
1. <Start from a clean browser session at http://127.0.0.1:3000>
2. <Exact action or request>
3. <What you see>
## Evidence
<Screenshot file name, or the redacted curl -i output file, matched to the steps>
## Impact
<What you verified. What you did not verify, and the test that would check it.>
## CVSS vector
<CVSS:4.0 vector from the calculator, and its rating>
## Remediation
<The specific fix, and how to check that it works>Revise qué va a registrar Git antes de hacer commit, para que un archivo sin redactar no se cuele:
git add report.md
git status
git commit -m 'First lab finding'Confirme el commit con git log --oneline -1. La línea debería mostrar su mensaje. Al terminar, detenga el contenedor del laboratorio con docker stop <container-name> y ejecute docker ps para confirmar que ya no aparece.
Laboratorios de hacking
Crea una red Docker sin acceso a internet, ejecuta OWASP Juice Shop en ella y publica una copia para el navegador solo en 127.0.0.1.
Laboratorios de hacking
Monta un laboratorio que puedes atacar: archivo de alcance, puertos de Docker en loopback, red aislada, cuaderno de notas y desmontaje limpio.
Laboratorios de hacking
Ejecuta OWASP Juice Shop en un contenedor Docker limitado a tu equipo, comprueba que responde y detenlo sin dejar nada en ejecución.