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
Outils/GitHubGitHub/spencerdodd/kernelpop
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'Intrusion
GitHubspencerdodd/kernelpop

kernelpop

framework d'énumération et d'exploitation d'escalade de privilèges du noyau

Voir le dépôt
702131il y a 8 ansVérifié par Kitploit

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

kernelpop

kernelpop est un framework permettant l'énumération et l'exploitation automatisées des vulnérabilités du noyau sur les systèmes d'exploitation suivants :

  • Linux

  • Mac

Il est conçu pour être indépendant de la version de python, ce qui signifie qu'il devrait fonctionner aussi bien avec python2 qu'avec python3.

  • veuillez me prévenir si vous constatez que ce n'est pas le cas

exemple d'énumération jusqu'au root (Linux)

got-root


façons d'utiliser

  • exécution depuis les sources du projet
root@kitploit:~
$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ python kernelpop.py || python3 kernelpop.py
  • construction d'un binaire
root@kitploit:~
$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ ./create_executable.sh
$ ./kernelpop
  • étapes pour construire le binaire sans script
  1. installer pyinstaller (les étapes varient selon le système de construction)
  2. $ pyinstaller kernelpop.py --onefile
  3. $ cp dist/kernelpop .

Les deux étapes de construction du binaire devraient créer un binaire kernelpop à la racine du projet.


sortie de l'énumération

root@kitploit:~
user@debian:~/Desktop/kernelpop$ python3 kernelpop.py

##########################
#  welcome to kernelpop  #
#                        #
# let's pop some kernels #
##########################

[*] grabbing distro version and release from underlying OS (linuxdebian7)
[*] grabbing kernel version from 'uname -a'
[+] kernel (Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux) identified as:
[base]
	type:			linux
	distro:			linuxdebian7
	version:		3.2.0-4
	architecture:		i686
[specific]
	type:			linux
	distro:			linuxdebian7
	version:		3.2.41-2
	architecture:		i686
[*] matching kernel to known exploits
[+] discovered 11 possible exploits !
	[[ distro kernel matched exploit available ]]
		CVE20165195_32	Dirty COW race condition root priv esc for 32 bit
	[[ distro kernel version vulnerable ]]
		CVE20144699	Exploitable race condition in linux before 3.15.4
		CVE20143153	`futex_requeue` vulnerability before 3.14.6 allows for priv esc
		CVE20162384	Double free vulnerability in the `snd_usbmidi_create` (requires physical proximity)
		CVE20140196	`n_tty_write` vuln before 3.14.4 allows priv esc to root
		CVE20132094_semtex	perf_swevent_init Local root exploit (32 bit)
		CVE20176074	`dccp_rcv_state_process` in net/dccp/input.c mishandles structs and can lead to local root
		CVE20132094_32	perf_swevent_init Local root exploit (32 bit)
	[[ base linux kernel vulnerable ]]
		CVE20144014	`chmod` restriction bypass allows users to get root before 3.14.8
		CVE20177308	`packet_set_ring` in net/packet/af_packet.c can gain privileges via crafted system calls.
		CVE20171000112	ip_ufo_append_data() memory corruption flaw can be exploited to gain root privileges.

Dans la sortie, il y a plusieurs catégories. Voici ce que chacune signifie :

[[ exploit disponible correspondant au noyau de la distribution ]]

  • il existe dans le projet un exploit correspondant spécifiquement à la version de la distribution, que vous pouvez utiliser pour exploiter le noyau. Forte probabilité de réussite de l'exploitation.

[[ version du noyau de la distribution vulnérable ]]

  • la version du noyau de la distribution est vulnérable à la vulnérabilité listée, mais n'a pas été explicitement mentionnée comme testée dans le PoC de l'exploit du projet. L'exploitation sans modification de l'exploit peut fonctionner, mais a une probabilité de succès plus faible.

[[ noyau Linux de base vulnérable ]]

  • on ne sait pas si la version du noyau de la distribution est vulnérable, mais le noyau Linux de base se situe dans la plage vulnérable pour cet exploit. L'exploitation sans modification de l'exploit est soit peu probable, soit inconnue, mais pourrait néanmoins fonctionner.

prérequis

  • python2 ou python3

  • pyinstaller (si vous voulez construire un binaire)


utilisation

