Dom Clobbering Reacked

Dom Clobbering

作为XSS等经典客户端漏洞CSRF修补,CSPd和samesite被遗忘了,诸如dom clobbering之类的利基攻击技术变得越来越重要。MichałBentkowski最近使用了Dom Clobbering剥削Gmail,我第一次六年在2013年介绍了该技术。在这篇文章中,我将快速介绍Dom Clobbering,通过一些新技术扩展我的原始研究,并分享两个交互式实验室,以便您可以自己尝试这些技术。如果您还不熟悉Dom Clobbering,则可能需要查看我们的Dom Clobbering简介首先在网络安全beplay体育能用吗学院。

确定DOM元素关系

首先,要获取可以一起使用的HTML元素列表非常简单。您只需要将两个HTML元素彼此隔开,每个元素分配一个ID,然后检查第一个元素是否具有第二个元素的属性。

这是生成HTML关系的代码:

var log = [];
var html = [“ a”,“ abbr”,“首字母缩写”,“地址”,“ applet”,“区域”,“”,“文章”,“旁边”,“音频”,“ b”,“ base”,“ basefont”“,“ bdi”,“ bdo”,“ bgsound”,“ big”,“ blink”,“ blockquote”,“ body”,“ br”,“ butt”,“ canvas”,“ canvas”,“ catchas”,“标题”,“中心”,“中心”,““ CITE”,“ CODE”,“ COL”,“ COLGROUP”,“命令”,“ content”,“ data”,“ datalist”,“ dd”,“ del”,“ del”,“ delice”,“ ddfn”,“对话框”“,“ dir”,“ div”,“ dl”,“ dt”,“ element”,“ em”,“ em”,“ emped”,“ fieldset”,“ figcaption”,“ fig”,“ fig”,“ fint”,“ font”,“ footer”,“ footer”,“形式”,“帧”,“框架”,“ h1”,“ head”,“ header”,“ hgroup”,“ hr”,“ html”,“ i”,“ i”,“ iframe”,“ image”,“ img”“,“输入”,“ ins”,“ isIndex”,“ kbd”,“ keygen”,“标签”,“传奇”,“ li”,“ lin”,“ link”,“ listing”,“ listing”,“ main”,“ map”,“ map”,“ mark”,“ marquee”,“菜单”,“ menuitem”,“ meta”,“ meter”,“ multicol”,“ nav”,“ nextId”,“ nobr”,“ noembed”,“ noframes”,“ noscript”,“ noscript”“,“对象”,“ ol”,“ OptGroup”,“选项”,“输出”,“ P”,“ PARMAR”,“图片”,“ PLAINTEXT”,“ PREATHEXT”,“ PREART”,“ PROGRE”,“ PROCGEM”,“ Q”,“ Q”,“ Q”,“ q”,“ q”“ rb”,“ rp”,“ rt”,“ rtc”,“ ruby​​”,“ s”,“ samp”,“ script”,“ script”,“ select”,“ select”,“ shadow”,“ slot”,“ slot”,““,“ source”,“ spacer”,“ span”,“ strike”,“ strong”,“ style”,“ sub”,“ sumary”,“ sup”,“ svg”,“ svg”,“ table”,“ table”,“ tbody”,““ TD”,” Template“ ate”,“ textarea”,“ tfoot”,“ th”,“ thead”,“ time”,“ title”,“ tr”,“ track”,“ tt”,“ u”,“ u”,“ ul”,“ var”,“ var”,“视频”,“ wbr”,“ xmp”],logs = [];
div = document.createelement('div');
for(var i = 0; i for(var j = 0; j div.innerhtml ='<'+html [i]+'id = element1>'+'<'+html [j]+'id = element2>';
document.body.body.appendchild(div);
if(window.element1 && element1.element2){
log.push(html [i]+',','+html [j]);
}
document.body.removechild(div);
}
}
console.log(log.join('\ n'));

这导致相关元素和图像元素的预期列表有些预期:

表单 - >按钮
form-> fieldset
形式 - >图像
形式 - > img
表单 - >输入
形式 - >对象
表单 - >输出
form->选择
形式 - > textarea

因此,例如,如果您想在对象上敲击X.Y.Value,那么您将执行以下操作:

<形式id = x> <输出id = y>我被凝结了
>

但是您可能已经注意到,这需要一个settimeout造成延迟,以使其呈现。但是,我找到了一种使用iframe而无需超时的方法!如果您具有导入样式表的样式/链接元素,则会产生一个较小的延迟,从而使iFrame能够立即加载和clobber。以下是它的工作方式: