Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
wrongsecrets — Aplicación vulnerable con ejemplos que muestran cómo no usar secretos | Kitploit
Herramientas/GitHubGitHub/owasp/wrongsecrets
Seguridad de ContenedoresAnálisis de VulnerabilidadesCTFSeguridad en la NubeDevSecOpsDetección de SecretosAprendizaje y EducaciónLabs y PrácticaTop en Labs y Práctica #8Top en Detección de Secretos #19
1.5k59919hace 19h 7mRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHubowasp/wrongsecrets

wrongsecrets

Aplicación vulnerable con ejemplos que muestran cómo no usar secretos

Ver RepositorioSitio web

OWASP WrongSecrets

Tweet

Java checkstyle and testing Pre-commit Terraform FMT CodeQL Dead Link Checker Javadoc and Swaggerdoc generator Test Heroku with cypress

Test minikube script (k8s) Test minikube script (k8s&vault) Docker container test Test container on podman DAST with ZAP PR Preview and Visual Diff Build Preview Visual Diff

OWASP Production Project OpenSSF Best Practices Discussions Docker pulls

¡Bienvenido al juego OWASP WrongSecrets! El juego está lleno de ejemplos reales de cómo no almacenar secretos en tu software. Cada uno de estos ejemplos está capturado en un desafío, que debes resolver utilizando diversas herramientas y técnicas. Resolver estos desafíos te ayudará a reconocer errores comunes y puede ayudarte a reflexionar sobre tu propia estrategia de gestión de secretos.

¿Puedes resolver los 67 desafíos?

Prueba algunos de ellos en nuestro entorno de demostración en Heroku.

¿Quieres jugar los otros desafíos? Lee las instrucciones sobre cómo configurarlos a continuación.

🚀 Inicio Rápido

¿Nuevo en WrongSecrets? Empieza aquí:

  1. Pruébalo primero en línea: Visita nuestra demostración en Heroku para familiarizarte con los desafíos
  2. Ejecuta localmente: Usa Docker para la experiencia completa con todos los desafíos: ```bash docker run -p 8080:8080 -p 8090:8090 jeroenwillemsen/wrongsecrets:latest-no-vault
    root@kitploit:~

Luego abre http://localhost:8080 3. ¿Quieres ver lo que se avecina? Prueba nuestro contenedor maestro de vanguardia con las últimas características: ```bash docker run -p 8080:8080 -p 8090:8090 ghcr.io/owasp/wrongsecrets/wrongsecrets-master:latest-master

root@kitploit:~
⚠️ *Nota: Esta es una versión de desarrollo y puede ser inestable*
4. **Configuración avanzada**: Para desafíos en la nube y ejercicios de Kubernetes, consulta las instrucciones detalladas a continuación

**Lo que aprenderás:**
- Errores comunes en la gestión de secretos
- Cómo identificar credenciales expuestas
- Mejores prácticas para asegurar secretos
- Herramientas y técnicas para la detección de secretos

**Cómo funciona:**
Este repositorio contiene **código y archivos de configuración intencionalmente vulnerables** con secretos reales y falsos ocultos en todo el código base. Examinarás el código fuente, los archivos de configuración, los contenedores Docker y los despliegues en la nube para descubrir estos secretos. Cada desafío te enseña diferentes formas en que los secretos pueden exponerse accidentalmente en aplicaciones del mundo real.

