Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
CVE-2023-28218 — Analyse technique détaillée et exploit de preuve de concept pour CVE-2023-28218, une vulnérabilité d'élévation de privilèges du noyau Windows dans le pilote AFD.sys, avec une procédure pas à pas d'exploitation et une analyse du correctif. | Kitploit
Outils/GitHubGitHub/h1bana/cve-2023-28218
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationApprentissage et ÉducationExploitation de Binaires
GitHubh1bana/cve-2023-28218

CVE-2023-28218

Analyse technique détaillée et exploit de preuve de concept pour CVE-2023-28218, une vulnérabilité d'élévation de privilèges du noyau Windows dans le pilote AFD.sys, avec une procédure pas à pas d'exploitation et une analyse du correctif.

Voir le dépôt
113il y a 3 ansPas encore vérifié

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

Rapport CVE-2023-28218

Aperçu du bogue

Bogue conduisant à une élévation de privilèges dans le noyau Windows. Le bogue apparaît dans le pilote Windows Ancrillary Function Driver for WinSock (AFD.sys). Le bogue a été corrigé dans le correctif du 11/04/2023. Il a un score CVSS:3.1 7.0 / 6.1 et est évalué comme Important.

Description du bogue

  • Type de bogue : Double fetch et Integer overflow menant à un pool overflow.
  • Le bogue se produit dans les fonctions Afd!AfdComputeCMSGLength et Afd!AfdCopyCMSGBuffer. img1

Ces deux fonctions reçoivent toutes deux v82 comme paramètre d'entrée. v82 est une adresse contrôlée par l'espace utilisateur. Dans la fonction Afd!AfdComputeCMSGLength, cette adresse est déréférencée directement pour obtenir la valeur. Ensuite, la longueur du tampon CMSG est calculée et retournée. Un pool est ensuite alloué selon cette taille. En contrôlant les deux paramètres d'entrée a1 et a2, on peut contrôler la taille retournée dans le paramètre a3. img2

Dans la fonction Afd!AfdCopyCMSGBuffer, l'adresse v82 est déréférencée directement pour obtenir la valeur. Après quelques vérifications, cette valeur est utilisée comme taille pour l'opération memmove. img3

Dans cette fonction, il y a un bogue Integer overflow. Combiné au fait que les deux fonctions lisent directement depuis une adresse en espace utilisateur, on peut modifier sa valeur pendant l'exécution. Cela conduit à une taille très grande pour le memmove. Lorsque la copie atteint une zone mémoire inaccessible, un try/catch est déclenché. Mais la copie des zones précédentes a déjà eu lieu. On peut ainsi copier selon la taille souhaitée. img4

  • Pour déclencher le POC, il faut d'abord créer un socket avec le paramètre type défini sur SOCK_DGRAM. Ensuite, utiliser le handle de ce socket comme paramètre pour appeler la fonction bind. Enfin, créer 2 threads : un thread appelle en continu DeviceControl avec l'IOCTL 0x120D3. Configurer le userbuffer de manière appropriée pour contourner certaines vérifications. L'autre thread modifie en continu la valeur stockée à l'adresse espace utilisateur qui sert de paramètre aux deux fonctions ci-dessus.

Exploitation

  • Avec ce bogue, on peut overflow un pool non-paginé NX avec une taille, et les données sont entièrement contrôlables depuis l'espace utilisateur.
  • La méthode d'exploitation consiste à sprayer de nombreux objets Namedpipe, puis à en libérer certains pour créer des trous dans le tas. Ensuite, créer un pool après avoir calculé la taille depuis la fonction Afd!AfdComputeCMSGLength. Cette taille doit correspondre à celle d'un objet Namedpipe. Le pool sera alors alloué dans les objets qui viennent d'être libérés. Utiliser le bogue pour overflow les objets Namedpipe adjacents, puis utiliser les mécanismes des Namedpipe pour obtenir un accès lecture/écriture à la mémoire noyau. Lire le token du processus système, puis l'écrire dans le token du processus actuel.

