首页
社区
课程
招聘
[翻译]对漏洞СVE-2017-11826利用的分析
2017-11-29 11:12 3369

[翻译]对漏洞СVE-2017-11826利用的分析

2017-11-29 11:12
3369

最近的补丁包周二(10月17日)发布了62个漏洞的补丁,其中包含了一个专门修复СVE-2017-11826漏洞(一款可针对所有版本的微软OFFICE软件发起攻击的严重的0day漏洞)的补丁。

此漏洞的攻击是一个包含DOCX文档的RTF文档,该文档在Office Open XML分析器中利用了CVE-2017-11826。


该漏洞本身存在于word / document.xml中,如下所示



在Office Open XML文件格式的ECMA-376标准下,描述文档中使用的字体的有效“font”元素必须如下所示:



在漏洞利用中,结束标记</ w:font>缺失。 开始标签<w:font>之后是对象元素<o:idmap />,这会导致OOXML解析器中的“类型混乱”。使用任何一个对象元素都可以成功利用这个漏洞。 要绕过攻击前的一个检查,在<w:font>标记之前必须有一个OLE Object元素,并且在从UTF-8转换为Unicode格式之后,属性名称的内容长度不得少于32个字节。



经过UTF-8到Unicode的格式转换之后,E8 A3 AC E0 A2 80变成了EC 88 88 08。



如果所有这些条件都满足了,这个指针将被解除引用,控制权将被转移到偏移量为4的这个地址的内容中。



为了控制地址0x088888EC处的内存内容,攻击者通过使用ActiveX组件来应用流行的堆喷技术:



漏洞利用msvbvm60.dll中的ROP和小工具绕过ASLR和DEP。msvbvm60.dll模块在与此DLL关联的CLSID的帮助下从RTF文档被加载:



ROP的第一部分设置ESP寄存器的值:



ROP的第二部分被忽略了:这部分被用于设置位于0x088883EC位置的EIP寄存器的值。 最后弹出eax的值; 子程序返回把堆栈的N个字节弹出来后将地址0x729410D0的值移动到eax寄存器中。 这是来自Kernel32.dll的msvbvm60.dll的入口区域中VirtualProtect函数指针的地址:



VirtualProtect函数指针在下一个ROP小工具中被用于用于调用函数VirtualProtect(0x8888C90,0x201,0x40,0x72A4C045)。 在此之后,控制权被转移到地址为0x8888F70的shellcode中,此段shellcode对嵌入的DLL进行解码和执行:



[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回