纯干货:微软漏洞中国第一人黄正——如何用正确姿势挖掘浏览器漏洞(附完整 PPT)|硬创公开课
应用到fuzz这块,有两个策略,去做相反的事情,去改变初始的状态。比如: 我们应用这种想法也找到了一些漏洞: 其中在document.execCommand("undo");这块我们至少收获了5枚漏洞。但是也有不少撞洞的情况。 所以我们需要样本生成策略,去发现别人发现不了的漏洞。 我们首先想的是把调用关系做得非常深,制造非常复杂的回调场景。比如以下这个POC,我们多次在事件响应函数中去触发另一个事件响应函数,最终导致解析出错: 看下这个崩溃的调用栈: 我们还可以去fuzz别人搞得少的方向。 Fuzz 别人搞得少的方向,第一个是OBJECT。CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 应该是一个浏览器控件,浏览器控件是有自己独立的前进、后退功能的,如果与父页面的前进后退功能混用,会导致问题。 我们整理了系统中所有clsid: 在OBJECT这块我们至少也收获了5个漏洞。 Fuzz 别人搞得少的方向,第二个是unicode。很少看见有人做fuzz的时候会随机的用一些unicode字符串来测试,我们在这块收获了EDGE一个越界读漏洞。 Fuzz 别人搞得少的方向,第三种是正则表达式。现在JS引擎的内存破坏漏洞越来越多了。我们在这块也挖到不少漏洞,由于目前还都是 0day 的状态,所以不拿我们自己发现的 POC 举例,拿一个 Google Project Zero 分开的 POC 给大家看看长什么样: 现在很多人生成的fuzz样本都是用JS生成的,但是对HTML的初始状态关注并不多,比如我们在初始状态时加了N个复杂的表格嵌套,也发现了不少的问题。 表格相关的各种元素都有特有方法,比如insertRow、moveRow、deleteRow,还有表单的特有的属性和方法,如果跟CSS结合,那么渲染起来就更加复杂了,比如下面这个POC: 通过fuzz非常复杂的元素,我们至少收获了10个漏洞。 去fuzz非常复杂的元素,还有CSS。CSS也有很多种操作方法,比如: style,obj.style.backgroundColor= "black"; .style1:hover{ background-color:#66B3FF; cursor:pointer;} obj.style.cssText = "background-color:black; display:block;color:White; (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |