Tutoriales

Entornos de CI/CD intencionalmente vulnerables

Este CI/CD-Cabra Este proyecto permite a los ingenieros y profesionales de la seguridad aprender y practicar la seguridad de CI/CD a través de un conjunto de 10 desafíos formulados en un entorno de CI/CD real y maduro. Los escenarios tienen diferentes niveles de dificultad, cada uno centrado en un vector de ataque principal.

Portadas de desafíos Los 10 principales riesgos de seguridad de CI/CDincluido un mecanismo de control de flujo insuficiente, PPE (ejecución de canalización envenenada), abuso de la cadena de dependencia, PBAC (control de acceso basado en canalización), etc.
Los diferentes desafíos están inspirados en Alicia en el País de las Maravillas, cada uno con un personaje diferente.

El entorno del proyecto se basa en imágenes de Docker y se puede ejecutar localmente. Estas imágenes son:

  1. Gitea (el servidor git más pequeño)
  2. Jenkins
  3. Proxy de Jenkins
  4. LocalStack (un emulador de servicios en la nube que se ejecuta en un solo contenedor)
  5. ligero
  6. CTFd (Capture the Flag Framework).

Las imágenes están configuradas para estar interconectadas de una manera que crea una canalización completamente funcional.

descargar y ejecutar

No es necesario clonar el repositorio.

linux y mac

curl -o cicd-goat/docker-compose.yaml --create-dirs 
cd cicd-goat && docker-compose up -d

Windows (PowerShell)

mkdir cicd-goat; cd cicd-goat
curl -o docker-compose.yaml 
get-content docker-compose.yaml | %{$_ -replace "bridge","nat"}
docker-compose up -d

uso

instruir

  • ¡Alerta de spoiler! Evite navegar por los archivos del repositorio ya que contienen spoilers.
  • Para configurar su cliente git para acceder a repositorios privados, recomendamos clonar usando la url http.
  • En cada desafío, encuentra la bandera – el formato es bandera# (P.ej Bandera 2) u otro formato si se menciona específicamente.
  • Cada desafío es independiente. No utilice el acceso que obtiene en un desafío para resolver otro desafío.
  • Use las sugerencias en CTFd si es necesario.
  • No es necesario explotar CVE.
  • No es necesario secuestrar la cuenta de administrador de Gitea o Jenkins (llamada «admin» o «red-queen»).

acepta el desafío

  1. Después de iniciar el contenedor, puede llevar hasta 5 minutos completar el proceso de configuración del contenedor.
  2. Inicie sesión en CTFd en Mira los desafíos:
    • nombre de usuario: alice
    • clave: alice
  3. pirata informático:
  4. Inserte banderas en CTFd y vea si lo hizo bien.

solución de problemas

  • Si Gitea muestra una página en blanco, actualice la página.
  • Al bifurcar un repositorio, no cambie el nombre del repositorio bifurcado.

contribuir

desarrollar

  1. Clonar el repositorio.
  2. Cambie el nombre de la carpeta .git para que esté disponible:
    python3 renombrar .py git
  3. Instalar dependencias de prueba: pip3 install pipenv==2022.8.30 pipenv install –deploy
  4. Ejecute el entorno de desarrollo para experimentar con los nuevos cambios: rm -rf tmp tmp-ctfd/ cp -R ctfd/data/ tmp-ctfd/ docker-compose -f docker-compose-dev.yaml up -d
  5. Realice los cambios necesarios:
  6. Apague el entorno, mueva los cambios realizados en CTFd y reconstrúyalo: docker-compose -f docker-compose-dev.yaml down ./apply.sh # save CTFd changes docker-compose -f docker-compose-dev.yaml up – d – construir
  7. Ejecute las pruebas: pruebas pytest/
  8. Cambie el nombre de la carpeta .git para permitir inserciones: python3 rename.py notgit
  9. ¡Envía y empuja!

lista

Siga la lista de verificación a continuación para agregar desafíos:

  1. CTFd:
    1. Escribe una descripción del desafío.
    2. Elige una categoría según el nivel de dificultad.
    3. Asegúrese de que los desafíos sean visibles y tengan valor según la dificultad.
    4. Escriba las indicaciones en el orden de uso.
    5. Añade una bandera. Asegúrese de seleccionar si no distingue entre mayúsculas y minúsculas o no.
  2. Gitia:
    1. Configura un nuevo repositorio en gitea.yaml.
    2. Crear un repositorio bajo gitea/repositoriosUtilice un repositorio de código abierto bajo la licencia MIT como plantilla para el repositorio de desafío.
  3. Jenkins:
    1. Configure Jenkins y agregue un nuevo archivo jobdsl en el archivo casc.yaml.
    2. Asegúrese de que el trabajo no se ejecute regularmente. Los trabajos deben ser activados por eventos/sondeos.
    3. Verificar que los nuevos desafíos no interfieran con otros desafíos.
  4. Asegúrate de que el letrero sea inaccesible mientras resuelves otros desafíos.
  5. Escribir pruebas.
  6. Escribe una solución.
  7. Actualice README.md si es necesario.
  8. Para ejecutar CI, asegúrese de tener una cuenta de CircleCI y de haber hecho clic en «Configurar proyecto» en la rama del proyecto.

Publicación anteriorReverse_SSH : Shell inverso basado en SSH

LEER  Restablecer la contraseña de root en Fedora 35

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba