Bandit Nivel 18 a 19

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


Objetivo

La contraseña del siguiente nivel (bandit19) está guardada en el archivo readme dentro del directorio home de bandit18. El problema: el archivo .bashrc de bandit18 ha sido modificado para expulsarte en cuanto abres una sesión interactiva. Tienes que leer ese archivo sin que el shell llegue a ejecutarse.


Qué aprendes

Comando / ConceptoPara qué sirve
ssh usuario@host -p puerto <comando>Ejecuta un comando remoto por SSH sin abrir una sesión interactiva
.bashrcArchivo de configuración que Bash ejecuta al iniciar una sesión interactiva
Shell interactiva vs. no-interactivaDiferencia clave: .bashrc solo corre en sesiones interactivas
cat <archivo>Muestra el contenido de un archivo en la terminal

Jerga que necesitas entender

  • .bashrc: un script que Bash carga automáticamente cuando abres una shell interactiva (como cuando haces ssh normal). Si alguien pone exit o logout ahí, te echa al instante.
  • Shell interactiva: la sesión normal donde escribes comandos y el sistema responde. El .bashrc se ejecuta aquí.
  • Shell no-interactiva / comando SSH directo: cuando le dices a SSH que ejecute un comando concreto en lugar de abrir una sesión. En este modo, Bash no carga el .bashrc, así que la trampa no se activa.

Paso a paso

1. Conéctate a bandit17 (el nivel anterior) y obtén la contraseña de bandit18

Si ya tienes la pass de bandit18, pasa directamente al paso 2.

2. Ejecuta el comando directamente por SSH sin abrir sesión interactiva

En lugar del comando ssh habitual, añades el comando que quieres ejecutar al final:

ssh bandit18@bandit.labs.overthewire.org -p 2220 cat readme

SSH te pedirá la contraseña de bandit18 (la que obtuviste en el nivel anterior). Introdúcela.

Qué verás:

This is a OverTheWire game server.
More information on http://www.overthewire.org/wargames

bandit18@bandit.labs.overthewire.org's password:
<cadena_de_~32_caracteres>

Esa <cadena_de_~32_caracteres> que aparece es la contraseña de bandit19. Cópiala.

Nota: es posible que también veas el mensaje “Byebye !” que el .bashrc imprime antes de echar a los usuarios con sesión interactiva. Aparece porque SSH abre brevemente el entorno, pero el comando cat readme ya ha terminado de ejecutarse antes de que el .bashrc pueda cerrar nada de forma efectiva. Lo importante es que la contraseña sí aparece.

3. Verifica que funcionó

Si la cadena aparece en la salida, lo has conseguido. No necesitas nada más en este nivel.


Por qué funciona

Cuando ejecutas ssh usuario@host comando, SSH usa un mecanismo diferente al de una sesión interactiva:

  1. Abre la conexión con el servidor remoto.
  2. Lanza Bash en modo no-interactivo para ejecutar el comando específico (cat readme).
  3. En modo no-interactivo, Bash no lee ni ejecuta .bashrc.
  4. El comando termina, devuelve su salida (el contenido de readme) a tu terminal local, y la conexión se cierra.

La trampa del nivel (el exit o logout en .bashrc) nunca llega a activarse porque el mecanismo que lo dispara — la shell interactiva — nunca se abre.

Tu terminal local
      |
      | ssh ... cat readme
      v
Servidor bandit (Bash no-interactivo)
      |
      | .bashrc NO se carga
      | ejecuta: cat readme
      | devuelve el contenido
      v
Tu terminal local recibe la contraseña

Errores comunes

ErrorCausaSolución
Solo ves “Byebye !” y nada másOlvidaste añadir cat readme al final del comando SSHAsegúrate de que el comando quede exactamente como se muestra en el paso 2
Permission denied (publickey)El servidor rechazó la contraseña o la escribiste malVuelve a introducir la contraseña; fíjate en mayúsculas/minúsculas
La contraseña no apareceCopiaste un carácter de más o de menos del nivel anteriorRevisa que la pass de bandit18 esté completa y sin espacios extra
ssh: connect to host bandit.labs.overthewire.org port 2220: Connection refusedProblema de red o el servidor está caído momentáneamenteEspera unos minutos e inténtalo de nuevo

Pasar al siguiente nivel

Con la contraseña obtenida, conéctate a bandit19:

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

Introduce la <cadena_de_~32_caracteres> que copiaste como contraseña.


Conexiones