> 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/billing.md).

# Billing

## Información de la máquina

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

**Billing** es una máquina de dificultad **fácil** en **TryHackMe** centrada en la explotación de un entorno Linux expuesto a una aplicación vulnerable: **MagnusBilling**, un sistema de facturación VoIP basado en Asterisk. La máquina representa un escenario realista donde una mala gestión de software de código abierto con vulnerabilidades conocidas puede comprometer todo el sistema. Este reto pone a prueba la capacidad del atacante para identificar y explotar una **RCE no autenticada** (CVE-2023-30258), y posteriormente escalar privilegios mediante una configuración peligrosa en **Fail2ban**, una herramienta comúnmente usada para proteger sistemas Linux.

***

## Reconocimiento

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

<figure><img src="/files/hUvXU7swpnzuT6vyNbgZ" 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 65,535 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 **`allPorts`  .**

<figure><img src="/files/4bSBBPEIDohwOpO3gnU4" alt=""><figcaption></figcaption></figure>

**1. `-p<puertos obtenidos>` → Escaneo de puertos específicos**

Con `-p<puertos obtenidos>`, le indicamos que **solo** escanee los puertos que le indicamos.

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

## MagnusBilling

Cuando abrimos la web, nos encontramos con MagnusBilling.

{% hint style="success" %}
**MagnusBilling** es un **sistema de facturación VoIP (Voz sobre IP)** basado en Asterisk. Permite gestionar llamadas, tarifas, usuarios, troncales, entre otros. Es utilizado principalmente por proveedores de servicios de telefonía para administrar llamadas y cobros automatizados. Al ser software complejo y de código abierto, es un objetivo interesante para ataques si no está bien asegurado.
{% endhint %}

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

## CVE-2023-30258 - Unauthenticated RCE

Este CVE describe una vulnerabilidad de **Ejecución Remota de Código sin autenticación (Unauthenticated RCE)** en versiones vulnerables de MagnusBilling, lo que permite tomar control del sistema sin necesidad de iniciar sesión.

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

El exploit en Metasploit se configura con la IP y el puerto de la víctima. Una vez lanzado, se abre una **shell interactiva Meterpreter.**

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

Podemos ver la primera flag de la máquina.

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

## Privilege escalation

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

{% embed url="<https://juggernaut-sec.com/fail2ban-lpe/?source=post_page-----4746e548b661--------------------------------------->" %}

El sistema usa **Fail2ban**, una herramienta que detecta accesos maliciosos y "banea" las IPs. Cada "jail" tiene acciones definidas como `actionban`. Si modificamos esta acción, podemos hacer que, en vez de banear, ejecute **un comando peligroso**. En este caso, usamos esto para ejecutar comandos con permisos elevados.

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

Al ejecutar `/bin/bash -p`, obtenemos una shell con privilegios de root gracias al bit SUID previamente habilitado.

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

Como root, podemos acceder al archivo de flag final.

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

***

## Conclusion

La máquina **Billing** demuestra cómo una vulnerabilidad conocida y sin parchear en una aplicación expuesta a internet, como **MagnusBilling**, puede ser la puerta de entrada para un atacante sin necesidad de credenciales. A través del uso de herramientas como **Metasploit** y la manipulación de **Fail2ban** para ejecutar comandos con privilegios, se logra la **escalada a root** de forma ingeniosa. Esta máquina sirve como recordatorio clave de la importancia de mantener el software actualizado, revisar configuraciones de herramientas de seguridad, y monitorear aplicaciones web accesibles públicamente
