返回顶部
首页 > 资讯 > 精选 >如何进行CVE-2019-5786漏洞原理分析及利用
  • 700
分享到

如何进行CVE-2019-5786漏洞原理分析及利用

2023-06-04 17:06:00 700人浏览 泡泡鱼
摘要

如何进行CVE-2019-5786漏洞原理分析及利用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从补丁发现漏洞本质首先根据谷歌博客收集相关CVE-2019-5786漏洞的资料

如何进行CVE-2019-5786漏洞原理分析及利用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

从补丁发现漏洞本质

首先根据谷歌博客收集相关CVE-2019-5786漏洞的资料:High CVE-2019-5786: Use-after-free in FileReader,得知是FileReader上的UAF漏洞。

然后查看https://GitHub.com/chromium/chromium/commit/ba9748e78ec7e9c0d594e7edf7b2c07ea2a90449?diff=split上的补丁

如何进行CVE-2019-5786漏洞原理分析及利用

对比补丁可以看到DOMArrayBuffer* result = DOMArrayBuffer::Create(raw_data_->ToArrayBuffer()),操作放到了判断finished_loading后面,返回值也从result变成了array_buffer_result_(result的拷贝)。猜测可能是这个返回值导致的问题。

分析代码

如何进行CVE-2019-5786漏洞原理分析及利用

如何进行CVE-2019-5786漏洞原理分析及利用

如何进行CVE-2019-5786漏洞原理分析及利用

raw_data_->ToArrayBuffer()可能会返回内部buffer的拷贝,或者是返回一个指向其偏移buffer的指针。

根据MDN中FileReader.readAsArrayBuffer()的描述:

FileReader 接口提供的 readAsArrayBuffer() 方法用于启动读取指定的 Blob 或 File 内容。当读取操作完成时,readyState 变成 DONE(已完成),并触发 loadend 事件,同时 result 属性中将包含一个 ArrayBuffer 对象以表示所读取文件的数据。

FileReader.onprogress事件在处理progress时被触发,当数据过大的时候,onprogress事件会被多次触发。

所以在调用FileReader.result属性的时候,返回的是WTF::ArrayBufferBuilder创建的WTF::ArrayBuffer对象的指针,Blob未被读取完时,指向一个WTF::ArrayBuffer副本,在已经读取完的时候返回WTF::ArrayBufferBuilder创建的WTF::ArrayBuffer自身。

如何进行CVE-2019-5786漏洞原理分析及利用

那么在标志finished_loading被置为ture的时候可能已经加载完毕,所以onprogress和onloaded事件中返回的result就可能是同一个result。通过分配给一个worker来释放其中一个result指针就可以使另一个为悬挂指针,从而导致UAF漏洞。

漏洞利用思路

我选择的32位win7环境的Chrome72.0.3626.81版本,可以通过申请1GB的ArrayBuffer,使Chrome释放512MB保留内存,通过异常处理使OOM不会导致crash,然后在这512MB的内存上分配空间。

如何进行CVE-2019-5786漏洞原理分析及利用

如何进行CVE-2019-5786漏洞原理分析及利用

调用FileReader.readAsArrayBuffer,将触发多个onprogress事件,如果事件的时间安排正确,则最后两个事件可以返回同一个ArrayBuffer。通过释放其中一个指针来释放ArrayBuffer那块内存,后面可以使用另一个悬挂指针来引用这块内存。然后通过将做好标记的javascript对象(散布在TypedArrays中)喷洒到堆中来填充释放的区域。

如何进行CVE-2019-5786漏洞原理分析及利用

通过悬挂的指针查找做好的标记。通过将任意对象的地址设置为找到的对象的属性,然后通过悬挂指针读取属性值,可以泄漏任意对象的地址。破坏喷涂的TypedArray的后备存储,并使用它来实现对地址空间的任意读写访问。

如何进行CVE-2019-5786漏洞原理分析及利用

如何进行CVE-2019-5786漏洞原理分析及利用

之后可以加载WEBAssembly模块会将64KiB的可读写执行存储区域映射到地址空间,这样的好处是可以免去绕过DEP或使用ROP链就可以执行shellcode。

