-
-
[翻译]对漏洞С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个字节。
如果所有这些条件都满足了,这个指针将被解除引用,控制权将被转移到偏移量为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直播授课