Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
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
pwn2own2020 — Compromettere il kernel di macOS attraverso Safari concatenando sei vulnerabilità | Kitploit
Strumenti/GitHubGitHub/sslab-gatech/pwn2own2020
Escalation di PrivilegiExploitShellcodeSfruttamento di Applicazioni WebPenetration TestingSviluppo PayloadBinary Exploitation
GitHubsslab-gatech/pwn2own2020

pwn2own2020

Compromettere il kernel di macOS attraverso Safari concatenando sei vulnerabilità

Vedi Repository
41458225 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

Compromettere il kernel di macOS tramite Safari concatenando sei vulnerabilità

Panoramica

Questo repository contiene i dettagli di sfruttamento e tecnici della nostra sottomissione vincente al Pwn2Own 2020 che ha preso di mira Apple Safari con un'escalation dei privilegi del kernel per macOS 10.15.3. Per ulteriori informazioni, puoi anche consultare le nostre slide del Blackhat USA 2020 e il video. Questo repository include anche il nostro video dimostrativo per lo sfruttamento riuscito.

Come riprodurre

  1. Esegui il server HTTP usando python3 nella cartella exploits.```shell $ python3 -m http.server 80
2. Accedi al sito web con l'IP del server attaccante usando Safari:```
http://[attacker_ip]/exploit.html
  1. Attendere la Calcolatrice (di solito appare in dieci secondi, ma se si è sfortunati, potrebbe volerci del tempo) e un terminale con privilegi di kernel. Per mostrare la nostra escalation di privilegi del kernel, abbiamo disabilitato SIP. Puoi verificarlo eseguendo il comando csrutil status, che mostrerà disabled.

Compilare dal sorgente

Per tua comodità, abbiamo fornito un payload compilato, payload.js. Ma, se vuoi, puoi compilarlo da solo. Nota che ci vorrà molto tempo perché costruiremo WebKit come parte della nostra catena di exploit. Vale la pena notare che abbiamo testato il nostro processo di compilazione solo su Mac OS.```shell

Install xcode first

$ python3 -m pip install --user lief $ make

Technical details
-----------------

Per realizzare questo exploit, abbiamo concatenato le seguenti *SEI* vulnerabilità.

### 1. Esecuzione di codice remoto in Safari tramite una modellazione scorretta degli effetti collaterali dell'operatore 'in' nel compilatore DFG di JavaScriptCore

- Analisi della causa principale

In JavaScriptCore, quando una proprietà indicizzata veniva interrogata con l'operatore 'in',
il compilatore DFG presumeva che non avesse effetti collaterali, a meno che non ci fosse un
oggetto proxy nella sua catena prototipale in grado di intercettare questa operazione.
JavaScriptCore marca un oggetto in grado di intercettare questo accesso a una proprietà indicizzata
tramite il flag chiamato 'MayHaveIndexedAccessors'. Questo flag è
esplicitamente marcato per l'oggetto Proxy.```javascript
0 in [] // side-effect free

let arr = [];
arr.__proto__ = new Proxy({}, {});
0 in arr // can cause side-effect!

Tuttavia, c'è un altro oggetto che può causare un effetto collaterale: JSHTMLEmbedElement che implementa il proprio metodo getOwnPropertySlot(). Un modo per innescare callback JavaScript (cioè effetti collaterali) con l'operatore 'in' è usare l'elemento <embed> con il plugin PDF; quando una qualsiasi proprietà viene interrogata sull'oggetto DOM del tag embed/object, tenta di caricare il plugin sottostante e il gestore dell'evento DOMSubtreeModified può essere chiamato nel caso del plugin PDF perché utilizza il metodo appendChild sull'elemento body.

Scarica lo strumento