Plage affectée

  • Windows Server 2012 R2 (installation Server Core) versions antérieures à 6.3.9600.20919
  • Windows Server 2012 R2 versions antérieures à 6.3.9600.20919
  • Windows Server 2012 (installation Server Core) versions antérieures à 6.2.9200.24216
  • Windows Server 2012 versions antérieures à 6.2.9200.24216
  • Windows Server 2008 R2 pour systèmes x64 Service Pack 1 (installation Server Core) versions antérieures à 6.1.7601.26466
  • Windows Server 2008 R2 pour systèmes x64 Service Pack 1 versions antérieures à 6.1.7601.26466
  • Windows Server 2008 pour systèmes x64 Service Pack 2 (installation Server Core) versions antérieures à 6.0.6003.22015
  • Windows Server 2008 pour systèmes x64 Service Pack 2 versions antérieures à 6.0.6003.22015
  • Windows Server 2008 pour systèmes 32 bits Service Pack 2 (installation Server Core) versions antérieures à 6.0.6003.22015
  • Windows Server 2008 pour systèmes 32 bits Service Pack 2 versions antérieures à 6.0.6003.22015
  • Windows Server 2016 (installation Server Core) versions antérieures à 10.0.14393.5850
  • Windows Server 2016 versions antérieures à 10.0.14393.5850
  • Windows 10 Version 1607 pour systèmes x64 versions antérieures à 10.0.14393.5850
  • Windows 10 Version 1607 pour systèmes 32 bits versions antérieures à 10.0.14393.5850
  • Windows 10 pour systèmes x64 versions antérieures à 10.0.10240.19869
  • Windows 10 pour systèmes 32 bits versions antérieures à 10.0.10240.19869
  • Windows 10 Version 22H2 pour systèmes 32 bits versions antérieures à 10.0.19045.2846
  • Windows 10 Version 22H2 pour systèmes ARM64 versions antérieures à 10.0.19045.2846
  • Windows 10 Version 22H2 pour systèmes x64 versions antérieures à 10.0.19045.2846
  • Windows 11 Version 22H2 pour systèmes x64 versions antérieures à 10.0.22621.1555
  • Windows 11 Version 22H2 pour systèmes ARM64 versions antérieures à 10.0.22621.1555
  • Windows 10 Version 21H2 pour systèmes x64 versions antérieures à 10.0.19044.2846
  • Windows 10 Version 21H2 pour systèmes ARM64 versions antérieures à 10.0.19044.2846
  • Windows 10 Version 21H2 pour systèmes 32 bits versions antérieures à 10.0.19044.2846
  • Windows 11 version 21H2 pour systèmes ARM64 versions antérieures à 10.0.22000.1817
  • Windows 11 version 21H2 pour systèmes x64 versions antérieures à 10.0.22000.1817
  • Windows 10 Version 20H2 pour systèmes ARM64 versions antérieures à 10.0.19042.2846
  • Windows 10 Version 20H2 pour systèmes 32 bits versions antérieures à 10.0.19042.2846
  • Windows 10 Version 20H2 pour systèmes x64 versions antérieures à 10.0.19042.2846
  • Windows Server 2022 (installation Server Core) versions antérieures à 10.0.20348.1668
  • Windows Server 2022 versions antérieures à 10.0.20348.1668
  • Windows Server 2019 (installation Server Core) versions antérieures à 10.0.17763.4252
  • Windows Server 2019 versions antérieures à 10.0.17763.4252
  • Windows 10 Version 1809 pour systèmes ARM64 versions antérieures à 10.0.17763.4252
  • Windows 10 Version 1809 pour systèmes x64 versions antérieures à 10.0.17763.4252
  • Windows 10 Version 1809 pour systèmes 32 bits versions antérieures à 10.0.17763.4252

Le correctif

  • Le bogue a été corrigé en remplaçant les deux anciennes fonctions par deux nouvelles fonctions ; les anciennes fonctions ont reçu le suffixe _old à la fin de leur nom. Ces nouvelles fonctions ont été. Dans les deux nouvelles fonctions, bien qu'il y ait toujours un double fetch, la valeur lue est vérifiée avant d'être utilisée. Les fonctions Rtl sont utilisées pour remplacer les opérations arithmétiques, empêchant ainsi l'Integer overflow.

Conclusion

  • Le bogue a une plage d'impact très large, menaçant de nombreux systèmes. Cependant, le payload d'exploitation a encore un faible taux d'échec, entraînant un crash de Windows en raison du spray du tas. De plus, après avoir élevé les privilèges du processus cmd à System, quitter ce processus entraîne également un crash de Windows, car l'objet Namedpipe a été corrompu pendant l'exploitation.

Pièces jointes

  • POC minimal minimal
  • POC d'exploit exploit
Télécharger l’outil