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 / Concepto | Para qué sirve |
|---|---|
git clone | Clonar un repositorio remoto en local |
git tag | Listar los tags que existen en el repositorio |
git show <tag> | Ver el contenido o el commit apuntado por un tag |
| Tags en Git | Marcadores 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 [email protected] -p 2220Introduce 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_303. Clonar el repositorio
git clone ssh://bandit30-git@localhost/home/bandit30-git/repoSe 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 repo5. Ver los archivos del repo
ls -la
cat README.mdLo 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 tagLo que verás:
secret
Hay un tag llamado secret. Eso es lo que buscamos.
7. Ver el contenido del tag
git show secretLo que verás:
<cadena_de_~32_caracteres>
Esa cadena es la contraseña de bandit31. Cópiala.
El tag
secreten este caso es un annotated tag cuyo mensaje de texto es directamente la contraseña.git showdespliega 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 repoantes. Si estás fuera del repositorio,git tagfalla 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
yesy pulsa Enter.
Pasar al siguiente nivel
Con la contraseña obtenida en el paso 7, conéctate como bandit31:
ssh [email protected] -p 2220Introduce <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