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-2021-3899_PoC — condição de corrida no apport leva a escalação de privilégio local no Ubuntu | Kitploit
Ferramentas/GitHubGitHub/liumuqing/cve-2021-3899_poc
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoTestes de Penetração
GitHubliumuqing/cve-2021-3899_poc

CVE-2021-3899_PoC

condição de corrida no apport leva a escalação de privilégio local no Ubuntu

Ver Repositório
3há 4 anosAinda não revisado

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

CVE-2021-3899 PoC

Reproduzir

  1. Instale uma versão mais antiga do apport: sudo apt-get install apport=2.20.11-0ubuntu27 (qualquer versão <= 2.20.11-0ubuntu27.10 serve, mas você precisa baixar o código-fonte)
  2. (opcional) defina um pid_max pequeno. caso contrário, levará mais tempo para se preparar para a reversão de pid. echo 10000 | sudo tee /proc/sys/kernel/pid_max
  3. permita que qualquer pessoa execute ping como root: adicione ALL ALL=(root) NOPASSWD: /usr/bin/ping em /etc/sudoers
  4. execute várias vezes ulimit -c unlimited; ./exploit
  5. você deve ver um arquivo em /etc/logrotate.d/core
  6. abra outro shell e execute nc -lvcp 1234
  7. espere até que o logrotate seja acionado, você pode:
    1. ajuste o relógio um minuto antes do acionamento diário do crontab, e espere. (verifique /etc/crontab)
    2. execute sudo logrotate -vf /usr/sbin/logrotate /etc/logrotate.conf para acionar o logrotate imediatamente. (igual a /etc/cron.daily/logrotate)
  8. haverá um shell reverso de root conectando a 127.0.0.1:1234

Detalhe

Apport verificará se o pid está sendo reutilizado, verificando se o tempo de início do processo é posterior ao do próprio apport:

root@kitploit:~
  # /usr/share/apport/apport
  594 apport_start = get_apport_starttime()
  595 process_start = get_process_starttime()
  596 if process_start > apport_start:
  597 error_log('process was replaced after Apport started, ignoring')
  598 sys.exit(0)

Mas este pid pode ser reutilizado logo após o apport ser lançado. Nesse caso, get_apport_starttime() == get_process_starttime().

Então, você pode fazer o apport gerar um arquivo core com -rw------- root:root, se você puder reocupar este PID com outro processo executando sob uid==0:

  1. prepare um processo X para travar, cujo pid é A
  2. repita o fork de processos até que o pid atual atinja A - 2
  3. faça o processo X travar, apport será lançado pelo kernel com pid A - 1. Nós matamos o processo X, então o pid A agora está livre.
  4. execute o comando sudo ping 8.8.8.8 com cwd /etc/logrotate.d/. um processo executando sob root:root irá reocupar o pid A.
  5. Como o tempo de início do sudo e do apport são os mesmos, a verificação da linha 596 é ignorada. Apport então gera um arquivo core do processo X em /etc/logrotate.d
Baixar ferramenta