CVE-2013-3660-分析改进1

preview
需积分: 0 1 下载量 82 浏览量 更新于2022-08-03 收藏 1.18MB PDF 举报
【CVE-2013-3660 分析与 x64 平台 EXP 编写技巧】 本文主要探讨的是Microsoft Windows系统中一个名为CVE-2013-3660的安全漏洞,该漏洞源于win32k.sys模块,可能导致本地权限提升。这个漏洞是由Google安全团队的Tavis Ormandy在对win32.sys进行内存压力测试时发现的,他因此获得了Pwnie Awards 2013的提名。文章强调,虽然已经有许多关于x86架构的EXP利用代码,但针对x64平台的资源却相对较少。 **基础知识** 在深入分析之前,读者需要了解一些基础概念,如Windows内核编程、x86/x64汇编语言、内存管理和Windows API的使用。特别是对于x64系统,了解其内存布局、寄存器使用以及指针操作至关重要。推荐的参考资料包括安全网站和论坛的文章。 **漏洞原因** CVE-2013-3660的根本原因是win32k.sys在处理内存分配时的两个缺陷: 1. 当内存分配失败时,new_PathRecord的next指针没有被初始化,可能指向污染的数据。 2. freelist空闲链表中的内存节点没有被正确初始化,这允许攻击者注入恶意数据。 **EXP实现关键** 漏洞利用的关键步骤在于找到合适的触发点。在x64环境下,通过创建和填充PathRecord结构体,然后利用特定的API调用序列(如BeginPath, PolyDraw, EndPath, FlattenPath等)来触发漏洞。POC代码主要包含三个部分: 1. 消耗系统内存,使内存分配压力增大,增加触发条件的可能性。 2. 填充PathRecord结构体,设置next和prev指针,以及flags字段,同时用特定值填充Points数组。 3. 通过调用一系列API函数,使得填充的PathRecord结构体的next指针污染其他内存区域,最终导致权限提升。 **x64平台EXP编写** 在x64系统上编写EXP,需要注意以下几点: 1. x64架构下的内存管理和指针操作与x86不同,需要理解64位寻址和寄存器的使用。 2. 调试EXP时,通常使用WinDbg或类似的工具,了解如何跟踪内存分配、堆栈操作以及API调用。 3. 由于x64系统的地址空间更大,可能导致内存分配策略的改变,因此需要精心设计和测试EXP以确保100%的成功率。 **POC运行与结果验证** 在运行POC之前,先验证Points数组的x和y值是否正确读取。通过设置Points[PointNum].x和Points[PointNum].y为特定值,观察异常发生时的实际读取值,以确认漏洞触发机制。 CVE-2013-3660是一个严重的本地提权漏洞,尤其在x64平台上,编写有效的EXP需要深入理解Windows内核、内存管理以及x64架构。通过细致的分析和测试,可以编写出100%成功的EXP,这对于安全研究和防御措施的实施具有重要意义。