Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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-2022-24481-analysis — Análisis en profundidad de la confusión de tipos en CLFS de Windows (CVE-2022-24481) con explicación de la causa raíz, flujo de explotación, detalles de los gadgets del kernel y PoC funcional de escalada local de privilegios. | Kitploit
Herramientas/GitHubGitHub/uname1able/cve-2022-24481-analysis
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónIngeniería InversaExplotación de Binarios
GitHubuname1able/cve-2022-24481-analysis

CVE-2022-24481-analysis

Análisis en profundidad de la confusión de tipos en CLFS de Windows (CVE-2022-24481) con explicación de la causa raíz, flujo de explotación, detalles de los gadgets del kernel y PoC funcional de escalada local de privilegios.

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
Ver Repositorio
15hace 1 mesAún no revisado

CVE-2022-24481 Confusión de tipos

Confusión de tipos

Archivo vulnerable

clfs.sys

Causa raíz

Debido a que la lógica de validación de rgContainers[0] no es estricta, después de falsificar rgContainers[0], ClientContext se superpone con la estructura ContainerContext. Si los datos falsos son aceptados, después de CloseHandle, CClfsLogFcbPhysical::FlushMetadata restaura los datos de ClientContext.

Método de explotación

Después de falsificar rgContainers[0], ClientContext se superpone con la estructura ContainerContext. Si los datos falsos son aceptados, después de CloseHandle, CClfsLogFcbPhysical::FlushMetadata restaura los datos de ClientContext. Debido a que las estructuras se superponen, este proceso cambia ContainerContext->pContainer a los datos falsificados. Finalmente, cuando se llama a CClfsBaseFilePersisted::RemoveContainer, se desencadena una llamada indirecta a una función miembro, se ejecuta un gadget específico y se produce una escalada de privilegios.

Flujo del PoC

1. Preparación del archivo estático

  • createlog crea un nuevo archivo de registro.
  • Agregar una entrada Container.
  • Crear un enlace simbólico X:\ que apunte al directorio actual.
  • Limpiar el rango cbSymbolName_start -> cbSymbolName_end.
  • Establecer cbSymbolName_start en X:\N.
  • Copiar los datos en ContainerContext_start -> New_cbSymbolName_end dentro de ClientContext.
  • Actualizar rgContainers[0] para que apunte a la nueva ubicación de ContainerContext_start.
  • Actualizar el nuevo valor de ContainerContext->pContainer.
  • Recalcular la suma de comprobación.

2. Preparación en tiempo de ejecución

  • Localizar la dirección del gadget en la memoria del kernel.
  • Construir la tabla virtual falsa.
  • Realizar la configuración de memoria restante.

3. Abrir el archivo de registro falsificado

CClfsLogFcbPhysical::Initialize

00000001C0002EDB almacena los datos de ClientContext.

Después de CloseHandle, se ejecuta CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata.

Copia los datos falsificados de vuelta a ClientContext. Debido a que ClientContext se superpone con ContainerContext, ContainerContext->pContainer se sobrescribe con los datos falsificados.

A continuación, CClfsBaseFilePersisted::RemoveContainer ejecuta nuestro gadget, lo que resulta en una escritura de 16 bytes en una dirección arbitraria.

Referencias

https://zhuanlan.zhihu.com/p/645490730

https://github.com/fr4nkxixi/CVE-2022-24481-POC

https://securelist.com/windows-clfs-exploits-ransomware-cve-2022-24521/111580/

https://starmap.dbappsecurity.com.cn/blog/articles/2022/05/10/cve-2022-24481/

https://www.4awl.net/9646.html

Lista de modificaciones de datos

Puntos clave del flujo de funciones

win10_21H2_19044.1620

CClfsLogFcbPhysical::Initialize(0x??7c) rutina de inicialización para abrir el archivo

bp clfs!CClfsLogFcbPhysical::Initialize + 0x45F

Este código almacena la memoria de ClientContext.

Después de CloseHandle, se ejecuta CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata.

bp clfs!CClfsLogFcbPhysical::FlushMetadata + 0x46

Esto restaura los datos de ClientContext.

CClfsBaseFilePersisted::RemoveContainer

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

Usar el puntero de tabla virtual falsificado para alcanzar el gadget.

Ten en cuenta que si el archivo falsificado falla, la apertura del archivo fallará y GetLastError revelará el motivo. En ese caso, el flujo de explotación no puede continuar.

Gadget

CClfsBaseFilePersisted::RemoveContainer

CLFS!ClfsEarlierLsn

nt!SeSetAccessStateGenericMapping

nt!SeSetAccessStateGenericMapping

movdqu xmmword ptr [rax+8], xmm0 escribe 16 bytes en [rax+8] (XMMWORD, 128 bits).

Después de la ejecución secuencial, el resultado es escribir los 16 bytes de datos desde poi(rdx) 0xFFFFFFFF en poi(poi(rcx+0x48)+0x8).

rcx es la ubicación del puntero de la tabla virtual, y esta ubicación está bajo nuestro control.

PoC implementado

https://github.com/uname1able/CVE-2022-24481.git

PoC para Win10

winver

win10_21H2_19044.1620

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

PoC para Win11

winver

win11_21H2_22000.593

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x183

Descargar herramienta