Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2023-28218 — Detaillierte technische Analyse und Proof-of-Concept-Exploit für CVE-2023-28218, eine Windows-Kernel-Privilege-Escalation-Schwachstelle im AFD.sys-Treiber, mit Exploitation-Walkthrough und Patch-Analyse. | Kitploit
Tools/GitHubGitHub/h1bana/cve-2023-28218
Privilege EscalationSchwachstellenanalyseExploitationLernen & BildungBinary-Exploitation
GitHubh1bana/cve-2023-28218

CVE-2023-28218

Detaillierte technische Analyse und Proof-of-Concept-Exploit für CVE-2023-28218, eine Windows-Kernel-Privilege-Escalation-Schwachstelle im AFD.sys-Treiber, mit Exploitation-Walkthrough und Patch-Analyse.

Repository anzeigen
111vor 3 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Bericht über CVE-2023-28218

Bug-Übersicht

Der Fehler führt zur Privilegieneskalation im Windows-Kernel. Der Fehler tritt im Treiber Windows Ancrillary Function Driver for WinSock (AFD.sys) auf. Der Fehler wurde im Patch vom 11.04.2023 veröffentlicht. Er hat eine Bewertung von CVSS:3.1 7.0 / 6.1 und wird als Important eingestuft.

Bug-Beschreibung

  • Fehlertyp: Double fetch und Integer overflow führen zu pool overflow.
  • Der Fehler tritt in den Funktionen Afd!AfdComputeCMSGLength und Afd!AfdCopyCMSGBuffer auf. img1

Diese beiden Funktionen erhalten beide v82 als Eingabeparameter. v82 ist eine vom Usermode kontrollierte Adresse. In der Funktion Afd!AfdComputeCMSGLength wird diese Adresse direkt referenziert, um den Wert zu erhalten. Anschließend wird die Länge des CMSG-Puffers berechnet und zurückgegeben. Danach wird ein Pool mit dieser Größe alloziert. Durch die Kontrolle der beiden Eingabeparameter a1 und a2 können wir die Größe steuern, die im Parameter a3 zurückgegeben wird. img2

In der Funktion Afd!AfdCopyCMSGBuffer wird die Adresse v82 direkt referenziert, um den Wert zu erhalten. Nach einigen Prüfungen wird dieser Wert als Größe für die memmove-Operation verwendet. img3

In dieser Funktion gibt es einen Integer overflow. In Kombination damit, dass beide Funktionen direkt von der Adresse im Usermode abrufen, können wir den Wert während der Laufzeit ändern. Dies führt zu einer sehr großen Größe bei memmove. Beim Kopieren in einen nicht zugänglichen Speicherbereich tritt ein try-catch auf. Aber das Kopieren der vorherigen Speicherbereiche ist bereits erfolgt. Dadurch können wir mit der gewünschten Größe kopieren. img4

  • Um den PoC auszulösen, muss zunächst ein Socket mit dem Parameter type = SOCK_DGRAM erstellt werden. Anschließend wird der Handle dieses Sockets als Parameter für die bind-Funktion verwendet. Zuletzt werden zwei Threads erstellt: Ein Thread ruft wiederholt DeviceControl mit dem IOCTL 0x120D3 auf. Richten Sie einen geeigneten Userbuffer ein, um einige Prüfungen zu umgehen. Der andere Thread ändert kontinuierlich den Wert an der Usermode-Adresse, der als Parameter für die beiden genannten Funktionen dient.

Exploit

  • Mit diesem Fehler können wir einen Non-Paged-NX-Pool mit einer Größe überlaufen lassen, wobei die Daten vollständig vom Usermode kontrolliert werden können.
  • Der Exploit-Ansatz besteht darin, viele Namedpipe-Objekte zu sprayen, dann einige Objekte freizugeben, um Löcher im Heap zu erzeugen. Anschließend wird ein Pool erstellt, dessen Größe aus der Funktion Afd!AfdComputeCMSGLength berechnet wird. Diese Größe muss mit der Größe des Namedpipe-Objekts übereinstimmen. Dann wird der Pool in die gerade freigegebenen Objekte alloziert. Mit dem Bug werden benachbarte Namedpipe-Objekte überlaufen, um dann die Mechanismen von Namedpipe zu nutzen und Lese-/Schreibzugriff auf den Kernel-Speicher zu erhalten. Das Token des Systemprozesses wird gelesen und dann in das Token des aktuellen Prozesses geschrieben.

