Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2021-3899_PoC — Condition de concurrence dans apport conduisant à une élévation de privilèges locale sur Ubuntu | Kitploit
Outils/GitHubGitHub/liumuqing/cve-2021-3899_poc
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'Intrusion
GitHubliumuqing/cve-2021-3899_poc

CVE-2021-3899_PoC

Condition de concurrence dans apport conduisant à une élévation de privilèges locale sur Ubuntu

Voir le dépôt
3il y a 4 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2021-3899 PoC

Reproduire

  1. Installez une version plus ancienne d'apport : sudo apt-get install apport=2.20.11-0ubuntu27 (toute version <= 2.20.11-0ubuntu27.10 convient, mais vous devez télécharger le code source)
  2. (facultatif) définissez un petit pid_max. Sinon, la préparation du rollback de PID prendra plus de temps. echo 10000 | sudo tee /proc/sys/kernel/pid_max
  3. autorisez tout le monde à exécuter ping en tant que root : ajoutez ALL ALL=(root) NOPASSWD: /usr/bin/ping dans /etc/sudoers
  4. exécutez plusieurs fois ulimit -c unlimited; ./exploit
  5. vous devriez voir un fichier dans /etc/logrotate.d/core
  6. ouvrez un autre shell et exécutez nc -lvcp 1234
  7. attendez que logrotate soit déclenché, vous pouvez :
    1. avancer l'horloge d'une minute avant le déclenchement de crontab-daily, puis attendre. (vérifiez /etc/crontab)
    2. exécuter sudo logrotate -vf /usr/sbin/logrotate /etc/logrotate.conf pour déclencher logrotate immédiatement. (identique à /etc/cron.daily/logrotate)
  8. un shell root inverse se connectera à 127.0.0.1:1234

Détail

Apport vérifie si le PID est réutilisé en contrôlant si l'heure de démarrage du processus est postérieure à celle d'Apport lui-même :

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)

Mais ce PID pourrait être réutilisé juste après le lancement d'Apport. Dans ce cas, get_apport_starttime() == get_process_starttime().

Ainsi, vous pouvez laisser Apport déposer un fichier core avec -rw------- root:root, si vous pouvez réoccuper ce PID avec un autre processus s'exécutant sous uid==0 :

  1. préparez un processus X qui va crasher, dont le PID est A
  2. répétez le processus de fork jusqu'à ce que le PID courant atteigne A - 2
  3. faites crasher le processus X, Apport sera lancé par le noyau avec le PID A - 1. Nous tuons le processus X, le PID A est donc maintenant libre.
  4. exécutez la commande sudo ping 8.8.8.8 avec le répertoire courant /etc/logrotate.d/. Un processus s'exécutant sous root:root réoccupera le PID A.
  5. Comme l'heure de démarrage de sudo et d'Apport est identique, la vérification de la ligne 596 est contournée. Apport dépose alors un fichier core du processus X dans /etc/logrotate.d
Télécharger l’outil