Java 0day,Jre 远程代码执行,简单测试、简要分析

  • A+
所属分类:lcx

作者:GaRY(基佬~)

测试了一下,这里记录一下结果:

1、使用网上的poc,在java6u23,java6b13, java7u6下分别测试。(为什么要测试java6u13,原因是SunToolkit.getField方法在低版本java6中也是public的,所以测试看看在低版本是否也能重现java7的漏洞)

2、测试寻找是否有其他可以替代SunToolkit.getField方法的其他方法。

结果:

1、原始poc在java6里不行,java7里可以直接成功利用,弹出calc。

2、两个版本的java6都没法突破,原版poc,直接报错:在applet下根本不允许访问awt.SunToolkit包。

3、java7如果直接import这个包,也是同样的报错,jvm不允许加载此包。

4、尝试了其他函数,没有测试成功可以替换SunToolkit.getField方法的方法。

根据结果反馈的原理:

首先这个问题出在的重点有两个,一个是classFinder,一个是java 7的sun.awt.SunToolkit上。

1、限制了只能在java7上成功。

2、限制了后续是否能disableSecurityManager,也就是去掉java代码执行的沙盒限制。虽然说这个SunToolkit不是不可替代的(field.setAccessible(true);找到这个类似代码就行),但是我找了一下午没有找到替代品。

因为需要加载2,所以必须要有1去用反射加载,就是因为java7的1这里存在问题,原本不能加载的SunToolkit可以被加载了,所以才引发一系列后续内容。至于getField是不是public有没有影响,这里没有测试出来,因为1已经直接限制了即时是public的java6,也没法调用SunToolkit。

以上是今天的阶段性测试结果,不保证原理完全正确,但是根据今天的测试结果看来是这样的。这里感谢@kxlzx和@tcpper


作者:shine

@GaRY

上面有这样一个问题:至于getField是不是public有没有影响?

我刚找到一个这样的例子,问题是:java反射的安全性控制机制好象没有起作用?

public class GG {
  public String name = "test";
}
public class Test1 {
  public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SecurityException, NoSuchFieldException {

      Class cls = Class.forName(GG.class.getName());

      GG gg = (GG) cls.newInstance();
      Field field = cls.getDeclaredField("name");

       //field.setAccessible(true);
      System.out.println((String)field.get(gg));
}
}

无论field.setAccessible(true);与否,都能调用GG类型name属性值,因为name是public;如果是private就会报java.lang.IllegalAccessException(安全权限异常) 。

其实在java里这是个很简单的安全机制,例如:子类无法访问父类的私有属性或方法 (只能通过父类的,如:public方法访问)。

所以反射机制的setAccessible(true);方法在这里确实有很大问题!

@f4tb0y 配置好java环境,保存上面的为.java文件,并编译为.class文件;创建一个.html

.html内容

把两个文件放在同一路径,运行一下.html文件就好了!


shine (shield) | 2012-08-28 18:53

@shine “都能调用GG类型name属性值”这句话要改一下---》“都能调用GG类的name属性值”


摘自:http://zone.wooyun.org/content/886


相关内容:

jre 远程代码执行 0day,可进行挂马攻击

Java 0day,该漏洞影响浏览器的JRE[1.7.x]插件,可进行挂马攻击

Java 0day,Jre 远程代码执行,简单测试、简要分析

留言评论(旧系统):

【匿名者】 @ 2012-08-29 12:06:01

感谢shine昨天的回复~接受了核总的批评,推荐和小菜一样不懂java的看一下这个
http://vod.sjtu.edu.cn/help/Article_Show.asp?ArticleID=1586
话说下载土豆的那个玩意,好像傲游可以直接下吧……

本站回复:

又不是每个人都装了遨游,也有很多工具可以下,这个不需要工具……

文章来源于lcx.cc:Java 0day,Jre 远程代码执行,简单测试、简要分析

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: