Pickle Rick Walkthrough - TryHackMe [ES]

Write-up of the room PickleRick - TryHackMe. Difficulty: Easy 🟢

Pickle Rick Walkthrough [ES]

[Task 1] Pickle Rick

Desplegamos la máquina y esperamos 5 minutos a que se configure:

ping

Realizamos un escaneo inicial con Nmap:

nmap
nmap

Como se ve en las capturas, nos encontramos con 2 puertos abiertos (ssh y http). Respecto al puerto SSH, solo nos podríamos plantear encontrar un exploit por la versión o hacer un ataque de fuerza bruta, pero en este caso, la solución no va por ahí. Por ello, nos vamos a centrar principalmente en la web de la máquina.

Web

Una de las técnicas más utilizadas para el reconocimiento del puerto HTTP es el fuzzeo de directorios. Normalmente, se suele hacer uso de herramientas especializadas para ello, como GoBuster, Wfuzz, Ffuzz, etcétera, pero se nos suele olvidar que Nmap ya cuenta con un pequeño diccionario para fuzzing. En las siguientes capturas se puede observar los resultados con Nmap y Gobuster.

nmap
GoBuster

Otras técnicas en este tipo de máquinas, es revisar el código fuente de la web buscando comentarios. Por otra parte, podemos buscar si existe el fichero robots. El fichero robots.txt es un ficherito que les permite a los administradores indicar que directorios de la web no tienen que ser indexados por los rastreadores de los buscadores. A continuación, se muestra las capturas de la información conseguida con estos métodos comentados:

sourcecode
robots

De las capturas anteriores, podemos dilucidar que hemos encontrado un usuario y una posible contraseña. Además, anteriormente con el fuzzeo habíamos encontrado un login:

login

Como hemos comentado, podemos probar con las credenciales “R1ckRul3s:Wubbalubbadubdub”. Otras opciones podrían haber sido comprobar si hay SQL Injection o probar ataques de fuerza bruta con el usuario fijo de Rick. Si probamos con las credenciales, nos damos cuenta que funcionan perfectamente.

WebInside

En este momento, nos encontramos delante una web que nos permite ejecutar comandos en el sistema, esto, si no está bien filtrada la entrada del usuario puede permitirnos cosas para las cuales no estaba ideada (“OS injection”). Probemos a ejecutar un simple “ls”.

ls

En este momento observamos un txt que posiblemente sea de las flags. En este momento podemos tirar por dos caminos, en el primer caso, haciendo uso de la web para sacar la flag y en el segundo, nos entablaremos una reverse shell con el usuario para movernos con más facilidad y de cara a la escalación de privilegios. Para ello, trataremos de hacerle un simple “cat”.

flag1

Como hemos observado, debe de haber algún tipo de filtro, que no nos permite leer la flag. Aplicando un poco el cerebro y el pensamiento lateral nos damos cuenta que es fácil bypassearlo, para ello simplemente deberíamos usar el comando “less” (muy similar a “cat”) que no está filtrado, permitiendonos leer la 🏁.

flag2

Por otro lado, podemos entablarnos una reverse shell para movernos por el sistema. Para realizar esto, haremos uso del artículo bastante conocido de PentestMonkey, y en este caso, traté con muchas de las opciones hay mostradas, pero la que me permitió realizarlo fue la de Perl. Únicamente debemos adaptar la IP y el puerto, e introducirla en la web.

reverseshell
reverseshell
reverseshell

Ahora, ya teniendo la reverse shell en la máquina, ya podemos leer la flag de forma simple.

reverseshell

Antes de dar comienzo a la escalada de privilegios y de leer el resto de flags, suele ser recomendable hacer totalmente interactiva nuestra shell (link). Después, con el usuario que ya teníamos, podemos leer la segunda flag o el ingrediente para Rick que nos piden.

2flag

Tras esto, podemos dar comienzo a la fase de escalada de privilegios. Para ello, podemos tirar de un script automático como LinEnum.sh o ir revisando a mano (“sudo -l”, tareas crontab, puertos abiertos, procesos, binarios SUID…). Esta máquina tiene la escalada de privilegios más sencilla que he visto, simplemente buscando los binarios que podemos ejecutar con sudo haciendo uso de “sudo -l”, observamos que podemos ejecutar cualquier comando con privilegios de root. Podemos ver, en la captura siguiente la escalada:

escalation

Finalmente, podemos leer el último ingrediente o flag de esta sala.

3flag

He revisado otros Write-ups, y en algunos casos, han realizado estas operaciones desde la web sin entablarse una reverse shell, es decir, introduciendo “sudo less /root/3rd.txt” y comandos por el estilo, desde la web. La parte más interesante de esta máquina puede que haya sido la obtención de la shell debido a que toca muchos factores.

Alberto Fernandez-de-Retana
Alberto Fernandez-de-Retana
PhD Student

Kaixo! PhD Student at University of Deusto under supervision of Igor Santos-Grueiro and Pablo G. Bringas. My research interests include web security & privacy. In my free time I love to be pizzaiolo.