> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/writes-ups/tryhackme/easy/publisher.md).

# Publisher

## Información de la máquina

<figure><img src="/files/6yMpMAf2vNarKOQs0VqN" alt=""><figcaption></figcaption></figure>

**Publisher** es una máquina Linux de dificultad *fácil* en TryHackMe que introduce una cadena de explotación realista basada en un CMS vulnerable. El reto comienza con una fase de reconocimiento web y de red, donde se detecta un sistema corriendo SPIP, un CMS menos común pero igualmente propenso a vulnerabilidades. A partir de ahí, el camino hacia el acceso inicial incluye la identificación de una versión vulnerable de SPIP y el uso de un módulo de Metasploit para obtener una shell remota. Tras comprometer el sistema como un usuario estándar, se descubre una clave privada que permite escalar privilegios lateralmente a otro usuario. Finalmente, se detecta un binario mal configurado que ejecuta un script controlable, lo que permite una sencilla pero efectiva escalada de privilegios hasta **root**. Esta máquina es ideal para quienes deseen practicar identificación de vulnerabilidades en CMS, uso de exploits automáticos, y técnicas básicas de post-explotación en entornos Linux.

***

## Reconocimiento

Empezaremos haciendo un primer reconocimiento para ver los puertos abiertos en el sistema.

<figure><img src="/files/ESsCD0iZeOD6FRBhVawb" alt=""><figcaption></figcaption></figure>

**1. `-p-` → Escaneo de todos los puertos (1-65535)**

Por defecto, `nmap` solo escanea los **1000 puertos más comunes**.\
Con `-p-`, forzamos a que escanee **los 65535 puertos** de la máquina objetivo, lo que puede ser útil para encontrar servicios que corren en puertos poco convencionales.

**2. `--open` → Filtrar solo los puertos abiertos**

Cuando escaneamos un sistema, muchos puertos pueden estar cerrados o filtrados por un firewall.\
Este parámetro hace que `nmap` **solo muestre los puertos abiertos**, reduciendo el ruido y facilitando el análisis.

**3. `-sS` → Stealth Scan (Escaneo Sigiloso con SYN)**

Es conocido como **"TCP SYN Scan"**, y funciona de la siguiente manera:

* `nmap` envía un paquete **SYN** (solicitud de conexión).
* &#x20;Si el puerto está abierto, el servidor responde con **SYN-ACK**.
* En lugar de completar la conexión con un **ACK**, `nmap` responde con un **RST (Reset)**, interrumpiendo la comunicación.

**4. `--min-rate 5000` → Velocidad mínima de paquetes (5000 por segundo)**

Por defecto, `nmap` ajusta dinámicamente la velocidad de los paquetes según la respuesta de la red.\
Con `--min-rate 5000`, obligamos a `nmap` a **no enviar menos de 5000 paquetes por segundo**, acelerando el escaneo.

**5. `-n` → Deshabilitar resolución DNS**

Normalmente, `nmap` intenta resolver el nombre de dominio de las IPs escaneadas (DNS lookup).\
Con `-n`, evitamos esta resolución de nombres, lo que **acelera el escaneo** y evita que los servidores DNS registren nuestra actividad.

**6. `-Pn` → Omitir detección de host (Host Discovery Off)**

Por defecto, `nmap` envía paquetes ICMP (ping) para ver si un host está activo antes de escanearlo.\
Si un firewall bloquea los pings, `nmap` puede marcarlo como "host down" y no escanearlo.

**7. `-oG`** **→ Exportar el contenido en formato grepeable**

Todo el resultado del escaneo lo exportaremos en un archivo llamado **`puertos` .**

El escaneo revela 2 puertos abiertos, puerto 22(SSH) y puerto 80(HTTP). Ahora realizamos un escaneo más avanzado sobre estos 2 puertos

<figure><img src="/files/FMxOeut6IpvmY8QQTXb3" alt=""><figcaption></figcaption></figure>

**1. `-p22,80` → Escaneo de puertos específicos**

Con `-p22,80`, le indicamos que **solo** escanee los puertos **22 (SSH)** y **80 (HTTP)**

**2. `-sCV` → Escaneo de versiones y scripts básicos**

Este parámetro en realidad es **dos combinaciones en una**:

* **`-sC`** → Activa los **NSE scripts por defecto** en `nmap` (similar a usar `--script=default`).\
  Ejecuta scripts básicos para enumerar información del servicio detectado, como banners, versiones, etc.
* **`-sV`** → Realiza **fingerprinting de versiones**, intentando identificar la versión exacta del software en cada puerto abierto.

**3. `-oN` → Guardar el resultado en formato Normal**

Por defecto, `nmap` muestra los resultados en pantalla, pero con **`-oN targeted`**, guardamos el resultado en un archivo en **formato legible para humanos**.

Esta es la página web que se presenta inicialmente

<figure><img src="/files/5KhGI2kAYa5spy69iiWM" alt=""><figcaption></figcaption></figure>

Utilizamos **Gobuster** para enumerar directorios ocultos en la página web. Uno de los directorios que encontramos es **/spip**, lo cual es interesante porque **SPIP** es un **CMS (Content Management System)** francés de código abierto. Se utiliza para crear y gestionar contenido web dinámico, similar a WordPress o Joomla.

