Tomcat内存马-01篇
内存马大致可以分为两种,第一种是利用Java Web的组件,如Tomcat下的动态添加Servlet、Filter、Listener的恶意组件,在Spring框架下就是Controller、Intercepter。第二种是修改字节码,如利用Java的Instrument机制,动态注入Agent。 本文分析Tomcat型内存马的其中两个,剩下的Tomcat型内存马下一篇文章写;学习内存马之前,还需要了解Java Web三大组件、tomcat、jsp的基础知识。 前置基础基础知识只写了一些简单介绍 三大组件 Java...
Java反序列化系列漏洞04篇Commons-Collections之CC3链
前文分析了动态加载字节码,本篇就来分析一下使用TemplatesImpl加载字节码执行命令的CC3并将原本CC1和CC6中执行命令的尾部Runtime也改为用TemplatesImpl加载字节码执行命令。 环境部分版本不变为jdk8u65和CC3.2.1 CC3链分析尾部TemplateImpl由于Runtime和invokertransform被限制使用,本链会利用其他方法把这些限制绕开。 TemplatesImpl加载字节码执行命令详情前文已经分析过,整条利用链为 : TemplatesImpl#newTransformer() -> TemplatesImpl#getTransletInstance() -> TemplatesImpl#defineTransletClasses() ->...
动态加载字节码
在利用链的构建过程中,由于受到环境限制,Runtime 类无法被正常使用,因此无法再通过传统的 Runtime 方式来执行命令。为了解决这一问题,可以采用动态加载字节码的方式来实现命令的执行。这种方式通过将需要执行的代码以字节码的形式动态加载到内存中,并利用 Java 的类加载机制在运行时执行,从而绕过对 Runtime 的直接依赖。 基础部分字节码Java字节码是由Java编译器(如javac)将Java源代码(.java)编译而成。每个.class文件中包含的就是对应类的字节码指令。JVM负责解释执行这些字节码指令,从而实现Java程序的运行。 示例Java类 12345public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); }} 经过编译生成HelloWorld.class 123456public static void...
Java反序列化系列漏洞03篇Commons-Collections之CC6链
前文分析到CC1会受到JDK和Commons Collections版本限制,CC6优势在于绕过JDK 8u71-8u202版本限制,8u_202以上的版本还可以配合fastjson利用,Commons Collections 利用范围也较广,因此它是最好用的CC链。 版本切换jdk版本用jdk8u71,反编译用openJDK,它的搭建在CC1已经介绍了,这里不再介绍,之前搭建过的可以直接切换版本 CC6反序列化利用链分析 JDK_8u71把AnnotationInvocationHandler类给限制住了,LazyMap和InvokerTransformer还可以继续用,只需要找到能够调用LazyMa的get()方法的类即可。 先把LazyMap和InvokerTransformer的POC写下来,和CC1是一样的。 12345678910Transformer[] transformers = new Transformer[]{ new ConstantTransformer(Runtime.class), new...
Java反序列化系列漏洞02篇Commons-Collections之LazyMap版CC1链
本文将分析 LazyMap 版的 CC1 反序列化利用链。关于前置知识与环境搭建,已在上一篇文章 TransformedMap版CC1链 中进行详细讲解,本篇不再赘述。相较于 TransformedMap 版本,LazyMap 的利用链整体结构变化不大,但在实现细节上稍有差异,它出自ysoserial,下面直接进入核心分析。 LazyMap 版的 CC1 反序列化利用链分析链尾InvokerTransformer类尾部同样还是InvokerTransformer,可以利用反射执行命令,执行命令详情还是在上一篇文章。代码如下: 1234Runtime runtime = Runtime.getRuntime(); InvokerTransformer invokerTransformer =new InvokerTransformer("exec",new Class[]{String.class},new Object[]{"calc"}); ...
Java反序列化系列漏洞01篇Commons-Collections之TransformedMap版CC1链
一文解读CC1反序列化利用链的思路、原理、逻辑、构造反序列化利用链方法及写poc方法。
PHP反序列化-字符逃逸漏洞解读
以前在学习PHP反序列化字符逃逸的时候,找不到合适的文章来加深我对它的理解,现在写一篇方便后续拿来快速回忆;我这里用例题详细讲解了PHP反序列化中字符逃逸漏洞中字符增加和字符减少的两种情况
Java反序列化系列漏洞00篇-URLDNS链详解
最简单的Java反序列化利用链,可以作为学习反序列化链的开始,详细描述了利用的原理、流程、利用和类之间的调用详情。
春秋云境-Delegation
CVE-2021-42643 diff提权 rdp爆破 注册表提权 NTLM强制认证+非约束性委派 flag01拿到ip后,访问/admin存在弱口令 admin/123456登陆后查看版本,该版本存在cve-2021-42643 抓包利用,写一个弹shell的poyload,储存在php文件中;.._d_表示上级目录,这样可以把php文件上传到根目录。 12345678910POST /index.php?case=template&act=save&admin_dir=admin&site=default HTTP/1.1 Host: 192.168.31.96 Content-Length: 57 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 Content-Type: application/x-www-form-urlencoded; Cookie: login_username=admin;...
春秋云境-Exchange
Exchange + JDBC + FastJSON 三者之间的关系简单理解: Exchange 获取邮件 ->JDBC 存入 MySQL ->FastJSON 转换 JSON ,Java 应用可以处理企业邮件,并提供 API...