如何进行CVE-2019-5786漏洞原理分析及利用

如何进行CVE-2019-5786漏洞原理分析及利用

使用任意读取/写入原语遍历WebAssembly模块中导出的函数的jsFunction对象层次结构,以找到可读写可执行区域的地址。将WebAssembly函数的代码替换为shellcode,然后通过调用该函数来执行它。

如何进行CVE-2019-5786漏洞原理分析及利用

通过浏览器访问网页,就会导致执行任意代码

如何进行CVE-2019-5786漏洞原理分析及利用

帮助

本人在初次调试浏览器的时候遇到了很多问题,在这里列举出一些问题来减少大家走的弯路。

因为chrome是多进程模式,所以在调试的时候会有多个chrome进程,对于刚开始做浏览器漏洞那话会很迷茫不知道该调试那个进程或者怎么调试,可以通过chrome自带的任务管理器来帮我们定要附加调试的那个进程ID。

如何进行CVE-2019-5786漏洞原理分析及利用

如何进行CVE-2019-5786漏洞原理分析及利用

这里新的标签页的进程ID就是我们在后面要附加的PID。

Chrome调试的时候需要符号,这是Google提供的符号服务器(加载符号的时候需要Over the wall)。在windbg中,您可以使用以下命令将其添加到符号服务器搜索路径,其中c:\Symbols是本地缓存目录:

.sympath + SRV * c:\ Symbols * Https://chromium-browser-symsrv.commondatastorage.googleapis.com

因为Chrome的沙箱机制,在调试的过程中需要关闭沙箱才可以执行任意代码。可以在快捷方式中添加no-sandbox来关闭沙箱。

如何进行CVE-2019-5786漏洞原理分析及利用

由于这个漏洞机制的原因,可能不是每次都能执行成功,但是我们可以通过多次加载脚本的方式来达到稳定利用的目的。

如何进行CVE-2019-5786漏洞原理分析及利用

如何进行CVE-2019-5786漏洞原理分析及利用

github上有chromuim的源码,在分析源码的时候推荐使用sourcegraph这个插件,能够查看变量的定义和引用等。

如何进行CVE-2019-5786漏洞原理分析及利用

在需要特定版本Chrome的时候可以自己去build源码或者去网络上寻找chrome历代发行版收集的网站。

在看exp和自己编写的时候需要注意v8引擎的指针问题,v8做了指针压缩,所以在内存中存访的指针可能和实际数据位置地址有出入。

看完上述内容,你们掌握如何进行CVE-2019-5786漏洞原理分析及利用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 如何进行CVE-2019-5786漏洞原理分析及利用

