Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pwn2own2020 — Comprometendo o kernel do macOS através do Safari ao encadear seis vulnerabilidades | Kitploit
Ferramentas/GitHubGitHub/sslab-gatech/pwn2own2020
Escalada de PrivilégiosExploraçãoShellcodeExploração de Aplicações WebTestes de PenetraçãoDesenvolvimento de PayloadsExploração de Binários
GitHubsslab-gatech/pwn2own2020

pwn2own2020

Comprometendo o kernel do macOS através do Safari ao encadear seis vulnerabilidades

Ver Repositório
4145822há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Comprometendo o kernel do macOS através do Safari ao encadear seis vulnerabilidades

Visão geral

Este repositório contém detalhes de exploração e técnicos de nossa submissão vencedora do Pwn2Own 2020 visando o Apple Safari com uma escalada de privilégios de kernel para o macOS 10.15.3. Para mais informações, você também pode conferir nossos slides do Blackhat USA 2020 e vídeo. Este repositório também inclui nosso vídeo de demonstração para a exploração bem-sucedida.

Como reproduzir

  1. Execute o servidor HTTP usando python3 na pasta exploits.```shell $ python3 -m http.server 80
2. Acesse o site com o IP do servidor do atacante usando o Safari:```
http://[attacker_ip]/exploit.html
  1. Aguarde a Calculadora (geralmente abre em dez segundos, mas, se não tiver sorte, levará algum tempo) e um terminal com privilégio de kernel. Para demonstrar nossa escalada de privilégio de kernel, desabilitamos o SIP. Você pode verificar executando o comando csrutil status, que mostrará disabled.

Compilar a partir do código-fonte

Para sua conveniência, fornecemos um payload compilado, payload.js. Mas, se quiser, você pode compilá-lo você mesmo. Observe que isso levará muito tempo, pois compilaremos o WebKit como parte da nossa cadeia de exploração. Vale a pena notar que testamos nosso processo de compilação apenas no Mac OS.```shell

Install xcode first

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

Detalhes técnicos
-----------------

Para criar este exploit, encadeamos as seguintes *SEIS* vulnerabilidades.

### 1. Execução remota de código no Safari por meio de modelagem incorreta de efeitos colaterais do operador 'in' no compilador DFG do JavaScriptCore

- Análise da causa raiz

No JavaScriptCore, quando uma propriedade indexada era consultada com o operador 'in',
o compilador DFG assume que ela não tem efeitos colaterais, a menos que haja um objeto
proxy em sua cadeia de protótipos que possa interceptar essa operação.
O JavaScriptCore marca um objeto que pode interceptar esse acesso a propriedade indexada
usando o sinalizador chamado 'MayHaveIndexedAccessors'. Esse sinalizador é
marcado explicitamente para o objeto Proxy.```javascript
0 in [] // side-effect free

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

No entanto, existe outro objeto que pode causar efeitos colaterais: o JSHTMLEmbedElement, que implementa seu próprio método getOwnPropertySlot(). Uma forma de acionar callbacks de JavaScript (ou seja, efeitos colaterais) com o operador in é usando o elemento <embed> com o plugin de PDF; quando qualquer propriedade é consultada no objeto DOM da tag embed / object, ele tenta carregar o plugin subjacente e o manipulador de eventos DOMSubtreeModified pode ser chamado no caso do plugin de PDF, porque ele usa o método appendChild no elemento body.

Baixar ferramenta