<figure><img src="/files/dIMJY438jImLyHQIdU4P" alt=""><figcaption></figcaption></figure>

## SPIP RCE

Al acceder a la ruta **/spip**, vemos una publicación.

<figure><img src="/files/7IwmDPWNdYiqfDLwVbCx" alt=""><figcaption></figcaption></figure>

Usamos la herramienta **WhatWeb** para identificar la versión específica de SPIP. Además, descubrimos una **ruta de configuración**, lo que puede revelar información sensible o exponer puntos vulnerables del CMS.

<figure><img src="/files/3IcgZrZ4CBmC8EKsOfQA" alt=""><figcaption></figcaption></figure>

Esa ruta también nos muestra información sobre distintos **plugins** instalados y sus versiones, lo cual es útil para buscar vulnerabilidades específicas en ellos.

<figure><img src="/files/b3w7CWwnIUvuU16kM5Kt" alt=""><figcaption></figcaption></figure>

Investigando vulnerabilidades asociadas a **SPIP 4.2.0**, encontramos que existe un exploit que permite obtener **ejecución remota de comandos (RCE)** **sin necesidad de autenticación** previa, lo cual representa una vulnerabilidad crítica.

<figure><img src="/files/893G4rqomxpdLu5rVlEM" alt=""><figcaption></figcaption></figure>

Abrimos **Metasploit Framework** y buscamos exploits relacionados con **SPIP**. Aparecen 4 módulos, pero el primero está claramente orientado a obtener **RCE**, por lo que decidimos utilizar ese

<figure><img src="/files/ywXEMOuhvGiyU75i0AbA" alt=""><figcaption></figcaption></figure>

Configuramos el módulo correctamente (target, RHOSTS, LHOST, etc.) y al ejecutarlo obtenemos una **shell Meterpreter**, lo que indica que la explotación fue exitosa.

<figure><img src="/files/xiWC92v0rniEqVb0sd6s" alt=""><figcaption></figcaption></figure>

Localizamos y leemos la **flag inicial** del sistema.

<figure><img src="/files/0fRcveYv0cOcHXvsEUEt" alt=""><figcaption></figcaption></figure>

## Shell user think

Durante la enumeración del sistema de archivos, encontramos la clave privada **id\_rsa** del usuario **think**, lo que indica que podríamos conectarnos como ese usuario por SSH

<figure><img src="/files/ceVzM6sTCpIoLtK11Ozx" alt=""><figcaption></figcaption></figure>

Copiamos la clave privada a nuestra máquina y establecemos los **permisos en 600**, que son necesarios para que **SSH** acepte el archivo. Luego iniciamos sesión como **think** usando la clave privada

<figure><img src="/files/FOCIfcOEWyIY34HxCub1" alt=""><figcaption></figcaption></figure>

## Shell root

Transferimos **LinPEAS**, una herramienta automatizada para detectar vectores de escalada de privilegios en sistemas Linux, y la ejecutamos para analizar configuraciones inseguras o binarios vulnerables.

<figure><img src="/files/NaQk9ODLTZfQwsRA2Lbb" alt=""><figcaption></figcaption></figure>

Durante el escaneo, LinPEAS detecta un binario inusual llamado **run\_container**, lo cual llama nuestra atención.

<figure><img src="/files/ji7H26VZO24PnfgHe9SG" alt=""><figcaption></figcaption></figure>

Al ejecutar **run\_container**, el programa parece estar lanzando un script ubicado en **/opt/run\_container.sh**, lo que indica una posible relación directa o dependencia.

<figure><img src="/files/NbPvCVaEkui1qJUKwEcr" alt=""><figcaption></figcaption></figure>

Al analizar el binario con el comando **strings**, confirmamos que efectivamente ejecuta **/opt/run\_container.sh**.

<figure><img src="/files/8KfwZzjI0e0WhOMLJBiQ" alt=""><figcaption></figcaption></figure>

Como tenemos permisos de escritura sobre **run\_container.sh**, lo modificamos para que establezca el bit **SUID** en **/bin/bash**, lo que permitirá ejecutar Bash con privilegios elevados

<figure><img src="/files/NuUFQAvBI5KZqfG1opQp" alt=""><figcaption></figcaption></figure>

Al ejecutar nuevamente el binario **run\_container**, el script altera los permisos de **/bin/bash**, añadiendo el bit SUID. Esto nos permite obtener una shell como **root** ejecutando `bash -p`.\
Finalmente, accedemos a la **flag final**:

```
3a4225cc9e85709adda6ef55d6a4f2ca
```

***

## Conclusión

La máquina **Publisher** demuestra cómo un CMS aparentemente menor como SPIP puede convertirse en el punto de entrada a un sistema completo, especialmente si está mal configurado o desactualizado. Desde la detección inicial con herramientas como `nmap` y `gobuster`, hasta la explotación automatizada con Metasploit, el laboratorio refuerza buenas prácticas de enumeración, explotación y escalada. La presencia de una clave SSH reutilizada y un script vulnerable con permisos inadecuados ilustran errores comunes en la administración de sistemas. En conjunto, esta máquina ofrece un recorrido accesible pero completo por técnicas esenciales de pentesting, reforzando la importancia del reconocimiento detallado y el análisis de configuraciones internas para lograr una intrusión exitosa.