![screenshotOfChallenge1](https://assets.kitploit.com/production/public/readmes/6937/ad02ece4104616d09ac232d1423d84111048b3437c4439ebf44172a60c673546.png)

## 📋 Requisitos previos

**Para uso básico:**
- Un navegador web
- Docker (para configuración local) - [Instalar aquí](https://docs.docker.com/get-docker/)

**Para configuraciones avanzadas:**
- Kubernetes/Minikube - [Instalar aquí](https://minikube.sigs.k8s.io/docs/start/)
- Cuenta en la nube (AWS/GCP/Azure) para desafíos en la nube
- Familiaridad con la línea de comandos

<a href="https://github.com/vshymanskyy/StandWithUkraine/blob/main/README.md"><img src="https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-no-action.svg" /></a>

## Tabla de contenidos

### 🎯 Comenzando
-   [Inicio rápido](#-quick-start)
-   [Requisitos previos](#-prerequisites)
-   [Soporte](#support)

### 🐳 Opciones de despliegue
-   [Ejercicios básicos de Docker](#basic-docker-exercises)
 -   [Ejecutarlos en Heroku](#running-these-on-heroku)
 -   [Ejecutarlos en Render.io](#running-these-on-renderio)
 -   [Ejecutarlos en Railway](#running-these-on-railway)
-   [Ejercicio básico de K8s](#basic-k8s-exercise)
 -   [Basado en Minikube](#minikube-based)
 -   [Basado en k8s](#k8s-based)
 -   [Ejercicios con Vault y minikube](#vault-exercises-with-minikube)

### ☁️ Desafíos en la nube
-   [Desafíos en la nube](#cloud-challenges)
 -   [Ejecutar WrongSecrets en AWS](#running-wrongsecrets-in-aws)
 -   [Ejecutar WrongSecrets en GCP](#running-wrongsecrets-in-gcp)
 -   [Ejecutar WrongSecrets en Azure](#running-wrongsecrets-in-azure)
 -   [Ejecutar el Desafío 15 solo en tu propia nube](#running-challenge15-in-your-own-cloud-only)

### 🎮 Uso avanzado
-   [¿Quieres jugar sin guía?](#do-you-want-to-play-without-guidance-or-spoils)
-   [CTF](#ctf)
 -   [Soporte CTFD](#ctfd-support)
 -   [Soporte FBCTF](#fbctf-support-experimental)
-   [Usar OWASP WrongSecrets como punto de referencia de detección de secretos](#use-owasp-wrongsecrets-as-a-secret-detection-benchmark)

### 👨‍💻 Desarrollo y contribución
-   [Notas sobre el desarrollo](#notes-on-development)
-   [Lista de verificación para la adopción de Spring Boot 4](https://github.com/owasp/wrongsecrets/blob/master/docs/SPRING_BOOT_4_ADOPTION_CHECKLIST.md)
 -   [Gestión de dependencias](#dependency-management)
 -   [Iniciar el proyecto en IntelliJ IDEA](#get-the-project-started-in-intellij-idea)
 -   [Recarga automática durante el desarrollo](#automatic-reload-during-development)
 -   [Cómo añadir un desafío](#how-to-add-a-challenge)
 -   [Pruebas locales](#local-testing)
 -   [Pruebas automatizadas locales](#Local-automated-testing)
-   [¿Quieres deshabilitar desafíos en tu propia versión?](#want-to-disable-challenges-in-your-own-release)

### 📚 Recursos y comunidad
-   [Agradecimientos especiales y contribuyentes](#special-thanks--contributors)
-   [Patrocinios](#sponsorships)
-   [Se necesita ayuda](#help-wanted)
-   [Lecturas adicionales sobre gestión de secretos](#further-reading-on-secrets-management)

## Soporte

¿Necesitas soporte? Contáctanos
a través de [OWASP Slack](https://owasp.slack.com/archives/C02KQ7D9XHR) para lo cual debes registrarte [aquí](https://owasp.org/slack/invite)
, presenta una [PR](https://github.com/OWASP/wrongsecrets/pulls), reporta
un [issue](https://github.com/OWASP/wrongsecrets/issues) , o
usa [discussions](https://github.com/OWASP/wrongsecrets/discussions). Ten en cuenta que este es un proyecto basado en voluntarios de OWASP, por lo que puede tomar un tiempo antes de que respondamos.

Copyright (c) 2020-2025 Jeroen Willemsen and WrongSecrets contributors.

## 🛤️ Elige tu camino

¿No estás seguro de qué configuración es la adecuada para ti? Aquí tienes una guía rápida:

| **Quiero...** | **Configuración recomendada** | **Desafíos disponibles** |
|------------------|----------------------|--------------------------|
| Probarlo rápidamente en línea | [Contenedor ejecutándose en Heroku](https://www.wrongsecrets.com/) | Desafíos básicos (0-4, 8, 12-32, 34-43, 49-52, 54-66) |
| Ejecutarlo localmente con Docker | [Docker básico](#basic-docker-exercises) | Igual que arriba, pero en tu máquina |
| Aprender secretos de Kubernetes | [Configuración K8s/Minikube](#basic-k8s-exercise) | Desafíos de Kubernetes (0-6, 8, 12-43, 48-66) |
| Practicar con secretos en la nube | [Desafíos en la nube](#cloud-challenges) | Todos los desafíos (0-66) |
| Realizar un taller/CTF | [Configuración CTF](#ctf) | Conjuntos de desafíos personalizables |
| Contribuir al proyecto | [Configuración de desarrollo](#notes-on-development) | Todos los desafíos + herramientas de desarrollo |

## Ejercicios básicos de Docker

_Puede usarse para los desafíos 0-4, 8, 12-32, 34-43, 49-52, 54-66_

Para los ejercicios básicos de Docker actualmente necesitas:

-   Docker [Instalar desde aquí](https://docs.docker.com/get-docker/)
-   Un navegador que pueda renderizar HTML

Puedes instalarlo haciendo:```bash
docker run -p 8080:8080 -p 8090:8090 jeroenwillemsen/wrongsecrets:latest-no-vault

🚀 ¿Quieres probar la versión más innovadora?

Si quieres ver lo que viene en la próxima versión, puedes usar nuestro contenedor automáticamente compilado de la rama master:```bash docker run -p 8080:8080 -p 8090:8090 ghcr.io/owasp/wrongsecrets/wrongsecrets-master:latest-master

root@kitploit:~
⚠️ **Advertencia**: Esta es una versión de desarrollo creada desde la última rama master y puede contener características experimentales o inestabilidades.

**📝 Nota sobre puertos:**
- Puerto **8080**: Aplicación principal (desafíos 0-66)
- Puerto **8090**: Servidor MCP (requerido para el Desafío 60)

**📝 Nota sobre el Desafío 62 (Google Drive MCP):**
El Desafío 62 requiere que se configure una Cuenta de Servicio de Google para su funcionalidad completa. Consulta [docs/CHALLENGE62_GOOGLE_DRIVE_SETUP.md](https://github.com/owasp/wrongsecrets/blob/master/docs/CHALLENGE62_GOOGLE_DRIVE_SETUP.md) para las instrucciones de configuración. Sin configuración, el desafío mostrará un mensaje de marcador de posición.

Ahora puedes intentar encontrar los secretos resolviendo los desafíos ofrecidos en los enlaces a continuación
<details>
    <summary>Todos los enlaces para los desafíos Docker (haz clic en el triángulo para abrir el bloque).
    </summary>

-   [localhost:8080/challenge/challenge-0](http://localhost:8080/challenge/challenge-0)
-   [localhost:8080/challenge/challenge-1](http://localhost:8080/challenge/challenge-1)
-   [localhost:8080/challenge/challenge-2](http://localhost:8080/challenge/challenge-2)
-   [localhost:8080/challenge/challenge-3](http://localhost:8080/challenge/challenge-3)
-   [localhost:8080/challenge/challenge-4](http://localhost:8080/challenge/challenge-4)
-   [localhost:8080/challenge/challenge-8](http://localhost:8080/challenge/challenge-8)
-   [localhost:8080/challenge/challenge-12](http://localhost:8080/challenge/challenge-12)
-   [localhost:8080/challenge/challenge-13](http://localhost:8080/challenge/challenge-13)
-   [localhost:8080/challenge/challenge-14](http://localhost:8080/challenge/challenge-14)
-   [localhost:8080/challenge/challenge-15](http://localhost:8080/challenge/challenge-15)
-   [localhost:8080/challenge/challenge-16](http://localhost:8080/challenge/challenge-16)
-   [localhost:8080/challenge/challenge-17](http://localhost:8080/challenge/challenge-17)
-   [localhost:8080/challenge/challenge-18](http://localhost:8080/challenge/challenge-18)
-   [localhost:8080/challenge/challenge-19](http://localhost:8080/challenge/challenge-19)
-   [localhost:8080/challenge/challenge-20](http://localhost:8080/challenge/challenge-20)
-   [localhost:8080/challenge/challenge-21](http://localhost:8080/challenge/challenge-21)
-   [localhost:8080/challenge/challenge-22](http://localhost:8080/challenge/challenge-22)
-   [localhost:8080/challenge/challenge-23](http://localhost:8080/challenge/challenge-23)
-   [localhost:8080/challenge/challenge-24](http://localhost:8080/challenge/challenge-24)
-   [localhost:8080/challenge/challenge-25](http://localhost:8080/challenge/challenge-25)
-   [localhost:8080/challenge/challenge-26](http://localhost:8080/challenge/challenge-26)
-   [localhost:8080/challenge/challenge-27](http://localhost:8080/challenge/challenge-27)
-   [localhost:8080/challenge/challenge-28](http://localhost:8080/challenge/challenge-28)
-   [localhost:8080/challenge/challenge-29](http://localhost:8080/challenge/challenge-29)
-   [localhost:8080/challenge/challenge-30](http://localhost:8080/challenge/challenge-30)
-   [localhost:8080/challenge/challenge-31](http://localhost:8080/challenge/challenge-31)
-   [localhost:8080/challenge/challenge-32](http://localhost:8080/challenge/challenge-32)
-   [localhost:8080/challenge/challenge-34](http://localhost:8080/challenge/challenge-34)
-   [localhost:8080/challenge/challenge-35](http://localhost:8080/challenge/challenge-35)
-   [localhost:8080/challenge/challenge-36](http://localhost:8080/challenge/challenge-36)
-   [localhost:8080/challenge/challenge-37](http://localhost:8080/challenge/challenge-37)
-   [localhost:8080/challenge/challenge-38](http://localhost:8080/challenge/challenge-38)
-   [localhost:8080/challenge/challenge-39](http://localhost:8080/challenge/challenge-39)
-   [localhost:8080/challenge/challenge-40](http://localhost:8080/challenge/challenge-40)
-   [localhost:8080/challenge/challenge-41](http://localhost:8080/challenge/challenge-41)
-   [localhost:8080/challenge/challenge-42](http://localhost:8080/challenge/challenge-42)
-   [localhost:8080/challenge/challenge-43](http://localhost:8080/challenge/challenge-43)
-   [localhost:8080/challenge/challenge-49](http://localhost:8080/challenge/challenge-49)
-   [localhost:8080/challenge/challenge-50](http://localhost:8080/challenge/challenge-50)
-   [localhost:8080/challenge/challenge-51](http://localhost:8080/challenge/challenge-51)
-   [localhost:8080/challenge/challenge-52](http://localhost:8080/challenge/challenge-52)
-   [localhost:8080/challenge/challenge-54](http://localhost:8080/challenge/challenge-54)
-   [localhost:8080/challenge/challenge-55](http://localhost:8080/challenge/challenge-55)
-   [localhost:8080/challenge/challenge-56](http://localhost:8080/challenge/challenge-56)
-   [localhost:8080/challenge/challenge-57](http://localhost:8080/challenge/challenge-57)
-   [localhost:8080/challenge/challenge-58](http://localhost:8080/challenge/challenge-58)
-   [localhost:8080/challenge/challenge-59](http://localhost:8080/challenge/challenge-59)
-   [localhost:8080/challenge/challenge-60](http://localhost:8080/challenge/challenge-60)
-   [localhost:8080/challenge/challenge-61](http://localhost:8080/challenge/challenge-61)
-   [localhost:8080/challenge/challenge-62](http://localhost:8080/challenge/challenge-62)
-   [localhost:8080/challenge/challenge-63](http://localhost:8080/challenge/challenge-63)
-   [localhost:8080/challenge/challenge-64](http://localhost:8080/challenge/challenge-64)
-   [localhost:8080/challenge/challenge-65](http://localhost:8080/challenge/challenge-65)
-   [localhost:8080/challenge/challenge-66](http://localhost:8080/challenge/challenge-66)
</details>

Ten en cuenta que estos desafíos son aún muy básicos, y sus explicaciones también. Siéntete libre de enviar un PR para mejorarlos ;-).

### Ejecutarlos en Heroku

¡También puedes probarlos en [https://wrongsecrets.herokuapp.com/](https://wrongsecrets.herokuapp.com/)! La gente de Heroku nos ha proporcionado un increíble paquete de soporte de código abierto, que nos permite ejecutar la aplicación de forma gratuita allí, donde está casi siempre activa. Aun así, no hagas fuzzing ni intentes derribarla: estarías estropeando la experiencia para otros que quieran probarla.
Usa [este enlace](https://wrongsecrets.herokuapp.com/) para usar nuestra versión alojada de la aplicación. Si deseas alojarla tú mismo en Heroku (por ejemplo, para realizar un entrenamiento), puedes hacerlo haciendo clic en [este enlace](https://heroku.com/deploy?template=https://github.com/OWASP/wrongsecrets/tree/master). Ten en cuenta que esto incurrirá en costos de los cuales este proyecto y/o sus mantenedores no pueden hacerse responsables.

### Ejecutarlos en Render.io
*estado: experimental*

Puedes probarlos en [https://wrongsecrets.onrender.com/](https://wrongsecrets.onrender.com/). Por favor, entiende que ejecutamos en una instancia de nivel gratuito, no podemos dar garantías. No hagas fuzzing ni intentes derribarla: estarías estropeando la experiencia para otros que quieran probarla.
¿Quieres desplegar tú mismo con Render? Haz clic en el botón de abajo:

[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/OWASP/wrongsecrets)

### Ejecutarlos en Railway
*estado: mantenido por [alphasec.io](https://github.com/alphasecio)*

Si deseas alojar WrongSecrets en Railway, puedes hacerlo desplegando [esta plantilla de un clic](https://railway.com/deploy/McqJ_j?referralCode=I07F1). Railway ya no ofrece un plan siempre gratuito, pero la prueba gratuita es suficiente para probarlo antes de decidirte a actualizar. Si necesitas una guía paso a paso, consulta [esta entrada de blog](https://alphasec.io/test-your-secret-management-skills-with-owasp-wrongsecrets/).

[![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/McqJ_j?referralCode=I07F1)

## Ejercicio básico de K8s

_Puede usarse para los desafíos 0-6, 8, 12-43, 48-66_

### Basado en Minikube

Asegúrate de tener instalado lo siguiente:

-   Docker [Instalar desde aquí](https://docs.docker.com/get-docker/)
-   Minikube [Instalar desde aquí](https://minikube.sigs.k8s.io/docs/start/)

La configuración de K8S actualmente se basa en el uso de Minikube para diversión local. Puedes usar los comandos a continuación desde la raíz del proyecto:```bash
    minikube start
    kubectl apply -f k8s/secrets-config.yml
    kubectl apply -f k8s/secrets-secret.yml
    kubectl apply -f k8s/challenge33.yml
    kubectl apply -f k8s/challenge53/secret-challenge53.yml
    echo "Setting up the bitnami sealed secret controler"
    kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.0/controller.yaml
    kubectl apply -f k8s/sealed-secret-controller.yaml
    kubectl apply -f k8s/main.key
    kubectl delete pod -n kube-system -l name=sealed-secrets-controller
    kubectl create -f k8s/sealed-challenge48.json
    echo "finishing up the sealed secret controler part"
    wait 10 #or check whether secret48 is there
    kubectl apply -f k8s/secret-challenge-deployment.yml
    while [[ $(kubectl get pods -l app=secret-challenge -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') != "True" ]]; do echo "waiting for secret-challenge" && sleep 2; done
    kubectl expose deployment secret-challenge --type=LoadBalancer --port=8080
    minikube service secret-challenge

Alternativamente puedes hacer :```bash ./k8s-vault-minikube-start.sh

root@kitploit:~
ahora puedes usar la dirección IP y el puerto proporcionados para jugar más con la variante de K8s (en lugar de localhost).

-   [localhost:8080/challenge/challenge-5](http://localhost:8080/challenge/challenge-5)
-   [localhost:8080/challenge/challenge-6](http://localhost:8080/challenge/challenge-6)
-   [localhost:8080/challenge/challenge-33](http://localhost:8080/challenge/challenge-33)
-   [localhost:8080/challenge/challenge-48](http://localhost:8080/challenge/challenge-48)
-   [localhost:8080/challenge/challenge-53](http://localhost:8080/challenge/challenge-53)

### basado en k8s

¿Quieres ejecutar vanilla en tu propio k8s? Usa los comandos a continuación:```bash
    kubectl apply -f k8s/secrets-config.yml
    kubectl apply -f k8s/secrets-secret.yml
    echo "Setting up the bitnami sealed secret controler"
    kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.27.0/controller.yaml
    kubectl apply -f k8s/sealed-secret-controller.yaml
    kubectl apply -f k8s/main.key
    kubectl delete pod -n kube-system -l name=sealed-secrets-controller
    kubectl create -f k8s/sealed-challenge48.json
    echo "finishing up the sealed secret controler part"
    wait 10 #or check whether secret48 is there
    kubectl apply -f k8s/challenge33.yml
    kubectl apply -f k8s/secret-challenge-deployment.yml
    while [[ $(kubectl get pods -l app=secret-challenge -o 'jsonpath={..status.conditions[?(@.type=="Ready")].status}') != "True" ]]; do echo "waiting for secret-challenge" && sleep 2; done
    kubectl port-forward \
        $(kubectl get pod -l app=secret-challenge -o jsonpath="{.items[0].metadata.name}") \
        8080:8080

ahora puedes usar la dirección IP y el puerto proporcionados para seguir jugando con la variante K8s (en lugar de localhost).

  • localhost:8080/challenge/challenge-5
  • localhost:8080/challenge/challenge-6
  • localhost:8080/challenge/challenge-33
  • localhost:8080/challenge/challenge-48

Ejercicios de Vault con minikube

Puede usarse para los desafíos 0-8, 12-66 Asegúrate de tener instalado lo siguiente:

  • minikube con docker (o comenta la línea 8 y trabaja en tu propia configuración de k8s),
  • docker,
  • helm Instálalo desde aquí,
  • kubectl Instálalo desde aquí,
  • jq Instálalo desde aquí,
  • vault Instálalo desde aquí,
  • grep, Cat y Sed

Ejecuta ./k8s-vault-minikube-start.sh. Cuando el script termine, los desafíos te esperarán en http://localhost:8080. Esto te permitirá ejecutar los desafíos 0-8, 12-66.

Cuando hayas detenido el script k8s-vault-minikube-start.sh y quieras reanudar el reenvío de puertos, ejecuta: k8s-vault-minikube-resume.sh. Esto se debe a que si ejecutas el script de inicio nuevamente, reemplazará el secreto en vault y no actualizará la aplicación secret-challenge con el nuevo secreto.

Desafíos en la Nube

Puede usarse para los desafíos 0-66

LEE ESTO: Dado que los ejercicios a continuación contienen ejercicios de escalada de privilegios IAM, nunca ejecutes esto en una cuenta que esté relacionada con tu entorno de producción o que pueda influir en tus recursos transversales a la cuenta.

Ejecutar WrongSecrets en AWS

Sigue los pasos en el README en la subcarpeta de AWS.

Ejecutar WrongSecrets en GCP

Sigue los pasos en el README en la subcarpeta de GCP.

Ejecutar WrongSecrets en Azure

Sigue los pasos en el README en la subcarpeta de Azure.

Ejecutar solo el Desafío 15 en tu propia nube

Cuando quieras incluir tus propios Canarytokens para tu despliegue en la nube, haz lo siguiente:

  1. Haz un fork del proyecto.
  2. Asegúrate de usar los scripts de ingreso de GCP o ingreso de AWS para generar un ingreso para tu proyecto.
  3. Ve a canarytokens.org y selecciona AWS Keys, en el campo webHook URL agrega <tu-dominio-creado-en-el-paso1>/canaries/tokencallback.
  4. Cifra las credenciales recibidas para que Challenge15 pueda descifrarlas nuevamente.
  5. Haz commit de los materiales cifrados y sin cifrar a Git y luego haz commit nuevamente sin los materiales descifrados.
  6. Adapta las pistas del Desafío 15 en tu fork para que apunten a tu fork.
  7. Crea un contenedor y súbelo a tu registro.
  8. Sobrescribe los archivos de definición de K8s para AWS o GCP.

¿Quieres jugar sin guía o sin spoilers?

Cada desafío tiene un botón Mostrar pistas y un botón ¿Qué está mal?. Estos botones ayudan a simplificar los desafíos y proporcionan una explicación al lector. Sin embargo, las explicaciones pueden arruinar la diversión si quieres hacer esto como un ejercicio de hacking. Por lo tanto, puedes manipularlos sobrescribiendo la siguiente configuración en tu entorno:

  • hints_enabled=false desactivará el botón Mostrar pistas.
  • reason_enabled=false desactivará el botón de explicación ¿Qué está mal?.
  • spoiling_enabled=false desactivará el endpoint /spoil/challenge-x (donde x es el nombre corto del desafío).

Habilitar Swaggerdocs y la UI

Puedes habilitar la documentación de Swagger y la UI de Swagger sobrescribiendo SPRINGDOC_UI y SPRINGDOC_DOC al ejecutar el contenedor Docker.

Agradecimientos especiales y Contribuyentes

Líderes:

  • Ben de Haan @bendehaan
  • Jeroen Willemsen @commjoen

Principales contribuyentes:

  • Jannik Hollenbach @J12934
  • Puneeth Y @puneeth072003
  • Joss Sparkes @RemakingEden

Contribuyentes:

  • Nanne Baars @nbaars
  • Marcin Nowak @drnow4u
  • Rodolfo Neves @roddas
  • Osama Magdy @osamamagdy
  • Pastekitoo @Pastekitoo
  • Shubham Patel @Shubham-Patel07
  • za @za
  • Divyanshu Dev @Novice-expert
  • Tibor Hercz @tiborhercz
  • Adarsh A @adarsh-a-tw
  • Chris Elbring Jr. @neatzsche
  • Diamond Rivero @diamant3
  • Norbert Wolniak @nwolniak
  • Robert Felber @rfelber
  • Filip Chyla @fchyla
  • Vineeth Jagadeesh @djvinnie
  • Dmitry Litosh @Dlitosh
  • Mahaputra Ilham Awal @mahaputrailhamawal
  • Turjo Chowdhury @turjoc120
  • SndR @SndR85
  • alphasec @alphasecio
  • CaduRoriz @CaduRoriz
  • Josh Grossman @tghosth
  • Madhu Akula @madhuakula

Evaluadores:

  • Dave van Stein @davevs
  • Marcin Nowak @drnow4u
  • Marc Chang Sing Pang @mchangsp
  • Vineeth Jagadeesh @djvinnie

Agradecimientos especiales:

  • Madhu Akula @madhuakula @madhuakula
  • Nanne Baars @nbaars @nbaars
  • Bjorn Kimminich @bkimminich
  • Dan Gora @devsecops
  • Xiaolu Dai @saragluna
  • Jonathan Giles @jonathanGiles

Patrocinios

Nos gustaría agradecer a las siguientes entidades por su ayuda:

gitguardian_logo.png

GitGuardian por su patrocinio que nos permite pagar las cuentas de nuestras cuentas en la nube.

JetBrains logo.

Jetbrains por licenciar una instancia de Intellij IDEA Ultimate edition a los líderes del proyecto. ¡No podríamos haber sido tan rápidos con el desarrollo sin ello!

1password_logo.png

1Password por otorgarnos una licencia de código abierto para 1Password para el banco de pruebas de detección de secretos.

AWS Open Source

AWS por otorgarnos créditos de AWS Open Source que utilizamos para probar nuestro proyecto y la configuración de Wrongsecrets CTF Party en AWS.

Se necesita ayuda

Puedes ayudarnos mediante los siguientes métodos:

  • Danos una estrella
  • Comparte esta aplicación con otros
  • Por supuesto, siempre podemos usar tu ayuda para obtener más sabores de secretos "mal" configurados para difundir conciencia. ¡Nos encantaría recibir ayuda con otros proveedores de nube, como Alibaba o Tencent cloud, por ejemplo! ¿Te falta algo más que un proveedor de nube? ¡Abre un issue o crea un PR! Consulta nuestra guía para contribuir para más detalles. Los contribuyentes serán listados en los lanzamientos, en la sección "Agradecimientos especiales y Contribuyentes", y en la aplicación web.

Usa OWASP WrongSecrets como un punto de referencia para la detección de secretos

Dado que están surgiendo muchas herramientas de detección de secretos tanto para Docker como para Git, estamos creando un banco de pruebas de referencia. ¿Quieres saber si tu herramienta detecta todo? Mantendremos un registro de los secretos incrustados en este issue y tenemos una rama en la que colocamos secretos adicionales para que tu herramienta los detecte. La rama contendrá un script de generación de contenedores Docker con el que podrás probar eventualmente el escaneo de secretos de tu contenedor.

Comparación automatizada de escáneres de secretos

Ahora proporcionamos un flujo de trabajo automatizado de GitHub Action que compara múltiples herramientas de escaneo de secretos contra la base de código de WrongSecrets. El flujo de trabajo de Comparación de Escáneres de Secretos prueba 7 herramientas diferentes:

  • TruffleHog - Escáner de secretos basado en Docker
  • git-secrets - Escáner de hook de Git de AWS Labs
  • gitleaks - Escáner de alto rendimiento basado en Go
  • detect-secrets - Escáner empresarial de Yelp
  • gittyleaks - Detector de patrones basado en Python
  • whispers - Escáner estructurado de Skyscanner
  • trufflehog3 - Versión en Python de TruffleHog

El flujo de trabajo se ejecuta semanalmente y proporciona una tabla de comparación que muestra cuántos secretos detecta cada herramienta, ayudándote a comprender la efectividad relativa de las diferentes herramientas de escaneo de secretos. Consulta docs/scanner-comparison.md para obtener más detalles sobre cómo ejecutar e interpretar los resultados.

CTF

Tenemos 3 formas de jugar CTFs:

  • El enfoque rápido de "vamos a jugar" basado en nuestro propio dominio de Heroku https://wrongsecrets-ctf.herokuapp.com, que documentamos para ti aquí.
  • Un enfoque más extendido documentado en ctf-instructions.md.
  • Una configuración de CTF totalmente personalizable donde cada jugador obtiene su propia instancia virtual de WrongSecrets y una instancia virtual del wrongsecrets-desktop, para que todos puedan jugar sin complicaciones. Para esto debes usar la configuración de WrongSecrets CTF Party.

Soporte para CTFD

¿Quieres usar CTFD para jugar un CTF basado en la instancia gratuita de Heroku wrongsecrets-ctf junto con CTFD? ¡Puedes!

NOTA: El soporte para CTFD ahora funciona basado en Juiceshop CTF CLI.

NOTA-II: https://wrongsecrets-ctf.herokuapp.com (temporalmente inactivo debido a la falta de créditos de código abierto) está basado en Heroku y tiene capacidad limitada.

La creación inicial del archivo zip para CTFD requiere que visites https://wrongsecrets-ctf.herokuapp.com/api/Challenges una vez antes de ejecutar los pasos a continuación.

Sigue los siguientes pasos:```shell npm install -g [email protected] juice-shop-ctf #choose ctfd and https://wrongsecrets-ctf.herokuapp.com as domain. No trailing slash! The key is 'TRwzkRJnHOTckssAeyJbysWgP!Qc2T', feel free to enable hints. docker run -p 8001:8000 -it ctfd/ctfd:3.7.4

root@kitploit:~
> **Nota:** Las pistas solo se pueden generar si la instancia de WrongSecrets tiene las pistas habilitadas (`HINTS_ENABLED=true`). La instancia de Heroku CTF ([https://wrongsecrets-ctf.herokuapp.com](https://wrongsecrets-ctf.herokuapp.com)) se ejecuta con `HINTS_ENABLED=false`, por lo que seleccionar "Pistas gratuitas" o "Pistas de pago" resultará en una lista de pistas vacía. Para generar pistas, ejecuta tu propia instancia con `HINTS_ENABLED=true`.

Ahora visita la instancia de CTFD en [http://localhost:8001](http://localhost:8001) y configura tu CTF.
Luego usa la función de copia de seguridad administrativa para importar el archivo zip que creaste con el comando juice-shop-ctf.
¡A jugar usando [https://wrongsecrets-ctf.herokuapp.com](https://wrongsecrets-ctf.herokuapp.com)!
¿Quieres configurar el tuyo propio? ¡Puedes! Sin embargo, ten cuidado de que otros encuentren tu clave, así que asegúrala adecuadamente: asegúrate de que el contenedor en ejecución con la clave ctf real no esté expuesto al público, similar a nuestro contenedor de Heroku.

## Soporte FBCTF (Experimental!)

NOTA: El soporte FBCTF es experimental.

Sigue los mismos pasos que con CTFD, solo que ahora elige fbctfd y como URL para el mapeo de países elige `https://raw.githubusercontent.com/OWASP/wrongsecrets/79a982558016c8ce70948a8106f9a2ee5b5b9eea/config/fbctf.yml`.
Luego sigue [https://github.com/facebookarchive/fbctf/wiki/Quick-Setup-Guide](https://github.com/facebookarchive/fbctf/wiki/Quick-Setup-Guide) para ejecutar el FBCTF.

## Notas sobre el desarrollo

Para el desarrollo en la máquina local usa el perfil `local` `./mvnw spring-boot:run -Dspring-boot.run.profiles=local,without-vault`

Si quieres probar contra vault sin K8s: inicia vault localmente con```shell
 export SPRING_CLOUD_VAULT_URI='http://127.0.0.1:8200'
 export VAULT_API_ADDR='http://127.0.0.1:8200'
 vault server -dev

y en tu siguiente terminal, haz (con el token de los comandos anteriores):```shell export SPRING_CLOUD_VAULT_URI='http://127.0.0.1:8200' export SPRING_CLOUD_VAULT_TOKEN='' vault token create -id="00000000-0000-0000-0000-000000000000" -policy="root" vault kv put secret/secret-challenge vaultpassword.password="$(openssl rand -base64 16)" vault kv put secret/injected vaultinjected.value="$(openssl rand -base64 16)" vault kv put secret/codified challenge47secret.value="debugvalue"

root@kitploit:~
Ahora usa el perfil `local-vault` para hacer tu desarrollo.```shell
./mvnw spring-boot:run -Dspring-boot.run.profiles=local,local-vault

Si quieres desarrollar sin una instancia de Vault, usa adicionalmente el perfil without-vault para realizar tu desarrollo:```shell ./mvnw spring-boot:run -Dspring-boot.run.profiles=local,without-vault

root@kitploit:~
¿Quieres subir un contenedor? Consulta `.github/scripts/docker-create-and-push.sh` para un script que genera y sube todos los contenedores. No olvides reconstruir la aplicación antes de componer el contenedor.

¿Quieres comprobar por qué algo en vault no funciona en kubernetes? Ejecuta `kubectl exec vault-0 -n vault -- vault audit enable file file_path=stdout`.

### Gestión de dependencias

Tenemos integrados CycloneDX y OWASP Dependency-check para verificar dependencias en busca de vulnerabilidades.
Puedes usar el OWASP Dependency-checker llamando a `mvn dependency-check:aggregate` y `mvn cyclonedx:makeBom` para usar CycloneDX y crear un SBOM.

### Configuración del plugin Dependency-Check Maven

OWASP WrongSecrets utiliza el plugin [`dependency-check-maven`](https://jeremylong.github.io/DependencyCheck/dependency-check-maven/index.html) para escanear automáticamente las dependencias del proyecto en busca de vulnerabilidades conocidas (CVEs).

#### Cómo funciona

- El plugin se ejecuta durante la compilación de Maven (`./mvnw clean install`) y verifica todas las dependencias contra bases de datos de vulnerabilidades públicas.
- Por defecto, utiliza la NVD (National Vulnerability Database) y también puede usar OSS Index para una cobertura adicional.

#### Aspectos destacados de la configuración

El plugin se configura en `pom.xml` dentro de la sección `<build><plugins>`:```xml
<plugin>
  <groupId>org.owasp</groupId>
  <artifactId>dependency-check-maven</artifactId>
  <version>${dependency-check-maven.version}</version>
  <configuration>
    <nvdApiKey>...</nvdApiKey>
    <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
    <ossIndexServerId>ossindex</ossIndexServerId>
    <ossIndexAnalyzerEnabled>true</ossIndexAnalyzerEnabled> <!-- SET THIS TO FALSE IF YOU HAVE NO SONATYPE ACCOUNT! -->
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>check</goal>
      </goals>
    </execution>
  </executions>
</plugin>
  • nvdApiKey: Clave de API para acceder a la base de datos NVD (recomendada para escaneos más rápidos y fiables).
  • ossIndexServerId: Hace referencia a las credenciales en tu settings.xml de Maven para OSS Index (ver más abajo).
  • ossIndexAnalyzerEnabled: Establécelo en true para habilitar el escaneo de OSS Index. Si encuentras errores de autenticación (401), configúralo en false para deshabilitar OSS Index.

Autenticación con OSS Index

Para usar OSS Index, necesitas agregar tus credenciales a tu settings.xml de Maven:```xml ossindex YOUR_OSSINDEX_USERNAME YOUR_OSSINDEX_API_TOKEN

root@kitploit:~
Reemplaza `YOUR_OSSINDEX_USERNAME` y `YOUR_OSSINDEX_API_TOKEN` con los detalles de tu cuenta de OSS Index.

#### Troubleshooting

- Si ves errores `401 Unauthorized` para OSS Index, verifica tus credenciales o deshabilita OSS Index configurando `<ossIndexAnalyzerEnabled>false</ossIndexAnalyzerEnabled>` en `pom.xml`.
- Siempre puedes ejecutar la compilación sin OSS Index si prefieres solo el escaneo basado en NVD.

#### More Info

Consulta la [Documentación del Plugin Maven de Dependency-Check](https://jeremylong.github.io/DependencyCheck/dependency-check-maven/index.html) para opciones de configuración avanzadas.

### Get the project started in IntelliJ IDEA

Requisitos: asegúrate de tener instaladas las siguientes herramientas: [Docker](https://www.docker.com/products/docker-desktop/), [Java25 JDK](https://jdk.java.net/25/), [NodeJS 24](https://nodejs.org/en/download/current) e [IntelliJ IDEA](https://www.jetbrains.com/idea/download).

1. Haz un fork y clona el proyecto como se describe en la [documentación](https://github.com/OWASP/wrongsecrets/blob/master/CONTRIBUTING.md).
2. Importa el proyecto en IntelliJ (por ejemplo, como proyecto mvn / fuentes locales).
3. Ve a la configuración del proyecto y asegúrate de que use Java25 (y que el JDK se pueda encontrar).
4. Ve a IDE settings > Language & Frameworks > Lombok y asegúrate de que el procesamiento de Lombok esté habilitado.
5. Abre la pestaña Maven en tu IDEA y ejecuta "Reload All Maven Projects" para sincronizar el sistema y descargar todo. Luego, en esa misma pestaña, usa la opción "install" como parte del ciclo de vida de OWASP WrongSecrets para generar el asciidoc y demás.
6. Ahora ejecuta el método `main` en `org.owasp.wrongsecrets.WrongSecretsApplication.java`. Esto debería fallar con un stack trace.
7. Ahora ve a la configuración de ejecución de la aplicación y asegúrate de tener el perfil activo `without-vault`. Esto se hace configurando los argumentos de opciones de VM en `--server.port=8080 --spring.profiles.active=local,without-vault`. Establece `K8S_ENV=docker` como argumento de entorno.
8. Repite el paso 6: ejecuta la aplicación nuevamente; deberías tener una aplicación funcionando correctamente que se puede visitar en http://localhost:8080.

**Guía ilustrada** sobre cómo iniciar el proyecto en IntelliJ IDEA está disponible en [_Contributing.md_](https://github.com/OWASP/wrongsecrets/blob/master/CONTRIBUTING.md#how-to-get-started-with-the-project-in-intellij-idea).

Siéntete libre de editar y proponer cambios mediante pull requests. Asegúrate de seguir nuestra guía en la [documentación](https://github.com/OWASP/wrongsecrets/blob/master/CONTRIBUTING.md) para que tu trabajo sea aceptado.

Ten en cuenta que oficialmente solo soportamos Linux y MacOS para desarrollo. Si deseas desarrollar usando una máquina Windows, usa WSL2 o una máquina virtual con Linux. Incluimos detección de Windows y un montón de archivos `exe` para un primer experimento, pero buscamos mantenedores activos para ellos. ¿Quieres asegurarte de que funcione en Windows? ¡Crea PRs ;-).

Si, después de leer esta sección, aún no tienes idea sobre el código de la aplicación: echa un vistazo [a algunos tutoriales sobre Spring Boot de Baeldung](https://www.baeldung.com/spring-boot).

### Automatic reload during development

Para que los cambios realizados se carguen más rápido, agregamos `spring-dev-tools` al proyecto Maven.
Para habilitar esto en IntelliJ automáticamente, asegúrate de:

-   En Compiler -> Automatically build project esté activado, y
-   En Advanced settings -> Allow auto-make to start even if developed application is currently running.

También puedes invocar manualmente: Build -> Recompile the file you just changed, esto también forzará la recarga de la aplicación.

### How to add a Challenge

Sigue los pasos a continuación para agregar un desafío:

1. Primero asegúrate de tener un [Issue](https://github.com/OWASP/wrongsecrets/issues) reportado para el cual realmente se desee un desafío.
2. Añade el nuevo desafío en la carpeta `org.owasp.wrongsecrets.challenges`. Asegúrate de agregar una explicación en `src/main/resources/explanations` y hacer referencia a ella desde tu nueva clase Challenge.
3. Agrega pruebas unitarias, de integración y de IU según corresponda para demostrar que tu desafío funciona.
4. No olvides configurar el desafío en `src/main/resources/wrong-secrets-configuration.yaml`
5. Revisa la [guía de CONTRIBUTING](https://github.com/owasp/wrongsecrets/blob/master/CONTRIBUTING.md) para configurar tu entorno de contribución y escribir buenos mensajes de commit.

Para más detalles, consulta [_Contributing.md_](https://github.com/OWASP/wrongsecrets/blob/master/CONTRIBUTING.md#how-to-add-a-challenge).

Si deseas mover desafíos cloud existentes a otra nube: extiende las clases Challenge en el paquete `org.owasp.wrongsecrets.challenges.cloud` y asegúrate de agregar el Terraform requerido en una carpeta con el identificador de la nube correspondiente. Asegúrate de que el entorno se agregue a `org.owasp.wrongsecrets.RuntimeEnvironment`.
Colabora con los demás en el proyecto para que tu contenedor se ejecute y puedas probar en la cuenta cloud.

### Local testing

Si has realizado algunos cambios en el código base o agregado un nuevo desafío y te gustaría ver exactamente cómo se verá el contenedor después de fusionarlo para pruebas, tenemos un script que facilita esto. Sigue los pasos a continuación:

1. Asegúrate de tener bash instalado y abierto.
2. Navega a .github/scripts.
3. Ejecuta el script docker-create `bash docker-create.sh`.
   - Nota: ¿Quieres ejecutar esto en tu minikube? entonces primero ejecuta `eval $(minikube docker-env)`.
4. Sigue las instrucciones que se den, es posible que necesites instalar/cambiar paquetes.
5. Ejecuta el contenedor recién creado:
  - para ejecutarlo localmente: `docker run -p 8080:8080 -p 8090:8090 jeroenwillemsen/wrongsecrets:local-test-no-vault`
  - para ejecutarlo en tu minikube: usa el contenedor `jeroenwillemsen/wrongsecrets:local-test-k8s-vault` en tu definición de despliegue.
  - para ejecutarlo con Vault en tu minikube: usa el contenedor `jeroenwillemsen/wrongsecrets:local-test-local-vault` en tu definición de despliegue.

### Local Automated testing

Actualmente tenemos 2 suites de pruebas diferentes, ambas ejecutadas con `./mvnw test`.
- Una suite de pruebas junit normal de pruebas unitarias y de integración, ubicada en la carpeta [`test/java`](https://github.com/owasp/wrongsecrets/blob/master/src/test/java) con salida almacenada en el directorio target predeterminado.
- Una suite de pruebas cypress, integrada mediante una prueba junit, ubicada en la carpeta [`test/e2e`](https://github.com/owasp/wrongsecrets/blob/master/src/test/e2e) con salida almacenada en [`target/test-classes/e2e/cypress/reports/`](https://github.com/owasp/wrongsecrets/blob/master/target/test-classes/e2e/cypress/reports). Consulta el [readme de cypress](https://github.com/owasp/wrongsecrets/blob/master/src/test/e2e/cypress/README.md) para más detalles.

Nota: Puedes hacer un ciclo completo de limpieza, compilación y pruebas con `./mvnw clean install`.

## 🔧 Troubleshooting

### Common Issues

**Problemas de Docker:**
- **Puerto ya en uso**: Cambia el mapeo de puertos: `docker run -p 8081:8080 -p 8091:8090 jeroenwillemsen/wrongsecrets:latest-no-vault`
- **Docker no encontrado**: Asegúrate de que Docker esté instalado y en ejecución
- **Permiso denegado**: En Linux, es posible que necesites agregar tu usuario al grupo docker

**Problemas del navegador:**
- **No se puede acceder a localhost:8080**: Verifica si el contenedor Docker se está ejecutando con `docker ps`
- **Los desafíos no cargan**: Limpia la caché del navegador o prueba el modo incógnito

**Problemas de Kubernetes:**
- **Minikube no se inicia**: Prueba `minikube delete` y luego `minikube start`
- **Pods atascados en pending**: Verifica los recursos con `kubectl describe pod <nombre-del-pod>`

**¿Necesitas ayuda?**
- Consulta nuestros [GitHub Issues](https://github.com/OWASP/wrongsecrets/issues)
- Únete a nosotros en [OWASP Slack](https://owasp.slack.com/archives/C02KQ7D9XHR)
- Revisa la sección de [Soporte](#support)

## Want to play, but are not allowed to install the tools?

Si quieres jugar los desafíos, pero no puedes instalar herramientas como keepass, Radare, etc., pero tienes permitido ejecutar contenedores Docker, prueba lo siguiente:```shell
docker run -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock jeroenwillemsen/wrongsecrets-desktop:latest

o usa algo más configurable:```shell docker run -d
--name=webtop
--security-opt seccomp=unconfined
-e PUID=1000
-e PGID=1000
-e TZ=Europe/London
-e SUBFOLDER=/
-e KEYBOARD=en-us-qwerty
-p 3000:3000
-v /var/run/docker.sock:/var/run/docker.sock
--shm-size="2gb"
--restart unless-stopped
jeroenwillemsen/wrongsecrets-desktop:latest

root@kitploit:~
Y luego en [http://localhost:3000](http://localhost:3000).

Nota: ten cuidado al intentar desplegar el contenedor `jeroenwillemsen/wrongsecrets-desktop` en Heroku ;-).

## Docker en macOS con M1 y Colima (¡Experimental!)

NOTA: No brindamos soporte oficial a Colima, ya que hemos visto que los runners de Github tienen muchos problemas con él.

Si no puedes cambiar a Docker Desktop/Podman y quieres usar Colima con Apple Silicon M1
para ejecutar la imagen de Docker `jeroenwillemsen/wrongsecrets`, prueba una de las siguientes opciones:

- apagar Colima (`colima stop`)
- cambiar el contexto de Docker (`docker --context desktop-linux run -p 8080:8080 jeroenwillemsen/wrongsecrets:latest-no-vault`)
- ejecutar Colima con 1 CPU (`colima start -m 8 -c 1 --arch x86_64`)

## ¿Quieres deshabilitar desafíos en tu propia versión?

Si quieres ejecutar WrongSecrets pero sin ciertos desafíos que no deseas presentar a otros: lee esta sección.

*_NOTA_* Ten en cuenta que no brindamos ningún soporte a tu fork cuando sigas el proceso a continuación. Por favor, comprende que la licencia y los derechos de autor de la aplicación original permanecen intactos para tu Fork.

Requisitos:
- Tener instalado el JDK de Java 25;
- Tener una cuenta en un registro al que puedas subir tu variante del contenedor WrongSecrets;

Estos son los pasos que debes seguir para crear tu propia versión de WrongSecrets con ciertos desafíos deshabilitados:
1. Haz un fork del repositorio.
2. En `src/main/resources/wrong-secrets-configuration.yaml`, elimina la referencia al desafío que ya no deseas tener en tu fork.
3. En la raíz del proyecto, ejecuta `./mvnw clean install`
4. Ahora construye la imagen Docker para tu objetivo deseado:```sh
   docker buildx create --name mybuilder
   docker buildx use mybuilder
   docker buildx build --platform linux/amd64,linux/arm64 -t <registry/container-name>:<yourtag>-no-vault --build-arg "argBasedPassword='this is on your command line'" --build-arg "PORT=8081" --build-arg "argBasedVersion=<yourtag>" --build-arg "spring_profile=without-vault" --push
   docker buildx build --platform linux/amd64,linux/arm64 -t <registry/container-name>:<yourtag>-kubernetes-vault--build-arg "argBasedPassword='this is on your command line'" --build-arg "PORT=8081" --build-arg "argBasedVersion=<yourtag>" --build-arg "spring_profile=kubernetes-vault" --push

Lectura adicional sobre gestión de secretos

¿Quieres aprender más? Consulta las siguientes fuentes:

  • Blog: 10 Consejos sobre Gestión de Secretos
  • OWASP SAMM sobre Gestión de Secretos
  • El tema de detección de secretos en Github
  • Cheatsheet de Gestión de Secretos de OWASP
  • OpenCRE sobre gestión de secretos
Descargar herramienta
Mike Woudenberg @mikewoudenberg
  • Spyros @northdpole
  • moeedrehman135 @moeedrehman135
  • RubenAtBinx @RubenAtBinx
  • Seershan Mitra @seershan
  • Alex Bender @alex-bender
  • Danny Lloyd @dannylloyd
  • Fern @f3rn0s
  • Rick M @kingthorin
  • Nicolas Humblot @nhumblot
  • Shlomo Zalman Heigh @szh
  • Jeff Tong @Wind010