第9章 内核漏洞分析 9.5 CVE-2011-2005 Winodws Afd.sys本地提权漏洞
漏洞描述
2011年10月微软补丁公告,Windows系统中辅助功能驱动程序Afd.sys存在本地提权漏洞,影响Windows XP与Server 2003系统。Microsoft Windows Ancillary Function Driver(afd.sys)驱动程序未对用户提交的数据进行完善的检测,导致存在本地提权漏洞。
从利用代码到漏洞函数的定位分析
测试环境
操作系统:Windows 7
反汇编器:IDA Pro 6.5
在exploit-db网站上公布了Python版本的利用代码,构造特定的输入数据,向IOCTL为0x000120bb发送IO请求触发漏洞,它正是Afd.sys中的AFDJoinLeaf函数处理的。
用IDA加载Afd.sys驱动,在“Function window”窗口找到AFDJoinLeaf函数,双击打开对应的反汇编代码,在函数中找到它对用户输入数据的处理情况。程序只在当OutBufferLength不为0的情况下才检测UserBuffer地址的有效性,因此攻击者只需令OutBufferLength=0即可绕过检测。第217行代码将outputbuffer_size设置为0。
要利用该漏洞,在Afd.sys中有几处关键点要绕过。
1,输入缓冲区的长度必须大于0x18。否则跳走。
2,*(InputBuffer+8)必须不为0。
3,*(InputBuffer+0xC)必须为1,同时InputBufferLength-0xC必须大于 *(InputBuffer+0x10)+8。
4,连接到本地未开放的端口,该代码是将其连接到4455未开放端口,使其连接状态保持为CONNECTING。
满足以上关键点构造代码,不难。
补丁比较
通过补丁比较分析AFDJoinLeaf函数,发现补丁后的afs.sys不再检测OutBufferLength是否为0,而是检测UserBuffer所指向地址的有效性。
豆读电音同小阅对本书的所有笔记 · · · · · ·
-
第9章 内核漏洞分析 9.1 Windows内核漏洞漫谈 9.2 Windows内核调试环境搭建 9.3 原理及利用
没提到虚拟机,就跑起来了~ 漫谈 Windows平台环境下的内核漏洞,最早可能是2003年4月的MS03-0...
-
第9章 内核漏洞分析 9.4 360安全卫士bregdrv.sys本地提起漏洞
大小写不统一 漏洞描述 2010年2月1日波兰安全组织NTIntetnals网站曝光该漏洞。随后,瑞星在官...
-
第9章 内核漏洞分析 9.5 CVE-2011-2005 Winodws Afd.sys本地提权漏洞
-
第9章 内核漏洞分析 9.6 CVE-2013-3660 Winodws win32k.sys EPATHOB指针未初始化漏洞
漏洞描述 2013年3月Google安全团队的研究人员Tavis Ormandy在对win32k.sys进行内存压力测试时...
-
第9章 内核漏洞分析 9.7 CVE-2014-1767 Winodws AFD.sys双重释放漏洞(Pwn2Own 2014) 9.8 总结
Pwnie Awards 2014 "最佳提权漏洞奖" 黑客大赛Pwn2Own 2014,Siberas安全团队利用该漏洞进行...
说明 · · · · · ·
表示其中内容是对原文的摘抄