摘要: 在做java内存马相关分析和开发的时候,免不了总是要base64,字节码和java源码各种来回转化,每次都手动操作很麻烦,写个工具自动化把字节码的base64转化为java源码。 其实反向从java源码到base64字符串也有需求,但是涉及到编译以及依赖,所以只需要classtobase64即可,比 阅读全文
posted @ 2022-07-08 16:01 ChanGeZ 阅读(397) 评论(0) 推荐(0) 编辑
摘要: serialVersionUID 如果两个不同版本的库使用了同一个类,而这两个类可能有一些方法和属性有了变化,此时在序列化通信的时候就可能因为不兼容导致出现隐患。因此,Java在反序列化的时候提供了一个机制,序列化时会根据固定算法计算出一个当前类的serialVersionUID值,写入数据流中;反 阅读全文
posted @ 2021-09-28 11:53 ChanGeZ 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 遇到一个需求,tomcat本身在日志中记录POST请求需要修改配置,要求使用其他手段获取到http请求和相应的data,header等,这时候想到了类似filter内存马的思路,filter内存马本身就是注册一个filter,拦截请求,处理并返回结果。 因为这次需要获取response的内容,先学习 阅读全文
posted @ 2021-09-27 17:26 ChanGeZ 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 背景 通过前面我们知道了java.util.PriorityQueue类实现了自己的readObject方法,可以作为一个入口,并且可以调用到transform。前面的利用链都是使用CommonCollection库里的代码实现攻击,其实也有其他的常用库也可以达成类似的效果。也就是说要寻找其他实现了 阅读全文
posted @ 2021-09-27 17:24 ChanGeZ 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 冰蝎客户端在4月份的更新中增加了内存webshell注入,原理与之前的其他内存马注入机制不同,后续版本又增加了内存马防检测功能开关,本文从代码入手,详细探究冰蝎内存webshell注入方式和防检测的原理。界面如图: 一、定位代码 冰蝎客户端有图形界面,我们从图形界面入手,定位代码,观察一下目录结构: 阅读全文
posted @ 2021-09-27 10:18 ChanGeZ 阅读(1923) 评论(0) 推荐(0) 编辑
摘要: 背景: Apache Commons Collections是一个著名的辅助开发库,包含了一些Java中没有的数据结构和和辅助方法,不过随着Java 9以后的版本中原生库功能的丰富,以及反序列化漏洞的影响,它也在逐渐被升级或替代。 在2015年底commons-collections反序列化利用链被 阅读全文
posted @ 2021-08-27 15:10 ChanGeZ 阅读(1059) 评论(0) 推荐(0) 编辑
摘要: 原理&环境 Shiro反序列化漏洞原理: 为了让浏览器或服务器重 启后用户不丢失登录状态,Shiro支持将持久化信息序列化并加密后保存在Cookie的rememberMe字 段中,下次读取时进行解密再反序列化。但是在Shiro 1.2.4版本之前内置了一个默认且固定的加密 Key,导致攻击者可以伪造 阅读全文
posted @ 2021-08-20 14:55 ChanGeZ 阅读(926) 评论(1) 推荐(0) 编辑
摘要: 为什么需要CC3 在2015年前后@frohoff和@gebl发布了Talk《Marshalling Pickles: how deserializing objects will ruin your day》,以及Java反序列化利用工具ysoserial,随后引爆了安全界。开发者们自然会去找寻一 阅读全文
posted @ 2021-08-20 14:54 ChanGeZ 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 持续补充 ... URLCLassLoader ClassLoader#loader(URL[])远程加载class URLCLassLoader实际上是我们平时默认使用的AppClassLoader的父类,所以,我们解释URLClassLoader的工作过程实际上就是在解释默认的Java类加载器的 阅读全文
posted @ 2021-08-11 16:19 ChanGeZ 阅读(707) 评论(0) 推荐(0) 编辑
摘要: 这一次来解决前几篇说到的AnnotationInvocationHandler#readObject方法在jdk8u71之后无法使用的问题,情况是导弹的弹头仍然生效,但是负责运送的导弹失效了,所以我们需要找一个新的运送导弹。 一、利用链寻找 前面说到我们使用AnnotationInvocationH 阅读全文
posted @ 2021-07-29 18:23 ChanGeZ 阅读(124) 评论(0) 推荐(0) 编辑