Bandit Nivel 14 a 15

Pagina oficial: https://overthewire.org/wargames/bandit/bandit15.html

Marco: OverTheWire Bandit es un wargame legal y educativo diseñado para aprender Linux y seguridad desde cero. Cada nivel te da acceso SSH al siguiente si resuelves el reto.


Objetivo

Estas conectado como bandit14. La contrasena del usuario bandit14 esta guardada en /etc/bandit_pass/bandit14 y puedes leerla porque eres ese usuario.

El reto: enviar esa contrasena al puerto 30000 de localhost. Si la contrasena es correcta, el servidor te devuelve la contrasena de bandit15.


Que aprendes

Comandos principales

ComandoPara que sirve
nc (netcat)Abrir una conexion TCP/UDP a un host:puerto y enviar/recibir datos
catLeer el contenido de un archivo
| (pipe)Pasar la salida de un comando como entrada del siguiente

Conceptos

  • Puerto TCP: canal numerado (0-65535) por el que un proceso escucha conexiones. El servidor de este nivel escucha en el puerto 30000.
  • localhost: nombre que siempre apunta a la propia maquina (IP 127.0.0.1). No sales a internet.
  • netcat (nc): la “navaja suiza” de las redes. Puede actuar como cliente o servidor TCP/UDP. Aqui lo usas como cliente: te conectas a un puerto y mandas texto.
  • Pipe (|): redirige la salida estandar de un comando a la entrada estandar del siguiente. Permite encadenar sin archivos intermedios.

Paso a paso

Paso 0: Conectarte al nivel (si aun no estas dentro)

ssh [email protected] -p 2220

Introduce la contrasena de bandit14 cuando se la pida.


Paso 1: Leer la contrasena actual (opcional, para entender que tienes)

cat /etc/bandit_pass/bandit14

Lo que veras:

<cadena_de_~32_caracteres>

Esa cadena es tu contrasena actual como bandit14. La necesitas para el siguiente paso.


Paso 2a: Enviar la contrasena con pipe (forma directa y recomendada)

cat /etc/bandit_pass/bandit14 | nc localhost 30000

Que hace cada parte:

  • cat /etc/bandit_pass/bandit14 — lee la contrasena y la manda a la salida estandar.
  • | — conecta esa salida con la entrada de nc.
  • nc localhost 30000 — abre una conexion TCP al puerto 30000 de la propia maquina y envia lo que llega por stdin.

Lo que veras:

Correct!
<cadena_de_~32_caracteres>

La segunda linea es la contrasena de bandit15. Copiala.


Paso 2b: Alternativa interactiva (para entender el protocolo)

nc localhost 30000

El terminal queda esperando tu entrada. Pega manualmente la contrasena de bandit14 y pulsa Enter:

<cadena_de_~32_caracteres>

Lo que veras tras pulsar Enter:

Correct!
<cadena_de_~32_caracteres>

Para salir de nc sin respuesta del servidor: Ctrl+C o Ctrl+D.


Por que funciona

El puerto 30000 de bandit.labs.overthewire.org (accesible como localhost desde dentro del servidor) ejecuta un pequeno servicio de validacion:

  1. Acepta una conexion TCP.
  2. Lee una linea de texto.
  3. Comprueba si coincide con la contrasena de bandit14 almacenada en el sistema.
  4. Si es correcta, responde con Correct! y la contrasena del siguiente nivel.
  5. Cierra la conexion.

nc es el intermediario perfecto: establece el canal TCP y deja que el texto fluya en ambas direcciones. Con el pipe, el flujo es completamente automatico: cat lee el archivo, el pipe lo manda a nc, nc lo envia al servidor y el servidor responde.

Este patron (enviar datos a un puerto y leer la respuesta) es la base de protocolos como HTTP, SMTP o cualquier API de red.


Errores comunes

El comando nc no existe

Algunos sistemas tienen ncat (de nmap) en lugar de nc. Prueba:

ncat localhost 30000

En el servidor de Bandit deberia estar disponible nc.


Pego la contrasena pero no pasa nada

Asegurate de pulsar Enter despues de pegar. nc en modo interactivo espera una linea completa terminada en \n.


Wrong! como respuesta

Significa que la cadena enviada no coincide. Causas frecuentes:

  • Copiaste mal la contrasena (espacio extra, caracter recortado).
  • Usaste la contrasena de otro nivel.
  • Si escribiste a mano, un caracter es incorrecto.

Vuelve a leer con cat /etc/bandit_pass/bandit14 y usa el pipe directamente para evitar errores de tipeo.


La conexion se cierra sin respuesta

Si el servidor recibe una linea vacia (solo \n) puede cerrar sin responder. Asegurate de que el archivo tiene contenido antes de enviarlo:

cat /etc/bandit_pass/bandit14 | wc -c

Debe mostrar un numero mayor que 0.


Pasar al siguiente nivel

Con la contrasena obtenida (la cadena que aparecio tras Correct!), abre una nueva terminal y ejecuta:

ssh [email protected] -p 2220

Introduce la contrasena de bandit15 cuando se solicite. Ya estas en el nivel 15.


Conexiones