网络安全 频道

Java applet 安全性探究

  选择之后,在每次浏览applet页面时,会看到控制台上会出现每一步的程序执行信息,便于我们知道发生的异常和程序运行结果。

  回头看看这段“0day”代码的执行,我为什么会说“纸上谈兵”呢?分析“0day”的执行顺序:“新建文件--利用HTTP协议取文件--把取得的文件内容写入新建的文件--执行该文件”。好哇!整个就是一个下载者经典流程。看看我们执行后的控制台信息吧。

  执行过程很明确,打印出了“aaa”,说明代码执行进入了start方法里。Applet的执行顺序为“初始化类(构造方法)--调用init方法—调用start方法--。。。。。”,你可以认为只要代码写在start里,就会执行。这些都是由浏览器执行的,我们的找茬范围,就是当浏览器执行这些代码的同时:有没有忽略什么、还能做什么、在做什么的同时会不会触发什么。看这里的信息,并没有去那个URL地址拿EXE文件,反而到了aaa就结束了,是因为程序里抓了异常,但是故意不做处理。修改代码,打印异常信息到控制台。继续执行。

  除了上面的信息外,又打印了

java.security.AccessControlException: access denied (java.io.FilePermission C:\windows\system32\Client.exe write)

  原来,在执行

bufferedoutputstream = new BufferedOutputStream(new FileOutputStream("C:\\windows\\system32\\Client.exe"));

时,发生了安全异常,不允许新建文件“C:\windows\system32\Client.exe”。好了,连这个新建文件的权限都没有,还谈什么去执行它。很显然,这段代码单纯的执行并不能达到“0day”的效果,可能有些触发条件没有被贴出来吧,它只能算是一段shellcode罢了。“0day”梦想暂时结束。那,不能新建文件也可以,如果能把用户个人电脑的文件偷偷发出去,也是个不错的选择。

0
相关文章