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:
Realizamos un escaneo inicial con 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.
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.
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:
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:
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.
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”.
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”.
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 🏁.
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.
Ahora, ya teniendo la reverse shell en la máquina, ya podemos leer la flag de forma simple.
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.
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:
Finalmente, podemos leer el último ingrediente o flag de esta sala.
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.