Bandit Nivel 30 → 31

Nivel del wargame Bandit de OverTheWire — juego legal y educativo para aprender terminal Linux y conceptos de seguridad.


Objetivo

Entrar al servidor como bandit30, clonar un repositorio Git y encontrar la contraseña de bandit31 dentro de ese repositorio. Esta vez la contraseña no está en el historial de commits ni en el contenido de los archivos: está guardada en un tag de Git.


Qué aprendes

Comando / ConceptoPara qué sirve
git cloneClonar un repositorio remoto en local
git tagListar los tags que existen en el repositorio
git show <tag>Ver el contenido o el commit apuntado por un tag
Tags en GitMarcadores estables que señalan un punto concreto del historial (o almacenan datos propios)

Qué es un tag en Git

Un tag es una etiqueta que se pone sobre el historial de Git para marcar algo importante: una versión (v1.0.0), un hito, o — en este nivel — cualquier dato que el creador del repo quiera registrar de forma permanente.

Hay dos tipos:

  • Lightweight tag: solo un puntero a un commit, sin metadatos extras.
  • Annotated tag: objeto completo de Git con mensaje, autor, fecha, y opcionalmente un mensaje de texto libre (donde puede estar guardada una contraseña, como aquí).

git tag lista todos los tags. git show <nombre> muestra el contenido del tag (su mensaje y/o el commit que apunta).


Paso a paso

1. Conectarse al servidor como bandit30

ssh bandit30@bandit.labs.overthewire.org -p 2220

Introduce la contraseña de bandit30 (la que obtuviste en el nivel anterior).

2. Crear un directorio de trabajo temporal

Los repositorios hay que clonarlos en algún sitio donde tengas permisos de escritura. /tmp funciona para eso:

mkdir /tmp/mi_trabajo_30
cd /tmp/mi_trabajo_30

3. Clonar el repositorio

git clone ssh://bandit30-git@localhost/home/bandit30-git/repo

Se te pedirá la contraseña de bandit30-git, que es la misma que la de bandit30.

Lo que verás:

Cloning into 'repo'...
bandit30-git@localhost's password:
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.

4. Entrar al repositorio clonado

cd repo

5. Ver los archivos del repo

ls -la
cat README.md

Lo que verás (el README no contiene la contraseña directamente):

just an empty file... muahaha

No hay nada en el contenido de los archivos. Tampoco hay ramas adicionales interesantes.

6. Listar los tags

git tag

Lo que verás:

secret

Hay un tag llamado secret. Eso es lo que buscamos.

7. Ver el contenido del tag

git show secret

Lo que verás:

<cadena_de_~32_caracteres>

Esa cadena es la contraseña de bandit31. Cópiala.

El tag secret en este caso es un annotated tag cuyo mensaje de texto es directamente la contraseña. git show despliega ese mensaje.


Por qué funciona

Git permite almacenar tags de dos maneras. Un annotated tag es un objeto de Git independiente que puede contener un mensaje de texto arbitrario — no tiene por qué ser una descripción de versión. En este nivel, el creador del repo guardó la contraseña como el mensaje del tag secret.

Cuando ejecutas git show secret, Git localiza el objeto del tag y muestra su contenido completo: metadatos del creador y el mensaje. Como el mensaje es la contraseña en texto plano, aparece directamente en pantalla.

Esto enseña que los repositorios Git no son solo el código visible en los archivos: también almacenan metadatos en tags, en el historial de commits, en ramas remotas y en referencias especiales. Auditar un repositorio requiere revisar todo ello.


Errores comunes

No encuentro ningún tag con git tag

  • Asegúrate de haber hecho cd repo antes. Si estás fuera del repositorio, git tag falla o no muestra nada útil.

git show secret muestra un commit en lugar de texto

  • Eso ocurriría si fuera un lightweight tag (solo apunta a un commit). En este nivel el tag es annotated y muestra el mensaje directamente.

La contraseña de bandit30-git no funciona al clonar

  • Usa exactamente la misma contraseña con la que iniciaste sesión como bandit30. Son el mismo usuario en el sistema.

Permission denied al crear el directorio

  • No intentes crear carpetas en /home/bandit30/. Usa siempre /tmp/<nombre_unico>/.

git clone falla con Host key verification failed

  • La primera vez puede pedir confirmación del host. Escribe yes y pulsa Enter.

Pasar al siguiente nivel

Con la contraseña obtenida en el paso 7, conéctate como bandit31:

ssh bandit31@bandit.labs.overthewire.org -p 2220

Introduce <cadena_de_~32_caracteres> cuando pida la contraseña.


Conexiones

  • 00_README — índice general del wargame Bandit
  • MOC_Ciberseguridad — mapa de contenidos de ciberseguridad en la bóveda
  • git-en-detalle — conceptos de Git: tags (lightweight vs annotated), git show, git log, ramas remotas