Java EE

Weblogic wls9_async_response 反序列化远程命令执行漏洞(CVE-2019-2725)复现

天大地大妈咪最大 提交于 2020-12-17 00:46:22
一、 漏洞简介 漏洞编号和级别 CVE编号:CVE-2019-2725,危险级别:高危,CVSS分值:9.8。 CNVD 编号:CNVD-C-2019-48814,CNVD对该漏洞的综合评级为“高危”。 漏洞概述 2019年4月17日,国家信息安全漏洞共享平台(CNVD)收录了由中国民生银行股份有限公司报送的Oracle WebLogic wls9-async反序列化远程命令执行漏洞(CNVD-C-2019-48814)。WebLogic是美国Oracle公司出品的Java应用服务器,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用。攻击者可利用该漏洞在未授权的情况下远程执行命令。 WebLogic Server是美国甲骨文(Oracle)公司开发的一款适用于云环境和传统环境的应用服务中间件,它提供了一个现代轻型开发平台,支持应用从开发到生产的整个生命周期管理,并简化了应用的部署和管理。 wls9-async组件为WebLogic Server提供异步通讯服务,默认应用于WebLogic部分版本。由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者通过发送精心构造的恶意 HTTP 请求,即可获得目标服务器的权限,在未授权的情况下远程执行命令。 影响范围 WebLogic 10.X WebLogic 12.1.3 二、 漏洞复现 环境介绍

jar包和war包的区别:

我怕爱的太早我们不能终老 提交于 2020-12-16 21:44:00
jar包和war包的区别: war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块。而jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的. 它们都是压缩的包,拿Tomcat来说,将war文件包放置它的\webapps\目录下,启动Tomcat,这个包可以自动进行解压,也就是你的web目录,相当于发布了。 war包:是做好一个web应用后,通常是网站,打成包部署到容器中。 jar包:通常是开发时要引用通用类,打成包便于存放管理。 ear包:企业级应用,通常是EJB打成ear包。 所有的包都是用jar打的,只不过目标文件的扩展名不一样。 WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中

war包与jar包

与世无争的帅哥 提交于 2020-12-16 20:42:54
1.jar包 jar包就是别人已经写好的一些类,然后对这些类进行打包。可以将这些jar包引入到你的项目中,可以直接使用这些jar包中的类和属性,这些jar包一般放在lib目录下。 2.war包 war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器中。以Tomcat来说,将war包放置在其\webapps\目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。war包是JavaWeb程序打的包,war包里面包括写的代码编译成的class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等等。一个war包可以理解为是一个web项目,里面是项目的所有东西。 3.区别:(WAR文件代表了一个Web应用程序,JAR是类的归档文件。) 如果一个Web应用程序的目录和文件非常多,那么将这个Web应用程序部署到另一台机器上,就不是很方便了,这时可以将Web应用程序打包成Web 归档(WAR)文件,这个过程和把Java类文件打包成JAR文件的过程类似。利用WAR文件,可以把Servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构来进行部署了,而是把WAR文件作为部署单元来使用。 一个WAR文件就是一个Web应用程序,建立WAR文件,就是把整个Web应用程序(不包括Web应用程序层次结构的根目录)压缩起来,指定一个

java学习中碰到的疑惑和解答(二)

拈花ヽ惹草 提交于 2020-12-16 20:13:02
  路径问题是一个在平时学习和开发碰到的常见问题,对于初学者是一个比较值得研究的东西。因此对路径问题进行总结。    1. 编写路径为了告诉编译器如何找到其他资源。   2. 路 径分类 : 相对路径:从当前资源出发寻找其他资源的过程。 例如,在src目录下的mybatis.xml文件里配置resource使用的是相对路径,即从src目录下寻找com/bjsxt/mapper/PeopleMapper.xml 绝对路径: 从根目录(服务器根目录或项目根目录)出发找到其他资源的过程 例如,在ShowServlet中 请求转发 到index.jsp,因为在注解WebServlet中配置Servlet时定义了("/abc/b/show"),也就是在WebContent下映射了一个 虚拟文件夹 abc,abc文件夹下有一个虚拟文件夹b,文件夹b下有资源show,而此时index.jsp在WebContent下。请求转发如果使用相对路径,则应写为 "../../index.jsp" ,而这就非常复杂,而如果使用绝对路径,就可写为 "/index.jsp" ,这样不会出错。 标志: 只要以 / 开头 的都是绝对路径 。 3. 绝对路径 如果是 请求转发 / 表示 项目根目录 (WebContent。 其他 重定向 或者 静态资源引用 <img src=""/>, <a href="">,

分布式--ActiveMQ 消息中间件(一) https://www.jianshu.com/p/8b9bfe865e38

ⅰ亾dé卋堺 提交于 2020-12-16 17:03:07
1. ActiveMQ 1). ActiveMQ ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现,因此,它能很好地支持J2EE提出的JMS(Java Message Service,即Java消息服务)规范。JMS是一组Java应用程序接口,它提供消息的创建、发送、读取等一系列服务。JMS提供了一组公共应用程序接口和响应的语法,类似于Java数据库的统一访问接口JDBC,它是一种与厂商无关的API,使得Java程序能够与不同厂商的消息组件很好地进行通信。 2). Java Message Service(JMS) JMS支持两种消息发送和接收模型。 一种称为P2P(Ponit to Point)模型,即采用点对点的方式发送消息。P2P模型是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输称为可能,P2P模型在点对点的情况下进行消息传递时采用。 图1.png 另一种称为Pub/Sub(Publish/Subscribe,即发布-订阅)模型,发布-订阅模型定义了如何向一个内容节点发布和订阅消息,这个内容节点称为topic(主题)。主题可以认为是消息传递的中介,消息发布这将消息发布到某个主题,而消息订阅者则从主题订阅消息。主题使得消息的订阅者与消息的发布者互相保持独立,不需要进行接触即可保证消息的传递,发布

