首页
社区
课程
招聘
[原创] CVE-2014-0322 IE与Flash结合利用 绕过ASLR+DEP
发表于: 2018-11-30 05:20 7883

[原创] CVE-2014-0322 IE与Flash结合利用 绕过ASLR+DEP

2018-11-30 05:20
7883

Flash与html结合利用在前几年的攻防对抗中非常火爆,Flash使用的脚本语言是ActionScript,Html使用的是JavaScript,两种脚本语言各有其特性,ActionScript通过Vector<uint>对内存读写数据来定位模块基址以及堆喷射,JavaScript通过字符串占位来覆盖释放后的对象, 最后调用shellcode的任务是ActionScript完成的 ,其实一开始我也比较困惑,既然漏洞是JavaScript代码造成的,那Shellcode怎么会是ActionScript执行的?这也是这个漏洞利用有趣的地方!


漏洞详情:

Use-after-free vulnerability in Microsoft Internet Explorer 9 and 10 allows remote attackers to execute arbitrary code via vectors involving crafted JavaScript code, CMarkup, and the onpropertychange attribute of a script element, as exploited in the wild in January and February 2014.

攻击机操作系统:Windows 10

目标机操作系统:Windows 7 sp1 32位

浏览器:IE10.0.9200.16438

FLASH版本: Flashplayer12

调试器: IDA、x64dbg

其他工具:Metasploit


Metasploit开启HTTP服务器:

攻击机cmd中输入ipconfig查询本机ip为192.168.1.101


攻击机cmd打开metasploit控制台启动攻击所需的HTTP服务器

使用的命令如下:

1. msfconsole
2. use exploit/windows/browser/ms14_012_cmarkup_uaf
3. set SRVHOST 192.168.1.101
4. set payload windows/exec
5. set CMD calc.exe
6. exploit


目标机进入指定的URL链接



异常poc:

浏览器载入poc代码,x64dbg附加进程,运行后断到0x649F1B97, 看下EDX处内存,发现已经被覆盖成0x19FFFFF3了,如果异常时EDX指向的堆中的数值没有出现被覆盖的情况,那也是正常的,多加载几次poc总能撞出一次的,这是因为title属性占位成功几率有点感人,大家凑合着用吧,EAX指向0x19FFFFF3这个地址,这个地址现在是不可访问的,因为现在还没有结合FLASH脚本利用,在后面的ActionScript中会进行堆喷射,在堆喷射后 0x19FFFFF3  这个地址才会有效;


IDA看下这个异常函数, 函数名为CMarkup::UpdateMarkupContentsVersion,EDX很明显是对象指针,从这个情况分析是CMarkup对象释放后被占位了


创建CMarkup对象代码在CDoc::CreateMarkupFromInfo函数中的234行





对CDoc::CreateMarkupFromInfo下断,根据栈回溯信息来看,创建这个CMarkup对象的JavaScript代码为 c = b.appendChild(c);


CMarkup的释放由CMarkup::`scalar deleting destructor函数完成

对CMarkup释放函数下断,断下来后发现是设置 outerHTML属性导致的释放的


异常分析总结:

根据之前异常和调试收集来的信息,在JavaScript中 c = b.appendChild(c) 执行时创建CMarkup,this.outerHTML=this.outerHTML导致释放CMarkup,而释放后的占位是g_arr[a].title = d.substring(0, d.length) 完成的,d这个字符串偏移0x94、0x98、0x15c处写入的固定数值是为了结合Flash利用和防止程序崩溃,具体的作用还得自己动手调试才能完全理解;

由于Metasploit中已经有很好的利用代码了,所以也就懒得自己写了,下面主要对ruby模块代码和Flash的ActionScript脚本代码进行分析;

Exploit代码:

代码位置在Metasploit-framework\embedded\framework\modules\exploits\windows\browser\ms14_012_cmarkup_uaf.rb

MetasploitModule是类名,继承自Msf::Exploit::Remote,包含BrowserExploitServer模块,BrowserExploitServer是一个浏览器专用的模块,包含了 HttpServer 、 HttpServer :: HTML 功能,在initialize函数中则定义了模块的基本信息,利用要求在BrowserRequirements元数据中定义;

create_swf函数负责读取盘中的AsXploit.swf到内存;

on_request_uri函数响应URI操作请求,加载swf文件时会发送此请求,这个函数返回swf脚本到目标机;

on_request_exploit函数响应exploit请求,当浏览器输入http服务器地址并进入时会发送此请求,这个函数返回HTML代码到目标机;

exploit_template函数获取HTML代码模板;



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

最后于 2018-12-1 17:58 被来杯柠檬红茶编辑 ,原因:
收藏
免费 6
支持
分享
最新回复 (1)
雪    币: 26588
活跃值: (63257)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2018-11-30 08:56
0
游客
登录 | 注册 方可回帖
返回
//