Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2022-0847-Container-Escape — CVE-2022-0847 usado para obter escape de contêiner utilizando CVE-2022-0847 (Dirty Pipe) para realizar escape de contêiner | Kitploit
Ferramentas/GitHubGitHub/greenhandatsjtu/cve-2022-0847-container-escape
Escalada de PrivilégiosSegurança de ContêineresAnálise de VulnerabilidadesExploraçãoEscape de Contêiner
GitHubgreenhandatsjtu/cve-2022-0847-container-escape

CVE-2022-0847-Container-Escape

CVE-2022-0847 usado para obter escape de contêiner utilizando CVE-2022-0847 (Dirty Pipe) para realizar escape de contêiner

Ver Repositório

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
376há 4 anosRevisado pelo Kitploit

CVE-2022-0847

CVE-2022-0847 usado para obter escape de contêiner (sobrescrever qualquer arquivo somente leitura no host)

Slides (em chinês) disponíveis aqui

利用CVE-2022-0847 (Dirty Pipe) 实现容器逃逸(效果为覆写宿主机上任意只读文件)

中文汇报PPT在这里

Introdução

Se o kernel for vulnerável ao CVE-2022-0847, o atacante pode sobrescrever arquivos somente leitura (não persistente! Visite https://dirtypipe.cm4all.com/ para mais detalhes). Contudo, um contêiner só pode acessar arquivos dentro do próprio contêiner. Felizmente, quando é concedida a capacidade CAP_DAC_READ_SEARCH, o atacante pode sobrescrever arquivos no host!

Explicação

Conforme explicado em https://dirtypipe.cm4all.com/, para sobrescrever um arquivo somente leitura, devemos usar splice() para enviá-lo a um pipe. Para usar splice(), primeiro precisamos abrir o arquivo alvo com a flag O_RDONLY para obter um descritor de arquivo.

Foi aí que pensei no CAP_DAC_READ_SEARCH. De acordo com o manual do Linux, quando é concedido CAP_DAC_READ_SEARCH, o atacante dentro do contêiner pode:

  • Ignorar verificações de permissão de leitura de arquivos e verificações de permissão de leitura e execução de diretórios
  • invocar open_by_handle_at(2)

Com a capacidade CAP_DAC_READ_SEARCH, podemos pesquisar o sistema de arquivos do host e usar open_by_handle_at(2) para abrir como somente leitura qualquer arquivo no host a partir do contêiner, obtendo seu descritor de arquivo (Visite http://stealth.openwall.net/xSports/shocker.c para mais detalhes).

Agora que temos o descritor de arquivo do arquivo alvo no host, podemos, claro, usar splice() para enviar o conteúdo do arquivo alvo para um pipe e depois sobrescrevê-lo!

Uso

root@kitploit:~
cp /etc/password . # backup do /etc/password
gcc dp.c -o dp
docker run --rm -it -v $(pwd):/exp --cap-add=CAP_DAC_READ_SEARCH ubuntu
/exp/dp /etc/passwd 1 ootz: # sobrescreve /etc/password no host a partir do offset 1
/etc/dp /etc/passwd # exibe /etc/passwd no host

Exemplo

Primeiro, crie um arquivo somente leitura /home/vagrant/flag.txt pelo usuário root no host, com conteúdo hello world:

Em seguida, inicie um contêiner com a capacidade CAP_DAC_READ_SEARCH. Primeiro, tente exibir /home/vagrant/flag.txt no host, obtemos hello world:

depois, tente sobrescrever o arquivo alvo a partir do offset 1 com o conteúdo abcdefghij:

exiba o arquivo alvo novamente; agora o conteúdo é habcdefghij! Saia do contêiner e verifique /home/vagrant/flag.txt no host; seu conteúdo é habcdefghij.

Sim, acabamos de sobrescrever um arquivo no host a partir de um contêiner!

Créditos

  • https://dirtypipe.cm4all.com/
  • http://stealth.openwall.net/xSports/shocker.c
Baixar ferramenta