云原生实践之 RSocket 从入门到落地:Servlet vs RSocket

六眼飞鱼酱① 提交于 2020-12-16 17:02:47
技术实践的作用在于:除了用于构建业务,也是为了验证某项技术或框架是否值得大规模推广。 本期开始,我们推出《RSocket 从入门到落地》系列文章,通过实例和对比来介绍RSocket。主要围绕RSocket如何实现Polyglot RPC、Service Registry、 Service Discovery、 IoT联结等维度,为读者们揭开RSocket的面纱,希望对大家在Java API规范的技术选型过程中有所借鉴。 第一篇文章我们将通过Servlet和RSocket的对比,快速了解RSocket的一些基本知识。要说明的是其实RSocket与Servlet并不是同类的产品,但是大家对Servlet都很熟悉,功能对比相对方便一些。 阅读本系列文章,需要大家对Java有了解,其中可能会涉及到Kotlin,有少部分C++和Python(不做要求),如果了解Spring Boot则最好。 什么是 Servlet ? 维基百科上的解释是"Servlet,全称Java Servlet,是用Java编写的服务器端程序。 其主要功能在于交互式地浏览和修改数据,生成动态Web内容”。 对于Java程序员来说,解释这个概念直接上代码,这样才能方便理解,如下: public abstract class HttpServlet extends Servlet { protected abstract

springMVC和struts2的区别

我的梦境 提交于 2020-12-16 16:57:39
我们用struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。 spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外)。 Spring MVC和Struts2的区别: 1. 机制: spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。 2. 性能: spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类,每次发一次请求都会实例一个action,每个action都会被注入属性. 而spring基于方法,粒度更细,但要小心把握像在servlet控制数据一样。spring3 mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去,在spring3 mvc中,一个方法对应一个request上下文。 而struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入;struts2实际上是通过setter getter方法与request打交道的;struts2中

shell一键部署nginx+tomcat

…衆ロ難τιáo~ 提交于 2020-12-16 16:01:53
1.首先拉取环境 tomcat需要用到jdk环境 提前准备好nginx源码包,放于指定目录下 vim test.sh #!/bin/bash yum -y install gcc gcc-c++ zlib-devel pcre-devel tar zxf nginx-1.16.1.tar.gz cd nginx-1.16.1 && ./configure && make && make install cd /root && rpm -ivh jdk-8u20-linux-x64.rpm tar zxf apache-tomcat-7.0.96.tar.gz cp -r apache-tomcat-7.0.96 /opt/tomcat /usr/local/nginx/sbin/nginx /opt/tomcat/bin/startup.sh   判断nginx shulian=`cat /usr/local/nginx/conf/nginx.conf|grep 'proxy_pass http://192.168.11.128:8080;'|wc -l` if [ $shulian -ne 1 ];then sed -i 's/index.htm;$/index.jsp;/' /usr/local/nginx/conf/nginx.conf sed -i '/404.html;

Struts2和springmvc的区别

久未见 提交于 2020-12-16 15:59:55
一、框架机制 1. spring MVC是通过servlet的方式进行拦截,在第一次请求发送时初始化,并随着容器关闭而销毁。 2. struts2是通过filter(拦截器)的方式进行拦截,在容器初始化时加载。晚于servlet销毁。 二、拦截机制 1.struts2 是类级别上的拦截,每次请求都会创建一个对应的action,一个url对应action中的一个方法,action类中的属性被所有方法共享,所以action在spring只能配置成多例的,因为是多例的,无法使用注解等方式开发。如果有两个请求同时访问action,则会发生线程并发,导致类属性值错乱,线程不安全。struts2通过类属性的方式接收请求参数,并通过get,set方法设置值,也可以通过模型驱动的方式注入值,action类需要继承ActionSupport实现ModelDrivenMO<T>接口。struts2使用的是值栈机制,将页面需要的值压入值栈,则可在页面上通过OGNL表达式获取。Struts2有自己的拦截机制,自定义Interceptor类,然后进行配置,配置文件非常大。 2.spring MVC是方法级别上的拦截,一个请求对应着一个controller中的方法,请求参数会封装到方法参数中,如果是对象类型的参数则需要在参数名前加上@RequestBody注解即可。controller类中的属性被方法所共享

Struts2和SpringMVC的区别

天大地大妈咪最大 提交于 2020-12-16 15:37:50
struts2和springmvc的区别 一、拦截机制的不同    Struts2是类级别的拦截 ,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype,然后通过setter,getter吧request数据注入到属性。Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了,只能设计为多例。    SpringMVC是方法级别的拦截 ,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。   Struts2有自己的拦截Interceptor机制