Betroffene Versionen

  • Windows Server 2012 R2 (Server Core installation) Build vor Version 6.3.9600.20919
  • Windows Server 2012 R2 Build vor Version 6.3.9600.20919
  • Windows Server 2012 (Server Core installation) Build vor Version 6.2.9200.24216
  • Windows Server 2012 Build vor Version 6.2.9200.24216
  • Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation) Build vor Version 6.1.7601.26466
  • Windows Server 2008 R2 for x64-based Systems Service Pack 1 Build vor Version 6.1.7601.26466
  • Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation) Build vor Version 6.0.6003.22015
  • Windows Server 2008 for x64-based Systems Service Pack 2 Build vor Version 6.0.6003.22015
  • Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation) Build vor Version 6.0.6003.22015
  • Windows Server 2008 for 32-bit Systems Service Pack 2 Build vor Version 6.0.6003.22015
  • Windows Server 2016 (Server Core installation) Build vor Version 10.0.14393.5850
  • Windows Server 2016 Build vor Version 10.0.14393.5850
  • Windows 10 Version 1607 for x64-based Systems Build vor Version 10.0.14393.5850
  • Windows 10 Version 1607 for 32-bit Systems Build vor Version 10.0.14393.5850
  • Windows 10 for x64-based Systems Build vor Version 10.0.10240.19869
  • Windows 10 for 32-bit Systems Build vor Version 10.0.10240.19869
  • Windows 10 Version 22H2 for 32-bit Systems Build vor Version 10.0.19045.2846
  • Windows 10 Version 22H2 for ARM64-based Systems Build vor Version 10.0.19045.2846
  • Windows 10 Version 22H2 for x64-based Systems Build vor Version 10.0.19045.2846
  • Windows 11 Version 22H2 for x64-based Systems Build vor Version 10.0.22621.1555
  • Windows 11 Version 22H2 for ARM64-based Systems Build vor Version 10.0.22621.1555
  • Windows 10 Version 21H2 for x64-based Systems Build vor Version 10.0.19044.2846
  • Windows 10 Version 21H2 for ARM64-based Systems Build vor Version 10.0.19044.2846
  • Windows 10 Version 21H2 for 32-bit Systems Build vor Version 10.0.19044.2846
  • Windows 11 version 21H2 for ARM64-based Systems Build vor Version 10.0.22000.1817
  • Windows 11 version 21H2 for x64-based Systems Build vor Version 10.0.22000.1817
  • Windows 10 Version 20H2 for ARM64-based Systems Build vor Version 10.0.19042.2846
  • Windows 10 Version 20H2 for 32-bit Systems Build vor Version 10.0.19042.2846
  • Windows 10 Version 20H2 for x64-based Systems Build vor Version 10.0.19042.2846
  • Windows Server 2022 (Server Core installation) Build vor Version 10.0.20348.1668
  • Windows Server 2022 Build vor Version 10.0.20348.1668

Der Patch

  • Der Fehler wurde behoben, indem die beiden alten Funktionen durch zwei neue Funktionen ersetzt wurden. Die alten Funktionen erhielten das Suffix _old an ihren Namen. Diese neuen Funktionen haben. In den neuen Funktionen gibt es zwar immer noch einen Double Fetch, aber der abgerufene Wert wird vor der Verwendung überprüft. Die Rtl-Funktionen werden verwendet, um die arithmetischen Operationen zu ersetzen und einen Integer overflow zu verhindern.

Fazit

  • Der Fehler hat einen sehr weiten betroffenen Bereich und bedroht viele Systeme. Allerdings hat das Exploit-Payload beim Ausführen immer noch eine kleine Fehlerrate, die zu einem Windows-Absturz aufgrund des Heap-Sprays führt. Zudem führt das Beenden dieses Prozesses, nachdem die cmd-Prozessrechte auf System erhöht wurden, ebenfalls zu einem Windows-Absturz. Dies liegt daran, dass während des Exploits das Namedpipe-Objekt beschädigt wurde.

Anhänge

  • Minimaler PoC minimal
  • Exploit PoC exploit
Tool herunterladen
  • Windows Server 2019 (Server Core installation) Build vor Version 10.0.17763.4252
  • Windows Server 2019 Build vor Version 10.0.17763.4252
  • Windows 10 Version 1809 for ARM64-based Systems Build vor Version 10.0.17763.4252
  • Windows 10 Version 1809 for x64-based Systems Build vor Version 10.0.17763.4252
  • Windows 10 Version 1809 for 32-bit Systems Build vor Version 10.0.17763.4252