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
Herramientas/GitHubGitHub/spencerdodd/kernelpop
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de Penetración
GitHubspencerdodd/kernelpop

kernelpop

marco de enumeración y explotación de escalada de privilegios del kernel

Ver Repositorio
7021312hace 8 añosRevisado por Kitploit

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

kernelpop

kernelpop es un marco de trabajo para realizar enumeración y explotación automatizada de vulnerabilidades del kernel en los siguientes sistemas operativos:

  • Linux

  • Mac

Está diseñado para ser python-agnóstico en cuanto a versión, lo que significa que debería funcionar tanto con python2 como con python3

  • por favor, házmelo saber si encuentras que no funciona

ejemplo de enumeración hasta root (Linux)

got-root


formas de usar

  • ejecutar desde el código fuente del proyecto
root@kitploit:~
$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ python kernelpop.py || python3 kernelpop.py
  • construir binario
root@kitploit:~
$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ ./create_executable.sh
$ ./kernelpop
  • pasos para construir binario sin script
  1. instalar pyinstaller (los pasos varían según el sistema de compilación)
  2. $ pyinstaller kernelpop.py --onefile
  3. $ cp dist/kernelpop .

ambos pasos de construcción del binario deberían crear un binario kernelpop en la raíz del proyecto.


salida de enumeración

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.

En la salida, hay algunas categorías. Esto es lo que significa cada una

[[ distro kernel matched exploit available ]]

  • hay un exploit de kernel coincidente específico de la versión de la distribución en el proyecto que puedes usar para explotar el kernel. Alta probabilidad de explotación exitosa.

[[ distro kernel version vulnerable ]]

  • la versión del kernel de la distribución es vulnerable a la vulnerabilidad listada, pero no se indicó explícitamente como probada en el exploit PoC en el proyecto. La explotación sin modificación del exploit puede funcionar, pero tiene una menor probabilidad de éxito.

[[ base linux kernel vulnerable ]]

  • se desconoce si la versión del kernel de la distribución es vulnerable a la vulnerabilidad, pero el kernel base de Linux está en el rango vulnerable para el exploit. La explotación sin modificación del exploit es poco probable o desconocida, pero aún podría funcionar.

requisitos

  • python2 o python3

  • pyinstaller (si quieres construir un binario)


usage

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

modo predeterminado (pasivo)

El modo default procesa información sobre el kernel del host y lo compara con los exploits de kernel conocidos disponibles para el programa. Luego genera una lista de vulnerabilidades potencialmente útiles y exploits adjuntos.

modo exploit (activo)

root@kitploit:~
-e {exploit name}

El modo exploit compila y ejecuta dinámicamente el código fuente del exploit con interacciones stdio dentro del programa. También puede capturar interrupciones de intentos detenidos prematuramente. Usa el nombre del exploit que aparece en la ejecución inicial de enumeración de kernelpop en el modo default.

  • dump-source (opción) -d

    • Este es un modificador para el modo exploit. Vuelca los archivos fuente del exploit dado a sus respectivos archivos en PLAYGROUND_PATH (por defecto /tmp). Esto es útil para modificar el código fuente del exploit en una máquina o para trabajar con exploits que requieren interacción manual o codificación fija de valores. Es especialmente útil cuando se ejecuta desde un binario, porque no tendrás acceso al código fuente del proyecto (es decir, el código fuente del exploit).

modo uname (pasivo)

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

Esta opción te permite pasar la salida de un comando uname -a al programa en línea, lo que lo hace utilizable para integración en scripts automatizados o por cualquier otra razón previsible. Reemplaza al modo interactivo.

modo interactivo (pasivo) [LEGACY - requerido para Mac por la salida de uname]

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

El modo interactive te permite realizar enumeración solo con la salida de un comando uname -a, lo que lo hace útil como una herramienta de enumeración solo del lado del host. Se ejecuta iniciando kernelpop con la bandera -i y luego pasando la salida de uname -a cuando se solicite. Esta es una característica heredada y reemplazada por el modo uname, pero sigue siendo compatible ya que -u no soporta la enumeración en Mac.

ruta PLAYGROUND

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

La opción -p establece el valor de la variable global PLAYGROUND_PATH. Esta es la ubicación donde se escriben todos los archivos fuente de exploits, y donde se compilan los exploits. Por defecto, está establecida en /tmp. Sin embargo, puedes configurarla en cualquier directorio con este modificador en caso de que no tengas permisos de escritura en /tmp.

salida digerible

root@kitploit:~
--digest json

Esta opción te permite volcar los resultados de una ejecución de kernelpop a un archivo json digerible para su procesamiento posterior. Hasta ahora, solo he implementado el volcado json, pero trabajaré en una versión XML si se solicita.

To Do

  • añadir más exploits! (src/to_add si alguien quiere ponerse manos a la obra con algunos de estos, ¡adelante!)

  • incluir niveles de parche en las comparaciones de ventanas vulnerables

  • agregar forma de anular configuraciones detectadas en caso de análisis incorrecto o configuraciones adversarias

Proceso para agregar ventanas de vulnerabilidad del kernel: [ debería escribir un scraper ]

  • google: CVE-XXXX-XXXX "ubuntu"

    • hacer clic en el enlace canónico (https://people.canonical.com/~ubuntu-security/cve/2016/CVE-XXXX-XXXX.html)

      • hacer clic en todos los avisos vinculados en usn.ubuntu.com y analizar la información

      • obtener las versiones de parche para completar las ventanas de vulnerabilidad por versión

  • google: CVE-XXXX-XXXX "debian"

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

      • extraer información de la parte inferior de la página que se relaciona con las versiones parcheadas para el cve específico
  • google: CVE-XXXX-XXXX "mitre"

    • enlaces a otras distribuciones para extraer información

currently supported CVE's:

  • 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


exploit sources

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

http://exploit-db.com/

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

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

fuentes históricas de distribuciones

Debian

  • debian releases
Descargar herramienta
  • 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