Oracle JRE java.awt.Menu Use-After-Free 远程代码执行漏洞分析与利用
1. 漏洞描述
漏洞编号:CVE-2016-5568
影响版本:Java SE <= 6u121, 7u111, 8u102
此漏洞由西安四叶草安全旗下的安全实验室(CloverSec Labs)的bo13oy于今年4月份发现并提交给Oracle,在10月份的补丁中修复。
2. 测试环境
2)用!heap -p -a edi 命令查看edi指向的内存信息如下:
从上面信息可以看到此块内存已被释放,表明这是一个UAF漏洞。
2)漏洞成因
1)崩溃PC对应的代码如下:
从上面部分的代码可以看出,在调用v3对象的虚函数时,由于v3已被释放,此时再去获取v3的虚表信息就导致崩溃。
2)根据上面的!heap -p -a edi 命令获取的信息,可得释放部分的代码如下
3)在释放函数sub6D0968A2下断点,可得对象创建时的内存信息,如下所示:
创建对象时的代码如下:
由此可知,对象被释放时,未将其引用自身的悬空指针置空,导致了此UAF漏洞。
4. 漏洞利用
根据崩溃点代码逻辑可知,崩溃时程序尝试去调用被释放对象的虚函数,在该对象释放后,可以使用精确堆喷,用可控数据去占用这块已被释放的内存,当虚函数被调用时,控制 EIP 并执行 shellcode。
运行Poc,eax已被控制为0x42424242,如下所示:
最后,通过JIT堆喷,寻找一个可靠地址,修正EIP,执行shellcode。
5. 漏洞演示
利用该漏洞绕过了安全沙箱的限制,并成功弹出计算器:
Windows 7 x86 + jdk_1.8.0_102
3. 漏洞分析
1)漏洞类型
1)开启页堆和堆栈跟踪数据库(gflags.exe -I java.exe +hpa +ust),运行Poc时的崩溃信息如下:
2)用!heap -p -a edi 命令查看edi指向的内存信息如下:
从上面信息可以看到此块内存已被释放,表明这是一个UAF漏洞。
2)漏洞成因
1)崩溃PC对应的代码如下:
从上面部分的代码可以看出,在调用v3对象的虚函数时,由于v3已被释放,此时再去获取v3的虚表信息就导致崩溃。
2)根据上面的!heap -p -a edi 命令获取的信息,可得释放部分的代码如下
3)在释放函数sub6D0968A2下断点,可得对象创建时的内存信息,如下所示:
创建对象时的代码如下:
由此可知,对象被释放时,未将其引用自身的悬空指针置空,导致了此UAF漏洞。
4. 漏洞利用
根据崩溃点代码逻辑可知,崩溃时程序尝试去调用被释放对象的虚函数,在该对象释放后,可以使用精确堆喷,用可控数据去占用这块已被释放的内存,当虚函数被调用时,控制 EIP 并执行 shellcode。
运行Poc,eax已被控制为0x42424242,如下所示:
最后,通过JIT堆喷,寻找一个可靠地址,修正EIP,执行shellcode。
5. 漏洞演示
利用该漏洞绕过了安全沙箱的限制,并成功弹出计算器:关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 习近平将发表二〇二六年新年贺词 7904141
- 2 2026年国补政策来了 7808738
- 3 东部战区:开火!开火!全部命中! 7712893
- 4 2026年这些民生政策将惠及百姓 7616985
- 5 小学食堂米线过期2.5小时被罚5万 7519709
- 6 解放军喊话驱离台军 原声曝光 7428214
- 7 为博流量直播踩烈士陵墓?绝不姑息 7327605
- 8 每月最高800元!多地发放养老消费券 7238391
- 9 数字人民币升级 1月1日起将计付利息 7141831
- 10 2026年1月1日起 一批新规将施行 7040675



![方楚彤 生活不可能像你想象的那么好 也不会像你想象的那么糟糕[2022]](https://imgs.knowsafe.com:8087/img/aideep/2022/5/3/c5a6535cb1d59ce3038420fdd18420de.jpg?w=250)




邮箱投递