本文链接: https://lsjlt.com/news/238851.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何进行CVE-2019-5786漏洞原理分析及利用
    如何进行CVE-2019-5786漏洞原理分析及利用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从补丁发现漏洞本质首先根据谷歌博客收集相关CVE-2019-5786漏洞的资料...
    99+
    2023-06-04
  • 如何进行K8S漏洞CVE-2019-1002101解读
    如何进行K8S漏洞CVE-2019-1002101解读,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。kubectl cp漏洞近期kubernetes的kubectl cp命令发...
    99+
    2023-06-03
  • 如何进行CVE-2018-4990 漏洞分析
    这篇文章给大家介绍如何进行CVE-2018-4990 漏洞分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。测试版本:AcroRdrDC1700920044_en_US 漏洞模块: Escript.api 漏洞函数 修...
    99+
    2023-06-04
  • 如何进行Apache Solr DataImportHandler远程代码执行漏洞CVE-2019-0193分析
    如何进行Apache Solr DataImportHandler远程代码执行漏洞CVE-2019-0193分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。漏洞概述2019年...
    99+
    2023-06-04
  • 如何进行Spring CVE-2018-1273,CVE-2018-1274和CVE-2018-1275漏洞分析
    这篇文章给大家介绍如何进行Spring CVE-2018-1273,CVE-2018-1274和CVE-2018-1275漏洞分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。0x00 漏洞概述2018年4月...
    99+
    2023-06-19
  • 如何进行CVE-2018-6789Exim缓冲区溢出漏洞分析
    本篇文章为大家展示了如何进行CVE-2018-6789Exim缓冲区溢出漏洞分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。0x00 漏洞背景2018年2月5日,DEVCORE团队的安全...
    99+
    2023-06-19
  • 如何进行Linux PIE/stack 内存破坏漏洞CVE-2017-1000253分析
    本篇文章为大家展示了如何进行Linux PIE/stack 内存破坏漏洞CVE-2017-1000253分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。0x00 事件描述2015年4月1...
    99+
    2023-06-19
  • 如何进行Microsoft Office内存损坏漏洞CVE–2017–11882的分析
    如何进行Microsoft Office内存损坏漏洞CVE–2017–11882的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。   &n...
    99+
    2023-06-19
  • 如何进行CouchDB漏洞的分析
    今天就跟大家聊聊有关如何进行CouchDB漏洞的分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。0x00 文档信息    ...
    99+
    2023-06-19
  • 如何进行Liferay Portal Json Web Service 反序列化漏洞(CVE-2020-7961)的分析
    如何进行Liferay Portal Json Web Service 反序列化漏洞(CVE-2020-7961)的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Lif...
    99+
    2023-06-04
  • 如何进行Apache Struts2 S2-057漏洞分析
    今天就跟大家聊聊有关如何进行Apache Struts2 S2-057漏洞分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。如果未为基础xml配置中定义的结果设置命名空间值,同时其上...
    99+
    2023-06-19
  • 如何进行Intel CSME 漏洞预警的分析
    本篇文章为大家展示了如何进行Intel CSME 漏洞预警的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。0x00 漏洞背景英特尔公布:在英特尔 CSME,英特尔服务器平台服务和英特尔...
    99+
    2023-06-19
  • 如何进行GPON光纤路由器漏洞分析
    如何进行GPON光纤路由器漏洞分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。0x00 漏洞概述日前,360-CERT监测到两个由VPNMentor...
    99+
    2023-06-19
  • 如何进行spring-messaging远程代码执行漏洞分析
    这篇文章给大家介绍如何进行spring-messaging远程代码执行漏洞分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。0x00 漏洞概述2018年4月5日,Pivotal Spring官方发布安全公告,...
    99+
    2023-06-19
  • 如何进行Adobe Flash任意命令执行漏洞分析
    如何进行Adobe Flash任意命令执行漏洞分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。0x00 事件描述2017年10月16日,Adobe发...
    99+
    2023-06-19
  • 利用lynis如何进行linux漏洞扫描详解
    前言 lynis 是一款运行在 Unix/linux 平台上的基于主机的、开源的安全审计软件。Lynis是针对Unix/Linux的安全检查工具,可以发现潜在的安全威胁。这个工具覆盖可疑文件监测、漏洞、恶意程序扫描、配置...
    99+
    2022-06-04
    linux lynis linux漏洞扫描 linux 漏洞扫描工具
  • 如何进行Janus安卓签名漏洞预警分析
    这期内容当中小编将会给大家带来有关如何进行Janus安卓签名漏洞预警分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。0x00背景介绍2017年7月31日 GuardSquare向Google报...
    99+
    2023-06-19
  • 如何进行Ghostscript SAFER沙箱绕过漏洞的分析
    这篇文章跟大家分析一下“如何进行Ghostscript SAFER沙箱绕过漏洞的分析”。内容详细易懂,对“如何进行Ghostscript SAFER沙箱绕过漏洞的分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有...
    99+
    2023-06-04
  • 如何进行spark原理及生态圈分析
    今天就跟大家聊聊有关如何进行spark原理及生态圈分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。简介1 Spark简介Spark是加州大学伯克利分校AMP实验室(Algorith...
    99+
    2023-06-03
  • 如何进行EFAIL中的PGP/GPG和S/MIME漏洞分析
    如何进行EFAIL中的PGP/GPG和S/MIME漏洞分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。0x00 漏洞背景PGP/GPG 和 S/MIME是为电子...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作