Juegos de Guerra "Bandit" Overthewire
Published on August 25, 2023 by Gmichet
LINUX BANDIT
7 min READ
Parte 4 de los juegos “Bandit” de la página OverTheWire
Skills | Enlace |
---|---|
Escaneo de puertos abiertos con nmap | nmap |
Comparar dos archivos y mostrar sus diferencias | diff |
Colando un comando a la conexión ssh | Colar comandos en la conexión ssh |
Archivos con permiso especial SUID | SUID |
Otro permiso SUID | SUID |
Las credenciales para el siguiente nivel se pueden recuperar enviando la contraseña del nivel actual a un puerto en localhost en el rango de 31000 a 32000.
Primero averigüe cuál de estos puertos tiene un servidor escuchando en ellos.
Luego, averigüe cuáles de ellos hablan SSL y cuáles no. Solo hay 1 servidor que proporcionará las siguientes credenciales, los demás simplemente le enviarán lo que le envíe.
A continuación realizamos un escaneo con nmap para identificar que puertos tienen el servicio openssl corriendo:
bandit16@bandit:~$ nmap -sV -p31000-32000 127.0.0.1 -T5 -n
Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-26 21:36 UTC
Nmap scan report for 127.0.0.1
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT STATE SERVICE VERSION
31046/tcp open echo
31518/tcp open ssl/echo
31691/tcp open echo
31790/tcp open ssl/unknown
31960/tcp open echo
bandit16@bandit:~$ openssl s_client -connect 127.0.0.1:31790
---
read R BLOCK
JQttfApK4SeyHwDlI9SXGR50qclOAil1
Correct!
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAvmOkuifmMg6HL2YPIOjon6iWfbp7c3jx34YkYWqUH57SUdyJ
imZzeyGC0gtZPGujUSxiJSWI/oTqexh+cAMTSMlOJf7+BrJObArnxd9Y7YT2bRPQ
Ja6Lzb558YW3FZl87ORiO+rW4LCDCNd2lUvLE/GL2GWyuKN0K5iCd5TbtJzEkQTu
DSt2mcNn4rhAL+JFr56o4T6z8WWAW18BR6yGrMq7Q/kALHYW3OekePQAzL0VUYbW
JGTi65CxbCnzc/w4+mqQyvmzpWtMAzJTzAzQxNbkR2MBGySxDLrjg0LWN6sK7wNX
x0YVztz/zbIkPjfkU1jHS+9EbVNj+D1XFOJuaQIDAQABAoIBABagpxpM1aoLWfvD
KHcj10nqcoBc4oE11aFYQwik7xfW+24pRNuDE6SFthOar69jp5RlLwD1NhPx3iBl
J9nOM8OJ0VToum43UOS8YxF8WwhXriYGnc1sskbwpXOUDc9uX4+UESzH22P29ovd
d8WErY0gPxun8pbJLmxkAtWNhpMvfe0050vk9TL5wqbu9AlbssgTcCXkMQnPw9nC
YNN6DDP2lbcBrvgT9YCNL6C+ZKufD52yOQ9qOkwFTEQpjtF4uNtJom+asvlpmS8A
vLY9r60wYSvmZhNqBUrj7lyCtXMIu1kkd4w7F77k+DjHoAXyxcUp1DGL51sOmama
+TOWWgECgYEA8JtPxP0GRJ+IQkX262jM3dEIkza8ky5moIwUqYdsx0NxHgRRhORT
8c8hAuRBb2G82so8vUHk/fur85OEfc9TncnCY2crpoqsghifKLxrLgtT+qDpfZnx
SatLdt8GfQ85yA7hnWWJ2MxF3NaeSDm75Lsm+tBbAiyc9P2jGRNtMSkCgYEAypHd
HCctNi/FwjulhttFx/rHYKhLidZDFYeiE/v45bN4yFm8x7R/b0iE7KaszX+Exdvt
SghaTdcG0Knyw1bpJVyusavPzpaJMjdJ6tcFhVAbAjm7enCIvGCSx+X3l5SiWg0A
R57hJglezIiVjv3aGwHwvlZvtszK6zV6oXFAu0ECgYAbjo46T4hyP5tJi93V5HDi
Ttiek7xRVxUl+iU7rWkGAXFpMLFteQEsRr7PJ/lemmEY5eTDAFMLy9FL2m9oQWCg
R8VdwSk8r9FGLS+9aKcV5PI/WEKlwgXinB3OhYimtiG2Cg5JCqIZFHxD6MjEGOiu
L8ktHMPvodBwNsSBULpG0QKBgBAplTfC1HOnWiMGOU3KPwYWt0O6CdTkmJOmL8Ni
blh9elyZ9FsGxsgtRBXRsqXuz7wtsQAgLHxbdLq/ZJQ7YfzOKU4ZxEnabvXnvWkU
YOdjHdSOoKvDQNWu6ucyLRAWFuISeXw9a/9p7ftpxm0TSgyvmfLF2MIAEwyzRqaM
77pBAoGAMmjmIJdjp+Ez8duyn3ieo36yrttF5NSsJLAbxFpdlc1gvtGCWW+9Cq0b
dxviW8+TFVEBl1O4f7HVm6EpTscdDxU+bCXWkfjuRb7Dy9GOtt9JPsX8MBTakzh3
vBgsyi/sN3RqRBcGU40fOoZyfAMT8s1m/uYv52O6IgeuZ/ujbjY=
-----END RSA PRIVATE KEY-----
closed
bandit16@bandit:~$ mkdir /tmp/mechitast
bandit16@bandit:~$ cd /tmp/mechitast
bandit16@bandit:/tmp/mechitast$ touch id_rsa
bandit16@bandit:/tmp/mechitast$ nano id_rsa
# Pegamos la clave en el archivo id_rsa
bandit16@bandit:/tmp/mechitast$ chmod 600 id_rsa
bandit16@bandit:/tmp/mechitast$ ls -l
total 4
-rw------- 1 bandit16 bandit16 1675 Aug 26 21:53 id_rsa
bandit16@bandit:/tmp/mechitast$ ssh -i id_rsa bandit17@localhost -p 2220
bandit17@bandit:~$ whoami
bandit17
Hay 2 archivos en el directorio de inicio: passwords.old y passwords.new.
La contraseña para el siguiente nivel está en passwords.new y es la única línea que se ha cambiado entre passwords.old y passwords.new
NOTA: si ha resuelto este nivel y ve ‘¡Adiós!’ al intentar iniciar sesión en bandit18, esto está relacionado con el siguiente nivel, bandit19.
Podemos utilizar el comando diff que se utiliza para comparar dos archivos y mostrar las diferencias entre ellos.
bandit17@bandit:~$ diff passwords.old passwords.new
42c42
< glZreTEH1V3cGKL6g4conYqZqaEj0mte
---
> hga5tuuCLF6fFzUpnagiMN8ssu9LFrdg # Contraseña Bandit18
La contraseña para el siguiente nivel se almacena en un archivo readme en el directorio de inicio. Desafortunadamente, alguien ha modificado .bashrc para cerrar tu sesión cuando inicias sesión con SSH.
En el nivel anterior “bandit17” decia la nota “si ha resuelto este nivel y ve ‘¡Adiós!’ al intentar iniciar sesión en bandit18, esto está relacionado con el siguiente nivel, bandit19.”
Iniciamos y claramente nos expulsa:
ssh bandit18@bandit.labs.overthewire.org -p 2220
Byebye !
Connection to bandit.labs.overthewire.org closed.
Cuando realizamos el comando ssh es posible colarle un comando ejemplo, podemos pedirle que nos arroje una bash, luego podemos listar el contenido y mostrar el readme que contiene la contraseña para el siguiente nivel:
ssh bandit18@bandit.labs.overthewire.org -p 2220 bash
_ _ _ _
| |__ __ _ _ __ __| (_) |_
| '_ \ / _` | '_ \ / _` | | __|
| |_) | (_| | | | | (_| | | |_
|_.__/ \__,_|_| |_|\__,_|_|\__|
This is an OverTheWire game server.
More information on http://www.overthewire.org/wargames
bandit18@bandit.labs.overthewire.org's password:
whoami
bandit18
ls
readme
cat readme
awhqfNnAbc1naukrpqDYcF95h7HoMTrC
Para obtener acceso al siguiente nivel, debe usar el binario setuid en el directorio de inicio. Ejecutarlo sin argumentos para saber cómo usarlo.
La contraseña para este nivel se puede encontrar en el lugar habitual (/etc/bandit_pass), después de haber utilizado el binario setuid.
Iniciamos:
ssh bandit19@bandit.labs.overthewire.org -p 2220
Muy bien ahora listamos y para saber más le aplicamos un ls -l
para conocer los permisos, y vemos que el archivo tiene habilitado el permiso SUID
bandit19@bandit:~$ ls
bandit20-do
bandit19@bandit:~$ ls -l
total 16
-rwsr-x--- 1 bandit20 bandit19 14876 Apr 23 18:04 bandit20-do
bandit19@bandit:~$ ./bandit20-do whoami
bandit20
bandit19@bandit:~$
bash -p
para iniciar una nueva instancia de la shell Bash en modo restringido. Y por último mostramos la contraseña para el siguiente nivel:bandit19@bandit:~$ ./bandit20-do bash -p
bash-5.1$ whoami
bandit20
bash-5.1$ cat /etc/bandit_pass/bandit20
VxCazJaVykI6W36BkBU0mJTCM8rR95XT
Hay un binario setuid en el directorio de inicio que hace lo siguiente:
Primero te conectas dos veces a bandit20, y abres dos instancias de la terminal:
bandit20@bandit:~$ ./suconnect
Usage: ./suconnect <portnumber>
This program will connect to the given port on localhost using TCP. If it receives the correct password from the other side, the next password is transmitted back.
nc -nvlp
en el puerto “5757” a la vez ejecutamos ./suconnect
en el puerto 5757:nc -nvlp
para recibir la contraseña pero antes de recibirla tenemos que enviar la contraseña de este usuario.En la otra ejecutaremos el archivo ./suconnect
en el puerto 5757 en donde va a leer la contraseña y si es correcta nos enviará la contraseña nueva:
NvEJF7oVjkddltPSrdKEFOllh9V1IBcq