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

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-3899_PoC — race condition in apport porta a escalation locale dei privilegi su Ubuntu | Kitploit
Strumenti/GitHubGitHub/liumuqing/cve-2021-3899_poc
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPenetration Testing
GitHubliumuqing/cve-2021-3899_poc

CVE-2021-3899_PoC

race condition in apport porta a escalation locale dei privilegi su Ubuntu

Vedi Repository
34 anni faNon ancora revisionato

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

CVE-2021-3899 PoC

Riproduzione

  1. Installa una versione precedente di apport: sudo apt-get install apport=2.20.11-0ubuntu27 (qualsiasi versione <= 2.20.11-0ubuntu27.10 è valida, ma devi scaricare il codice sorgente)
  2. (opzionale) imposta un pid_max piccolo. altrimenti ci vorrà più tempo per preparare il rollback del pid. echo 10000 | sudo tee /proc/sys/kernel/pid_max
  3. consenti a chiunque di eseguire ping come root: aggiungi ALL ALL=(root) NOPASSWD: /usr/bin/ping in /etc/sudoers
  4. esegui più volte ulimit -c unlimited; ./exploit
  5. dovresti vedere un file in /etc/logrotate.d/core
  6. apri un'altra shell ed esegui nc -lvcp 1234
  7. aspetta che logrotate venga attivato, puoi:
    1. porta l'orologio un minuto prima del trigger di crontab-daily e attendi. (controlla /etc/crontab)
    2. esegui sudo logrotate -vf /usr/sbin/logrotate /etc/logrotate.conf per attivare logrotate immediatamente. (proprio come /etc/cron.daily/logrotate)
  8. ci sarà una reverse shell root che si connette a 127.0.0.1:1234

Dettagli

Apport controlla se il pid è stato riutilizzato, verificando se il tempo di avvio del processo è successivo a quello di apport stesso:

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)

Ma questo pid potrebbe essere riutilizzato subito dopo l'avvio di apport. In tal caso, get_apport_starttime() == get_process_starttime().

Quindi, puoi far sì che apport generi un core file con -rw------- root:root, se puoi rioccupare questo PID con un altro processo in esecuzione sotto uid==0:

  1. prepara un processo X da mandare in crash, il cui pid è A
  2. ripeti il fork dei processi, finché il pid corrente raggiunge A - 2
  3. fai crashare il processo X; apport verrà lanciato dal kernel con pid A - 1. Uccidiamo il processo X, quindi il pid A ora è libero.
  4. esegui il comando sudo ping 8.8.8.8 con cwd /etc/logrotate.d/. un processo in esecuzione sotto root:root rioccuperà il pid A.
  5. Poiché il tempo di avvio di sudo e apport è lo stesso, il controllo alla riga 596 viene bypassato. Apport quindi rilascia un core file del processo X in /etc/logrotate.d
Scarica lo strumento