Introduzione
Due giorni fa avevamo fatto veicolare, tramite twitter, un video di come poter modificare una sessione php pur stando in due domini completamente diversi.
Subito dopo aver rilasciato la demo, sono arrivate dimostrazioni su come poter editare queste sessioni tramite la semplice lettura del file, dandoci così l’idea che l’attacco avesse destato interesse nell’ambiente.
Executive Summary
La tecnica ‘Force Insecure Temporary Files Creation‘, che risiede all’ interno della categoria “Insecure Temporary Files“, permette ad un utente non privilegiato, di poter leggere/scrivere file non appartenenti a quest’ultimo, senza restrizione alcuna.
Technical Summary
Come precedentemente descritto, la metodologia d’attacco permette la lettura/scrittura di file su cui non si possiedono permessi.
Come premessa il file non deve esistere, e i nomi dei file in questione, devono essere facilmente rintracciabili ( vedi le sessioni di php, rescrivibili tramite cookie, e le socket di pulseaudio, nomi standard che usano l’uid dell’utente ) e in una posizione dove è possibile leggere e scrivere ( ES: /tmp/ ).
La problematica presente in questi applicativi, è il non controllo dell’esistenza dei file e l’utilizzo di questo senza modifica alcuna dei permessi.
Si può iniziare a mostrare come funziona la tecnica, stabilendo come presupposto che in un hosting, tutti i siti, vengono eseguiti con utenti differenti e che dalle configurazioni normali delle sessioni, php tenta di leggere il file chiamato sess_SESSIONID.
Non è quindi possibile poter leggere il contenuto dei file creati da altri utenti.
Come primo passo, la verifica è diretta alla possibilità di poter leggere/scrivere all’interno della directory dove risiedono i file di sessione.
Qualora il risultato è positivo, ci sarebbero tutte le basi per proseguire con l’attacco. L’attaccante ha necessità di creare, dal proprio sito una “sessione fake” dallo stesso php, così da avere già un file di sessione.
Dopo di che, dovranno essere impostati i permessi del file a 0666 ( -rw-rw-rw ), in modo tale che TUTTI gli utenti possano leggerlo/scriverlo senza restrizioni.
A questo punto il gioco è fatto: due o più utenti, possono accedere ad un file di sessione, e quindi poterlo manipolare a loro piacere.
L’unico task rimanente può essere completato impostando i cookie relativi alla sessione nel sito da “attaccare” ( nella maggior parte dei casi viene lasciato il nome di default PHPSESSION ).
Esempio di come poter eseguire un attacco:
session_start();
$sess = session_id();
$sess_path = session_save_path() . "/";
$sess_file = $sess_path . "sess_" . $sess;
if ( chmod($sess_file, 0666) ) {
$body .= "Exploited. <br />";
} else {
$body .= "Exploit Fail. <br />\n";
return;
}
Esempio di come poter leggere la sessione:
if ( isset($_GET['sess']) ){
session_id($_GET['sess']);
}
session_start();
print_r($_SESSION)
Technical Demonstration
Dimostrazione video – Attacco demo con Tecnica di Force Insecure Temporary Files Creation
Techinical Utility
Il Mitre ha recentemente catalogato una vulnerabilità segnalata dal tiger team di Tiger Security S.r.l. relativamente ad un problema di sicurezza della diffusissima soluzione per la gestione dei database Mysql “PhpMyAdmin” e le ha assegnato il codice CVE: CVE-2010-4480.
Il problema segnalato permette la realizzazione di attacchi di tipo Cross Site Scripting utilizzando tag BBcode e consentirebbe ad eventuali malintenzionati di realizzare attacchi di phishing.
Il codice dimostrativo della vulnerabilità è stato rilasciato sul sito del progetto Exploit Database a questa url: http://www.exploit-db.com/exploits/15699
Sans Institute, il più importante istituto che si occupa di sicurezza informatica, ha recentemente commentato un advisory rilasciato dal Tiger Team di Tiger Security S.r.l. relativamente ad una vulnerabilità 0day di Mozilla Firefox.
La vulnerabilità oggetto dell’ advisory va a sfruttare uno Stack Overflow in grado di causare un Denial of Service, vale a dire la negazione del servizio, in tutte le versioni di Mozilla Firefox.
Attualmente il codice che va a sfruttare tale vulnerabilità e’ stato rilasciato all’ interno di The Exploit Database a questo url.