|
阅读:45415回复:101
应广大 Firefox 的 FANS 要求,写了一个恶意脚本的实例,大家看看
首先不要害怕,这个页面没有恶意,却展示了恶意页面的可行性。你要不放心,可以只阅读代码,而不要运行。
运行效果如下: 你只要一点击按钮,Firefox 就会提示你是否运行,如果你选择“是”,那么它将自动把你本地的 prefs.js 复制一份成为 new_prefs.js,如果你选择“否”,那么它会继续提示你 2 次。(整个过程 Firefox 都不会自动的把其中非安全的脚本抑制掉,而是让用户作出选择) 代码如下,附件是其 ZIP 版本。试试看吧 试想: 1. 如果我不是去创建一个 new_prefs.js,而是更改 hostperm.1 把恶意的网站加为 Firefox 信任的网站,那会怎么样? 2. 如果不是写 new_prefs.js,而是直接写你的 cmd.exe 会怎么样?或者在你的启动组里创建上 format c:/u/q 的快捷方式,那有会怎样? 3. 如果我不是 "onload=doBAD(3)" 而是 "onload=doBAD(10000)" 怎么办? 特别要说清楚:这个例子仅用于说明如果没有良好的安全意识,使用任何浏览器(包括 Firefox)都是不安全的。不是攻击 Firefox 的安全性。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<script type="text/javascript">
function doREAD(f) {
var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
is.init(f, 0x01, 00004, null);
var sis = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
sis.setInputStream(is);
var output = sis.readBytes(sis.available());
return output;
}
function doWRITE(f, data) {
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
// use 0x02 | 0x10 to open file for appending.
foStream.init(f, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
foStream.write(data, data.length);
foStream.close();
}
function doBAD(count) {
for (var i = 0; i < count; ++i) {
try {
var pm = netscape.security.PrivilegeManager;
pm.enablePrivilege('UniversalXPConnect');
var profs = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile);
var new_profs = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile);
profs.append('prefs.js');
new_profs.append('new_prefs.js');
data = doREAD(profs);
doWRITE(new_profs, data);
alert('File copied from [' + profs.path + '] to [' + new_profs.path + '] !');
break;
}
catch(ex) {
// alert(ex);
}
}
}
</script>
</head>
<body>
<button onclick="doBAD(3)">Copy prefs.js to new_prefs.js</button>
</body>
</html> |
|
|
|
1楼#
发布于:2005-06-07 18:41
搬个板凳坐到。
鸡蛋是不能全放在一个篮子里的。安全问题全在自己。怪只能怪那些3721之流缺德,想出这种阴谋,是要遭报应的。 不过,IE的加载项实在是要命…… |
|
|
2楼#
发布于:2005-06-07 18:41
我勾选了“以后不再提示我”
然后点否,就再也没有提示什么了 。 ff不是杀毒软件,如果遇到个对话框就点击“是”或者“确定”,那当然使用任何浏览器都不安全。 |
|
|
|
3楼#
发布于:2005-06-07 18:41
me too
需要用户下载一个网页然后运行,和需要用户下载一个EXE然后运行有什么区别呢? 在我的印象里3721不是通过要求用户下载一个文件然后运行,才安装的…… 不过还是要说可行性是有的。 |
|
|
|
4楼#
发布于:2005-06-07 18:41
onload=doBAD(10000) 在勾选了“以后不再提示我”
后,能否继续提示10000次? 能否实现打开这个网页,就像IE里面的3821那样弹出 个比小泉的野心还大,比水扁的脸皮还厚的窗口来问你 要不要安装?而不是还多一个按钮骗我点(虽然以后 3821”关心“Firefox了可能会在按钮上写上什么” 倭国人集体吃屎录像“之类的骗别人点)。 好像IE里面那个cab安装还有一个”总是信赖***的内容“, 唯独没有”总是不信赖“的选项。 |
|
|
|
5楼#
发布于:2005-06-07 18:41
|
|
|
6楼#
发布于:2005-06-07 18:41
或者firefox根本就不应该支持这种功能?
|
|
|
7楼#
发布于:2005-06-07 18:41
onload=doBAD(10000) 在勾选了“以后不再提示我”不会继续提示,就是CPU飙高马上就好 |
|
|
8楼#
发布于:2005-06-07 18:41
如果再加上一个"停止所有脚本"的选项呢,会不会好一点?
另外,有一个一直想问的问题,如果脚本里有死循环,firefox怎么处理? |
|
|
9楼#
发布于:2005-06-07 18:41
安全往往只有一次机会把我,如果你选择了“是”,那么获得授权的脚本就可能会自动往你信任的白名单里加入自己,以后做什么恶意的事情,你可能都不会知道。
需要用户下载一个网页然后运行,和需要用户下载一个EXE然后运行有什么区别呢? 并不需要下载,只要你把这个 HTML 页面放在 WEB 服务器上,通过远端的浏览器访问的用户如果安全意识淡漠,当页面提示“是否授权”的时候,选择了“是”,就会“中招”! |
|
|
10楼#
发布于:2005-06-07 18:41
解决起来应该不困难吧,比如使用类似安装扩展那样的安全措施,要用户手工加到可信站点才能运行.技术上说应该是没难度的.
|
|
|
11楼#
发布于:2005-06-07 18:41
|
|
|
12楼#
发布于:2005-06-07 18:41
就算是用户乱点上了确定,把恶意网站添加到了白名单,剩下的就是如何让用户屈服到不得不同意安装扩展。 实际上,只要你给了恶意网页一次机会,它就可以完成恶意插件的安装,我的脚本仅仅做了创建一个新的无用文件,但这已经证明了一切,因为:只要拥有了写本地文件的权限,它就可以写你的XPCOM注册表、自动创建一个扩展的目录并把它需要的文件放进去、自动修改你的 profile,还有可能把你本地保存的密码文件传回网站,供它的主人分析和破解。 还是那句话:一旦你授权一个脚本突破浏览器的沙箱限制,那后面的一切都是靠脚本提供者的良心、和操作系统的权限保护了,这也是为什么所有的浏览器都要提供插件和网站的数字签名管理,因为这可以让用户确定它使用的脚本/插件来自于谁,而使用它的后果只能由用户承担。 并不是浏览器不想保护没有安全意识的用户,而是它从原理上做不到,无论是 Firefox 还是 IE,都是这样。开放 API/可扩展性和安全性很难同时保证。 另外提醒 WINDOWS 的用户:平时仅使用受限用户做日常的工作可将风险降至最低。 |
|
|
13楼#
发布于:2005-06-07 18:41
这些缺德的家伙,我要把3721网站给炸了!
|
|
|
14楼#
发布于:2005-06-07 18:41
确定不需要下载吗?那为什么我放到IIS里点,根本没有你所说的效果呢? |
|
上一页
下一页

