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
Strumenti/GitHubGitHub/spencerdodd/kernelpop
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPenetration Testing
GitHubspencerdodd/kernelpop

kernelpop

framework di enumerazione e sfruttamento dell'escalation dei privilegi del kernel

Vedi Repository
7021318 anni faRevisionato da Kitploit

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

kernelpop

kernelpop è un framework per eseguire enumerazione e sfruttamento automatizzato delle vulnerabilità del kernel sui seguenti sistemi operativi:

  • Linux

  • Mac

È progettato per essere indipendente dalla versione di python, il che significa che dovrebbe funzionare sia con python2 che con python3

  • per favore fatemi sapere se scoprite che non funziona

esempio di enumerazione fino a root (Linux)

got-root


modi d'uso

  • eseguire dal sorgente del progetto
root@kitploit:~
$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ python kernelpop.py || python3 kernelpop.py
  • creare un binario
root@kitploit:~
$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ ./create_executable.sh
$ ./kernelpop
  • passaggi per creare il binario senza script
  1. installare pyinstaller (i passaggi variano a seconda del sistema di build)
  2. $ pyinstaller kernelpop.py --onefile
  3. $ cp dist/kernelpop .

entrambi i passaggi per la creazione del binario dovrebbero creare un binario kernelpop nella radice del progetto.


output di enumerazione

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.

Nell'output ci sono alcune categorie. Ecco cosa significa ciascuna

[[ distro kernel matched exploit available ]]

  • nel progetto è presente un exploit per il kernel specifico per la versione della distribuzione che puoi usare per sfruttare il kernel. Alta probabilità di successo dello sfruttamento.

[[ distro kernel version vulnerable ]]

  • la versione del kernel della distribuzione è vulnerabile alla vulnerabilità elencata, ma non è stata esplicitamente indicata come testata nell'exploit PoC nel progetto. Lo sfruttamento senza modifiche all'exploit potrebbe funzionare, ma ha una minore probabilità di successo.

[[ base linux kernel vulnerable ]]

  • non è noto se la versione del kernel della distribuzione sia vulnerabile alla vulnerabilità, ma il kernel linux di base rientra nell'intervallo vulnerabile per l'exploit. Lo sfruttamento senza modifiche all'exploit è improbabile o sconosciuto, ma potrebbe comunque funzionare.

requisiti

  • python2 o python3

  • pyinstaller (se vuoi creare un binario)


utilizzo

root@kitploit:~
run modes:
	(default)	        python3 kernelpop.py
	(exploit-mode)	        python3 kernelpop.py -e {exploit name}
		(dump-source)   python3 kernelpop.py -e {exploit name} -d
	(uname-mode)            python3 kernelpop.py -u {uname -a output}
	(interactive-mode)      python3 kernelpop.py -i # LEGACY option (same as uname-mode)
other:
	(playground path)       -p {new path}
	(json output file)      --digest json

modalità predefinita (passiva)

La modalità default elabora le informazioni sul kernel host e le confronta con gli exploit del kernel noti disponibili per il programma. Quindi restituisce un elenco di potenziali vulnerabilità utili e relativi exploit.

modalità exploit (attiva)

root@kitploit:~
-e {exploit name}

La modalità exploit compila ed esegue dinamicamente il codice sorgente dell'exploit con interazioni stdio all'interno del programma. Può anche intercettare gli interrupt da tentativi interrotti prematuramente. Usa il nome dell'exploit che appare nell'esecuzione iniziale di enumerazione di kernelpop in modalità default.

  • dump-source (opzione) -d

    • Questo è un modificatore per la modalità exploit. Scarica i file sorgente per l'exploit specificato nei rispettivi file in PLAYGROUND_PATH (predefinito /tmp). È utile per modificare il sorgente dell'exploit su una macchina o per lavorare con exploit che richiedono interazione manuale o hard-coding di valori. È particolarmente utile quando si esegue da un binario, perché non avrai accesso al codice sorgente del progetto (cioè il sorgente dell'exploit).

modalità uname (passiva)

root@kitploit:~
-u {uname -a output}

Questa opzione consente di passare l'output di un comando uname -a al programma inline, rendendolo utilizzabile per l'integrazione in script automatizzati o per qualsiasi altro motivo prevedibile. Sostituisce la modalità interattiva.

modalità interattiva (passiva) [LEGACY - richiesta per Mac dall'output uname]

root@kitploit:~
-i {uname -a output}

La modalità interactive consente di eseguire l'enumerazione solo con l'output di un comando uname -a, rendendolo utile come strumento di enumerazione solo lato host. Viene eseguita avviando kernelpop con il flag -i e poi passando l'output di uname -a quando richiesto. Questa è una funzionalità legacy e sostituita dalla modalità uname, ma rimane supportata poiché -u non supporta l'enumerazione su Mac.

percorso PLAYGROUND

root@kitploit:~
-p {new PLAYGROUND_PATH dir}

L'opzione -p imposta il valore della variabile globale PLAYGROUND_PATH. Questa è la posizione in cui vengono scritti tutti i file sorgente degli exploit e compilati gli exploit. Di default è impostata su /tmp. Tuttavia, puoi impostarla su qualsiasi directory con questo modificatore nel caso non abbia accesso in scrittura su /tmp.

output digeribile

root@kitploit:~
--digest json

Questa opzione consente di scaricare i risultati di un'esecuzione di kernelpop in un file json elaborabile per un'elaborazione successiva. Finora ho implementato solo il dump json, ma lavorerò su una versione XML se richiesto.

Da fare

  • aggiungere più exploit! (src/to_add se qualcuno vuole cimentarsi con alcuni di questi, si accomodi!)

  • includere i livelli di patch nei confronti delle finestre di vulnerabilità

  • aggiungere un modo per sovrascrivere le impostazioni rilevate in caso di parsing errato o impostazioni avversarie

Processo per aggiungere finestre di vulnerabilità del kernel: [ dovrebbe scrivere uno scraper ]

  • cercare su Google: CVE-XXXX-XXXX "ubuntu"

    • cliccare sul link canonical (https://people.canonical.com/~ubuntu-security/cve/2016/CVE-XXXX-XXXX.html)

      • cliccare su tutti gli advisory collegati su usn.ubuntu.com e analizzare le informazioni

      • ottenere le versioni delle patch per riempire le finestre di vulnerabilità per versione

  • cercare su Google: CVE-XXXX-XXXX "debian"

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

      • ottenere le informazioni dalla parte inferiore della pagina che riguardano le versioni patchate per la specifica cve
  • cercare su Google: CVE-XXXX-XXXX "mitre"

    • link ad altre distribuzioni da cui ottenere informazioni

CVE attualmente supportate:

  • 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


fonti degli exploit

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

http://exploit-db.com/

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

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

fonti storiche delle distribuzioni

Debian

  • debian releases
Scarica lo strumento
  • 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