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/uname1able/cve-2022-24481-analysis
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationRétro-ingénierieExploitation de Binaires
GitHubuname1able/cve-2022-24481-analysis

CVE-2022-24481-analysis

Analyse approfondie de la confusion de type CLFS de Windows (CVE-2022-24481) avec explication de la cause racine, déroulement de l'exploitation, détails des gadgets du noyau et PoC fonctionnel d'élévation de privilèges locaux.

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
Voir le dépôt
6il y a 25 joursPas encore vérifié

CVE-2022-24481 Confusion de type

Confusion de type

Fichier vulnérable

clfs.sys

Cause racine

Parce que la logique de validation de rgContainers[0] n'est pas stricte, après avoir forgé rgContainers[0], ClientContext chevauche la structure ContainerContext. Si les données forgées sont acceptées, après CloseHandle, CClfsLogFcbPhysical::FlushMetadata restaure les données ClientContext.

Méthode d'exploitation

Après avoir forgé rgContainers[0], ClientContext chevauche la structure ContainerContext. Si les données forgées sont acceptées, après CloseHandle, CClfsLogFcbPhysical::FlushMetadata restaure les données ClientContext. En raison du chevauchement des structures, ce processus modifie ContainerContext->pContainer pour pointer vers les données forgées. Enfin, lorsque CClfsBaseFilePersisted::RemoveContainer est appelé, cela déclenche un appel indirect de fonction membre, exécute un gadget spécifique et mène à une élévation de privilèges.

Déroulement du PoC

1. Préparation du fichier statique

createlog crée un nouveau fichier journal.

Ajoutez une entrée Container.

Créez un lien symbolique X:\ pointant vers le répertoire courant.

Effacez la plage cbSymbolName_start -> cbSymbolName_end.

Définissez cbSymbolName_start sur X:\N.

Copiez les données de ContainerContext_start -> New_cbSymbolName_end dans ClientContext.

Mettez à jour rgContainers[0] pour qu'il pointe vers le nouvel emplacement ContainerContext_start.

Mettez à jour la nouvelle valeur ContainerContext->pContainer.

Recalculez la somme de contrôle.

2. Préparation à l'exécution

Localisez l'adresse du gadget dans la mémoire du noyau.

Construisez la table virtuelle factice.

Effectuez la configuration mémoire restante.

3. Ouvrir le fichier journal forgé

CClfsLogFcbPhysical::Initialize

00000001C0002EDB stocke les données ClientContext.

Après CloseHandle, CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata s'exécute.

Il copie les données forgées dans ClientContext. Comme ClientContext chevauche ContainerContext, ContainerContext->pContainer est écrasé avec les données forgées.

CClfsBaseFilePersisted::RemoveContainer exécute ensuite notre gadget, ce qui entraîne une écriture de 16 octets vers une adresse arbitraire.

Références

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

Liste des modifications de données

Points clés du flux de fonctions

win10_21H2_19044.1620

CClfsLogFcbPhysical::Initialize(0x??7c) routine d'initialisation pour l'ouverture du fichier

bp clfs!CClfsLogFcbPhysical::Initialize + 0x45F

Ce code stocke la mémoire ClientContext.

Après CloseHandle, CClfsRequest::Cleanup->CClfsLogFcbPhysical::FlushMetadata est exécuté.

bp clfs!CClfsLogFcbPhysical::FlushMetadata + 0x46

Cela restaure les données ClientContext.

CClfsBaseFilePersisted::RemoveContainer

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

Utilisez le pointeur de table virtuelle forgée pour atteindre le gadget.

Notez que si le fichier forgé est invalide, l'ouverture du fichier échouera et GetLastError révélera la raison. Dans ce cas, le déroulement de l'exploitation ne peut pas continuer.

Gadget

CClfsBaseFilePersisted::RemoveContainer

CLFS!ClfsEarlierLsn

nt!SeSetAccessStateGenericMapping

nt!SeSetAccessStateGenericMapping

movdqu xmmword ptr [rax+8], xmm0 écrit 16 octets dans [rax+8] (XMMWORD, 128 bits).

Après exécution séquentielle, le résultat est d'écrire les données de 16 octets de poi(rdx) 0xFFFFFFFF dans poi(poi(rcx+0x48)+0x8).

rcx est l'emplacement du pointeur de table virtuelle, et cet emplacement est sous notre contrôle.

PoC implémenté

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

PoC Win10

winver

win10_21H2_19044.1620

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x10F

PoC Win11

winver

win11_21H2_22000.593

bp clfs!CClfsBaseFilePersisted::RemoveContainer + 0x183

Télécharger l’outil