Bandit Nivel 27 a 28
Página oficial: https://overthewire.org/wargames/bandit/bandit28.html
Este nivel es tu primer contacto con Git: una herramienta de control de versiones que usan millones de proyectos de software. Aquí aprenderás a clonar (descargar) un repositorio remoto usando SSH y a leer su contenido.
Objetivo
La contraseña del nivel 28 está almacenada dentro de un repositorio Git accesible por SSH dentro del propio servidor. Tu misión es clonar ese repositorio y encontrar el archivo que la contiene.
Qué aprendes
Comandos clave
| Comando | Para qué sirve |
|---|---|
mkdir | Crear un directorio nuevo |
git clone <url> | Descargar (clonar) un repositorio Git completo desde una URL remota |
ls | Listar el contenido de un directorio |
cat | Mostrar el contenido de un archivo |
Conceptos
- Repositorio Git: carpeta de proyecto con historial de cambios gestionado por Git. Puede estar local o en un servidor remoto.
git clone: copia entera del repositorio (archivos + historial) desde el servidor a tu máquina (o en este caso, a un directorio temporal en el servidor).- URL SSH de Git: tiene la forma
ssh://usuario@host:puerto/ruta/al/repo. Git sabe conectarse por SSH igual que tú lo haces con el comandossh. /tmp: directorio especial en Linux donde cualquier usuario puede escribir archivos temporales. Ideal para trabajar sin permisos especiales.
Paso a paso
1. Conéctate al nivel 27
ssh bandit27@bandit.labs.overthewire.org -p 2220Usa la contraseña que obtuviste en el nivel anterior.
2. Crea un directorio temporal de trabajo
No puedes escribir en el directorio home de bandit27, así que usas /tmp. Elige un nombre único para evitar colisiones con otros jugadores:
mkdir /tmp/mi_trabajo_27No verás output si todo va bien (en Linux, silencio = éxito).
3. Clona el repositorio Git por SSH
ℹ Nota sobre
localhost(aplica a todos los niveles git, 27→32): a diferencia del login SSH normal (que sí bloquealocalhost, ver 14-nivel-13-a-14), el clon git va por el usuariogit-shelly la página oficial de OverTheWire sigue usandolocalhost, así que normalmente funciona desde dentro. Si te dieraConnecting from localhost is blocked to conserve resources, cambialocalhostpor el hostname real (mismo puerto2220):git clone ssh://bandit27-git@bandit.labs.overthewire.org:2220/home/bandit27-git/repo /tmp/mi_trabajo_27/repo— o clónalo desde tu propio portátil con la misma contraseña.
git clone ssh://bandit27-git@localhost:2220/home/bandit27-git/repo /tmp/mi_trabajo_27/repoDesglose de la URL:
ssh://— protocolo SSHbandit27-git— usuario Git en el servidor (distinto debandit27)localhost— el propio servidor de bandit (nos conectamos a él mismo):2220— puerto SSH no estándar que usa OverTheWire/home/bandit27-git/repo— ruta al repositorio en el servidor
Git te pedirá la contraseña de bandit27-git. Esa contraseña es la misma que usas para conectarte como bandit27 (la que obtuviste en el nivel anterior):
Cloning into '/tmp/mi_trabajo_27/repo'...
The authenticity of host '[localhost]:2220 ([127.0.0.1]:2220)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:2220' (ED25519) to the list of hosts.
_ _ _ _
| |__ __ _ _ __ __| (_) |_
| '_ \ / _` | '_ \ / _` | | __|
| |_) | (_| | | | | (_| | | |_
|_.__/ \__,_|_| |_|\__,_|_|\__|
This is an OverTheWire game server.
More information: https://overthewire.org/wargames
bandit27-git@localhost's password:
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
4. Entra en el repositorio clonado
cd /tmp/mi_trabajo_27/repo
lsVerás algo como:
README
5. Lee el archivo README
cat READMEVerás:
The password to the next level is: <cadena_de_~32_caracteres>
Esa
<cadena_de_~32_caracteres>es la contraseña real de bandit28. Copiala.
Por qué funciona
Git está diseñado para trabajar en red. Cuando le das una URL del tipo ssh://usuario@host:puerto/ruta, usa SSH como transporte: se autentica con las credenciales de ese usuario y descarga el repositorio completo.
En este nivel, el servidor de OverTheWire actúa como servidor Git y como tu terminal a la vez. Clonas desde dentro del mismo servidor usando localhost, lo que es perfectamente válido. El repositorio bandit27-git/repo tiene permisos para ser leído por bandit27-git (no por bandit27 directamente), por eso Git usa ese usuario específico.
Una vez clonado, el repositorio es una carpeta normal en /tmp y puedes navegarla con ls, cat, etc.
Errores comunes
”Could not create directory ‘/home/bandit27/.ssh’”
Aviso inofensivo. SSH intenta guardar el fingerprint pero no tiene permisos en el home de bandit27. El clone sigue funcionando.
”Permission denied” al clonar
Comprueba que escribiste bandit27-git (con guion y git al final) como usuario en la URL, no bandit27.
”Host key verification failed”
Ocurre si escribes no cuando te pregunta si confiar en el host. Vuelve a ejecutar el git clone y responde yes.
El directorio /tmp/mi_trabajo_27 ya existe (si repites el nivel)
Usa un nombre distinto o borra el anterior con rm -rf /tmp/mi_trabajo_27 antes de volver a empezar.
Se queda esperando sin hacer nada
Asegúrate de que incluiste :2220 en la URL. Sin el puerto, intenta conectarse al puerto SSH estándar (22) y el servidor no responde.
Pasar al siguiente nivel
Con la contraseña obtenida del README, conéctate a bandit28:
ssh bandit28@bandit.labs.overthewire.org -p 2220Cuando te pida la contraseña, pega la <cadena_de_~32_caracteres> que copiaste.
Conexiones
- 00_README — índice y reglas del wargame Bandit
- MOC_Ciberseguridad — mapa de contenido de ciberseguridad
- git-en-detalle — funcionamiento interno de Git: objetos, ramas, remotes, SSH