root@kitploit:~
modes d'exécution :
	(par défaut)	        python3 kernelpop.py
	(mode exploit)	        python3 kernelpop.py -e {nom de l'exploit}
		(dump-source)   python3 kernelpop.py -e {nom de l'exploit} -d
	(mode uname)            python3 kernelpop.py -u {sortie de uname -a}
	(mode interactif)      python3 kernelpop.py -i # OPTION ANCIENNE (identique au mode uname)
autres :
	(chemin playground)       -p {nouveau chemin}
	(fichier de sortie json)      --digest json

mode par défaut (passif)

Le mode par défaut traite les informations sur le noyau hôte et les compare aux exploits de noyau connus disponibles dans le programme. Il produit ensuite une liste de vulnérabilités potentiellement utiles et des exploits attachés.

mode exploit (actif)

root@kitploit:~
-e {nom de l'exploit}

Le mode exploit compile et exécute dynamiquement le code source de l'exploit avec des interactions stdio à l'intérieur du programme. Il peut également intercepter les interruptions des tentatives avortées. Utilisez le nom de l'exploit qui apparaît lors de l'exécution initiale d'énumération kernelpop en mode par défaut.

  • dump-source (option) -d

    • C'est un modificateur pour le mode exploit. Il écrit les fichiers sources de l'exploit donné dans leurs fichiers respectifs dans PLAYGROUND_PATH (par défaut /tmp). Cela est utile pour modifier le code source de l'exploit sur une machine ou pour travailler avec des exploits nécessitant une interaction manuelle ou le codage en dur de valeurs. C'est particulièrement utile lors de l'exécution à partir d'un binaire, car vous n'avez pas accès au code source du projet (c'est-à-dire le code source de l'exploit).

mode uname (passif)

root@kitploit:~
-u {sortie de uname -a}

Cette option vous permet de passer la sortie d'une commande uname -a au programme en ligne, ce qui le rend utilisable pour l'intégration dans des scripts automatisés ou pour toute autre raison envisageable. Remplace le mode interactif.

mode interactif (passif) [ANCIEN - requis pour Mac par la sortie uname]

root@kitploit:~
-i {sortie de uname -a}

Le mode interactif vous permet d'effectuer une énumération avec uniquement la sortie d'une commande uname -a, ce qui le rend utile comme outil d'énumération côté hôte uniquement. Il s'exécute en lançant kernelpop avec le drapeau -i, puis en passant la sortie de uname -a lorsqu'elle est demandée. Il s'agit d'une fonctionnalité ancienne remplacée par le mode uname, mais elle reste prise en charge car -u ne prend pas en charge l'énumération Mac.

chemin PLAYGROUND

root@kitploit:~
-p {nouveau répertoire PLAYGROUND_PATH}

L'option -p définit la valeur de la variable globale PLAYGROUND_PATH. C'est l'emplacement où tous les fichiers sources des exploits sont écrits et où les exploits sont compilés. Par défaut, il est défini sur /tmp. Cependant, vous pouvez le définir sur n'importe quel répertoire avec ce modificateur si vous n'avez pas de droits d'écriture dans /tmp.

sortie digeste

root@kitploit:~
--digest json

Cette option vous permet de vider les résultats d'une exécution de kernelpop dans un fichier json digeste pour un traitement ultérieur. Pour l'instant, je n'ai implémenté que le vidage json, mais je travaillerai sur une version XML si elle est demandée.

À faire

  • ajouter plus d'exploits ! (src/to_add si quelqu'un veut se lancer dans quelques-uns, je vous en prie !)

  • inclure les niveaux de correctifs dans les comparaisons de fenêtres vulnérables

  • ajouter un moyen de remplacer les paramètres détectés en cas d'analyse incorrecte ou de paramètres adverses

Processus pour ajouter des fenêtres de vulnérabilité du noyau : [ devrait écrire un scraper ]

  • google : CVE-XXXX-XXXX "ubuntu"

    • cliquer sur le lien canonique (https://people.canonical.com/~ubuntu-security/cve/2016/CVE-XXXX-XXXX.html)

      • cliquer sur tous les avis liés sur usn.ubuntu.com et analyser les informations

      • récupérer les versions corrigées pour remplir les fenêtres de vulnérabilité par version

  • google : CVE-XXXX-XXXX "debian"

    • lien security-tracker.debian.org (https://security-tracker.debian.org/tracker/CVE-XXXX-XXXX)

      • extraire les informations du bas de la page qui concernent les versions corrigées pour la CVE spécifique
  • google : CVE-XXXX-XXXX "mitre"

    • liens vers d'autres distributions pour en tirer des informations

CVE actuellement prises en charge :

  • CVE-2017-1000379

  • CVE-2017-1000373

  • CVE-2017-1000372

  • CVE-2017-1000371

  • CVE-2017-1000370

  • CVE-2017-1000367

  • CVE-2017-1000112

  • CVE-2017-7308

  • CVE-2017-6074

  • CVE-2017-5123

  • CVE-2016-5195

  • CVE-2016-2384

  • CVE-2016-0728


sources des exploits

https://github.com/SecWiki/linux-kernel-exploits

http://exploit-db.com/

https://github.com/lucyoa/kernel-exploits

https://github.com/SecWiki/windows-kernel-exploits

sources historiques des distributions

Debian

  • debian releases
Télécharger l’outil
  • CVE-2015-1328

  • CVE-2014-4699

  • CVE-2014-4014

  • CVE-2014-3153

  • CVE-2014-0196

  • CVE-2014-0038

  • CVE-2013-2094

  • CVE-2010-4347

  • CVE-2010-2959

  • CVE-2009-1185