Weblogic CVE-2020-2555 反序列化RCE EXP构造
2020.03.06 早上4点,看到了清水川崎师傅推送了Weblogic CVE-2020-2555的通告,在推特上搜了一波,发现有详细的分析文章,遂有此文。
Writing archive
2020.03.06 早上4点,看到了清水川崎师傅推送了Weblogic CVE-2020-2555的通告,在推特上搜了一波,发现有详细的分析文章,遂有此文。
关于JNDI JNDI(Java Naming and Directory Interface)是Java提供的Java 命名和目录接口。通过调用JNDI的API应用程序可以定位资源和其他程序对象。
在Weblogic中,默认启用了IIOP,而IIOP的传输也是通过序列化和反序列化的形式来进行的。在Weblogic中RMI-IIOP模型可以借用奇安信观星实验室的一张图来说明。
JRMP在前文中提到了在传输过程中也会自动序列化和反序列化,那么我们可以构造一个gadgets,通过T3协议让weblogic自动请求我们的JRMPListener,然后JRMPListener返回给他一个恶意的gadgets对象,weblogic自动反序列化恶意对象,达到rce。
cobalt strike 或者 metasploit 生成 csharp 的 payload ,先使用 enloader 加密,再使用 loader.exe 执行.
漏洞描述 Apache Dubbo支持多种协议,官方推荐使用Dubbo协议。
RMI简介 Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。
最近在研究weblogic,复现了几个CVE执行命令都没有回显,Google了一下,发现可以通过RMI来解决weblogic反序列化RCE没有命令执行结果回显,先看下基础知识。
可以看到是HashMap类的问题,而触发反序列化的⽅法是 readObject ,直奔 HashMap 类的 readObject ⽅法:。
成功执行命令,断点同样下在InvokerTransformer的transform(),堆栈如下。
本文主要针对第二种,而单文件加密的一般都是对源码进行字符串操作,比如对字符串移位、拼接,或者重新定义变量,重新赋值数组,总之就是尽可能减少程序可读性。
后来集成为一个补丁 p219845891036Generic ,补丁下载需要Oracle的metalink账号也就是付费客户才可以下载,p219845891036Generic 补丁我在网上没找到,只能退而求其次用两个补丁的方式了。
common-collections导致的反序列化RCE,闲着也是闲着,分析下。
Java中执行命令有很多姿势,但是有时候带有|, 等符号的命令没办法正常执行。为什么呢?
在我的上篇关于 Java反序列化 的文章中,简单提到了反序列化的入口(readObject)和反射,本文我们根据上文的基础来学习 ysoserial CommonsCollections5 的反序列化流程。
在elseif语句中,如果传入的字段是数组,并且下标为0的值为exp,那么会执行 Db::raw()来进行表达式查询。
这是islogin()的定义,从session中取,0-未登录,大于0-当前登录用户ID。未登录时!islogin()为真。
框架引导start.php thinkphp为单程序入口,这是mvc框架的特征,程序的入口在public目录下的index.php。
thinkphp5最出名的就是rce,我先总结rce,rce有两个大版本的分别。
Thinkphp3 开发手册 Thinkphp3.2.3 安全开发须知 ThinkPHP中的常用方法汇总总结:M方法,D方法,U方法,I方法。