| 网站首页 | 资讯 | Hack | 漏洞 | 网管 | 编程 | 培训 | 品黑页 | 软件 | 论坛 | 动画 | 视频 | 经典 | 教学站 | 黑客点睛 | 
服务导航 我要发布 主力频道 空间域名 精华收集 服务器出租 黑客培训 光盘刻录 特色服务 解决方案 我要投诉
您现在的位置: 华夏黑客同盟 >> Hack >> 脚本漏洞攻击 >> 正文 用户登录 新用户注册
[图文]XP核心本地提权漏洞       ★★★ 【字体:
Windows XP 核心驱动 secdrv.sys 本地权限提升漏洞
作者:冷漠 文章来源:冷漠的博客 点击数: 更新时间:2007-11-17




    这个内核提权的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] ; -> 该函数中没有检查输入输出
.text:00011D2F                 cmp     eax, 0Ah
.text:00011D32                 jz      short loc_11D41     ; -> 如果函数返回 0Ah 那么进行拷贝
.text:00011D32
.text:00011D34
.text:00011D34 loc_11D34:                              ; CODE XREF: sub_11CD8+40j
.text:00011D34                 mov     eax, 0C0000001h
.text:00011D34
.text:00011D39
.text:00011D39 loc_11D39:                              ; CODE XREF: sub_11CD8+24j
.text:00011D39                 mov     [ebx+18h], eax
.text:00011D3C                 mov     [ebx+1Ch], edi
.text:00011D3F                 jmp     short loc_11D59
.text:00011D3F
.text:00011D41 ; ---------------------------------------------------------------------------
.text:00011D41
.text:00011D41 loc_11D41:                              ; CODE XREF: sub_11CD8+5Aj
.text:00011D41                 mov     edi, [ebx+3Ch]  ; -> 在此之前没有对UserBuffer进行检查,直接复制数据到UserBuffer
.text:00011D44                 mov     ecx, ebp
.text:00011D46                 mov     eax, ecx
.text:00011D48                 shr     ecx, 2
.text:00011D4B                 rep movsd
.text:00011D4D                 mov     ecx, eax
.text:00011D4F                 and     ecx, 3
.text:00011D52                 xor     eax, eax
.text:00011D54                 rep movsb
.text:00011D56                 mov     [ebx+1Ch], ebp
.text:00011D56
.text:00011D59
.text:00011D59 loc_11D59:                              ; CODE XREF: sub_11CD8+2Dj
.text:00011D59                                         ; sub_11CD8+67j
.text:00011D59                 pop     edi
.text:00011D5A                 pop     esi
.text:00011D5B                 pop     ebp
.text:00011D5C                 pop     ebx
.text:00011D5D                 retn    4
.text:00011D5D
.text:00011D5D sub_11CD8       endp

    看完漏洞代码的片断后,我们知道这个漏洞其实非常好利用

    利用方法1:

    和之前的Symtdi.sys的提权漏洞一样,去 HOOK 一个不常用的系统调用,然后我们自己出发系统调用,来使系统运行我们的特权代码

    利用方法2:

    由于没有写入的数据限制,我们可以直接在GDT中添加调用门,或者在 HOOK IDT中的中断处理例程 (要注意多CPU的情况)。

责任编辑:朱倩  联系方式  Email:朱倩
电话:51228163
  • 上一篇黑客:

  • 下一篇黑客:
  • (只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    姓 名:
    * 游客填写  ·注册用户
    主 页:
    评 分:
    1分 2分 3分 4分 5分
    评论内容:
    验证码: *
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 最新hack更新
    最新推荐资讯
    相关黑客
    提权用的一个技巧
    暴库漏洞原理及规律
    百分之九十的IE漏洞
    支付宝控件漏洞利用
    MS08-034服务存在权限提升漏洞
    一路漏洞到webshell
    URL跳转漏洞欺骗邮箱密码
    Windows XP系统漏洞提权
    Dedecms getip()漏洞利用
    交换机漏洞的攻击手段
    最新会员软件
    最新推荐视频
    最新推荐动画

    Copyright @ 2005 77169.Net Inc. All rights reserved. 华夏黑客同盟 版权所有
    北京市电信通提供网络带宽

    mailto:webmaster@77169.net
    咨询QQ号:836982 / 59280880
    联系站长 QQ38588913
    热线电话: 86-10-67634029/676229433
    京ICP证041431号