Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2021-3899_PoC — condición de carrera en apport conduce a Escalada de Privilegios Local en Ubuntu | Kitploit
Herramientas/GitHubGitHub/liumuqing/cve-2021-3899_poc
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de Penetración
GitHubliumuqing/cve-2021-3899_poc

CVE-2021-3899_PoC

condición de carrera en apport conduce a Escalada de Privilegios Local en Ubuntu

Ver Repositorio
3hace 4 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2021-3899 PoC

Reproducción

  1. Instala una versión anterior de apport: sudo apt-get install apport=2.20.11-0ubuntu27 (cualquier versión <= 2.20.11-0ubuntu27.10 es válida, pero tienes que descargar el código fuente)
  2. (opcional) establece un pid_max pequeño. de lo contrario, tardará más tiempo en preparar la reversión de pid. echo 10000 | sudo tee /proc/sys/kernel/pid_max
  3. permite que cualquiera ejecute ping como root: añade ALL ALL=(root) NOPASSWD: /usr/bin/ping en /etc/sudoers
  4. ejecuta varias veces ulimit -c unlimited; ./exploit
  5. deberías ver un archivo en /etc/logrotate.d/core
  6. abre otra shell y ejecuta nc -lvcp 1234
  7. espera a que se active logrotate, puedes:
    1. ajustar el reloj un minuto antes de la activación de crontab-daily y esperar. (consulta /etc/crontab)
    2. ejecutar sudo logrotate -vf /usr/sbin/logrotate /etc/logrotate.conf para activar logrotate inmediatamente. (igual que /etc/cron.daily/logrotate)
  8. se conectará una shell inversa root a 127.0.0.1:1234

Detalle

Apport comprobará si el pid se reutiliza, verificando si la hora de inicio del proceso es posterior a la del propio 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)

Pero este pid podría reutilizarse justo después de que se lance apport. En ese caso, get_apport_starttime() == get_process_starttime().

Así que, puedes hacer que apport cree un archivo core con -rw------- root:root, si puedes re-ocupar este PID con otro proceso que se ejecute bajo uid==0:

  1. prepara un proceso X para que falle, cuyo pid es A
  2. repite el proceso de fork hasta que el pid actual llegue a A - 2
  3. haz que el proceso X falle; apport será lanzado por el kernel con pid A - 1. Matamos el proceso X, por lo que el pid A queda libre.
  4. ejecuta el comando sudo ping 8.8.8.8 con el cwd /etc/logrotate.d/. Un proceso que se ejecuta bajo root:root re-ocupará el pid A.
  5. Dado que la hora de inicio de sudo y apport es la misma, se omite la comprobación de la línea 596. Apport entonces genera un archivo core del proceso X en /etc/logrotate.d
Descargar herramienta