Windows XP核心驱动本地权限提升漏洞
作者: Polymorphours, 出处:IT专家网, 责任编辑: 张帅,
2007-10-26 00:00
Windows XP 核心驱动 secdrv.sys 本地权限提升漏洞,这个内核提权的0day发现有段日子了,笔者这里公布仅为大家共同探讨,一起学习提高……
特此声名
Windows XP 核心驱动 secdrv.sys 本地权限提升漏洞,这个内核提权的0day发现有段日子了,据说最近被Symantec 拣到并报给了MS,经内部讨论后决定把细节公布出来,本意是和大家共同探讨,一起学习提高。此漏洞程序仅供学习使用,对滥用此漏洞所造成的危害,Whitecell 组织与本人概不负责。
在分析 Windows 各个驱动程序的时候,无意间发现了一个漏洞,该漏洞可以让任意用户提升到SYSTEM权限。该漏洞发生在驱动程序 secdrv.sys 的IRP_MJ_DEVICE_CONTROL中,因为缺少必要的对必要的参数进行检查,导致可以写任意字节到任意核心内存,导致D.o.S或者权限提升。
下面是出现漏洞的代码分析片断:
DISPATCH处理函数
| loc_11D60: ; DATA XREF: sub_11AA6+8Bo .text:00011D60 push esi .text:00011D61 mov esi, [esp+0Ch] .text:00011D65 push edi .text:00011D66 xor edi, edi .text:00011D68 mov eax, [esi+60h] .text:00011D6B and dword ptr [esi+18h], 0 .text:00011D6F and dword ptr [esi+1Ch], 0 .text:00011D73 mov al, [eax] .text:00011D75 test al, al .text:00011D77 jz short loc_11D85 .text:00011D77 .text:00011D79 cmp al, 0Eh .text:00011D7B jnz short loc_11D85 .text:00011D7B .text:00011D7D push esi .text:00011D7E call sub_11CD8 ;-> 处理 IRP_MJ_DEVICE_CONTROL .text:00011D7E .text:00011D83 mov edi, eax .text:00011D83 .text:00011D85 .text:00011D85 loc_11D85: ; CODE XREF: .text:00011D77j .text:00011D85 ; .text:00011D7Bj .text:00011D85 xor dl, dl .text:00011D87 mov ecx, esi .text:00011D89 call ds:IofCompleteRequest .text:00011D8F mov eax, edi .text:00011D91 pop edi .text:00011D92 pop esi .text:00011D93 retn 8 |
有问题的函数:
| .text:00011CD8 sub_11CD8 proc near ; CODE XREF: .text:00011D7Ep .text:00011CD8 .text:00011CD8 arg_0 = dword ptr 8 .text:00011CD8 .text:00011CD8 push ebx .text:00011CD9 mov ebx, [esp+arg_0] .text:00011CDD push ebp .text:00011CDE push esi .text:00011CDF mov eax, [ebx+60h] .text:00011CE2 push edi .text:00011CE3 cmp dword ptr [eax+0Ch], 0CA002813h .text:00011CEA jz short loc_11D07 ; -> 处理 0CA002813H |
控制字
| .text:00011CEA .text:00011CEC mov eax, dword_12364 .text:00011CF1 xor edi, edi .text:00011CF3 cmp eax, edi .text:00011CF5 jnz short loc_11CFE .text:00011CF5 .text:00011CF7 mov eax, 0C0000010h .text:00011CFC jmp short loc_11D39 .text:00011CFC .text:00011CFE ; --------------------------------------------------------------------------- .text:00011CFE .text:00011CFE loc_11CFE: ; CODE XREF: sub_11CD8+1Dj .text:00011CFE lea ecx, [ebx+18h] .text:00011D01 push ecx .text:00011D02 push ebx .text:00011D03 call eax .text:00011D05 jmp short loc_11D59 .text:00011D05 .text:00011D07 ; --------------------------------------------------------------------------- .text:00011D07 .text:00011D07 loc_11D07: ; CODE XREF: sub_11CD8+12j .text:00011D07 xor edi, edi .text:00011D09 mov [ebx+18h], edi .text:00011D0C mov [ebx+1Ch], edi .text:00011D0F mov ebp, [eax+4] .text:00011D12 mov esi, [eax+10h] .text:00011D15 cmp [eax+8], ebp .text:00011D18 jnz short loc_11D34 .text:00011D18 .text:00011D1A push dword ptr [esi+0Ch] .text:00011D1D lea eax, [esi+10h] .text:00011D20 push eax .text:00011D21 mov eax, dword_12358 .text:00011D26 push eax .text:00011D27 push dword ptr [esi+4] .text:00011D2A push dword ptr [esi] .text:00011D2C call dword ptr [eax+10h] ; -> 该函数中没有 |
- 本文关键词:

