Java反序列化漏洞加固方法(weblogic)

Java反序列化漏洞加固方法(weblogic)

Java反序列化漏洞加固方法:

1、替换java包解决应用层面问题。方法是使用官方提供的4.4.1版本commons-collections4-4.1.jar包替换应用lib目录下的commons-collections.jar,再重启应用。

2、解决中间件层面问题。

方法一:升级weblogic补丁包,升级weblogic 10.3.6.12的补丁包p2*******_1036012_Generic.zip,直接安装补丁即可,但不支持10.3.6.12之前的版本,如果是老版本,先升级到 10.3.6.12再打补丁,或要用方法二。

方法二:删除特定文件。

删除commons-collections.jar包内org/apache/commons/collections/functors/InvokerTransfo rmer.class文件,不要直接解压缩后打开再重新包,这样会有问题。要直接用压缩工具软件打开后直接删除。特别注意如果集群环境,要全部停掉再执行此操作才有效,否则会被缓存的文件覆盖回原始包。

方法一不用停集群,方法二简单但要停集群。

java序列化的作用

最近在阅读Core J2EE Patterns 的时候发现例子里用于在各个层次里进行传输的TO(Data Transfer Object)都实现了java.io.Serializable接口,看到这些偶突然感到茅塞顿开~困扰了很久的关于Serializable的疑问渐渐解开了,查找相关资料并总结如下: 序列化是什么: 序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。 序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例 序列化的什么特点: 如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。 什么时候使用序列化: 一:对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。 二:java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。 ====================== 可以看看接口java.io.serializable的中文解释: Serializable public interface Serializable 类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。

Weblogic12c-集群-代理安装配置手册-初级V1.0

软件室 Weblogic12 C安装配置手册-初级 版本 <1.0>

修订历史记录

目录 1.简介 (4) 1.1目的 (4) 1.2范围 (4) 1.3定义、首字母缩写词和缩略语 (4) 1.4参考资料 (4) 1.5概述 (4) 2.部署前准备工作 (4) 2.1JDK环境安装(使用ROOT用户) (4) 2.2H OSTS文件配置和多台WEBLOGIC集群说明(使用ROOT用户) (5) 2.3创建WEBLOGIC用户和用户组(使用ROOT用户) (6) 3.WEBLOGIC12C的安装(在桌面模式下进行安装,非命令行模式) (6) 3.1运行安装程序 (6) 3.2安装步骤图片展示 (7) 4.创建WEBLOGIC域(DOMAIN) (15) 4.1运行配置向导 (15) 4.2选择D OMAIN S OURCE (19) 4.3输入管理员用户名称和密码 (21) 4.4选择WEBLOGIC启动模式和JDK (21) 4.5选择定制配置和集群服务器配置选择说明 (23) 4.6配置管理节点 (23) 4.7W EB容器服务配置 (25) 4.8集群配置 (26) 4.9其他配置图解 (29) 5.WEBLOGIC 启动和JVM内存设置 (33) 5.1节点配置 (33) 5.2W EBLOGIC手动启动(使用WEBLOGIC用户) (33) 5.2.1启动管理服务(使用weblogic用户) (33) 5.2.2启动web容器节点(使用weblogic用户) (34) 5.2.3访问地址 (34) 5.3生产模式免密码和后台启动(使用WEBLOGIC用户操作命令) (34) 5.4开机自启动服务配置和设置(使用ROOT用户) (35) 5.5关闭WEBLOGIC (39) 5.6调整WEBLGOC的运行JVM内存 (39)

WebLogic 组件反序列化漏洞补丁升级操作手册

weblogic反序列化补丁安装 梁裕 1、到weblogic官网下载补丁包(p2*******_1036_Generic.zip、 p2*******_1036012_Generic.zip如果找不到的朋友,可以在回复中给我留下邮箱,我会定期回复。) 2、10.3.6对应的补丁包p2*******_1036012_Generic.zip ,补丁包需要依赖于一个大的升级 包,所以需要把p2*******_1036_Generic.zip也下载下来。 3、登录linux的weblogic用户,切换到/home/weblogic/Oracle/Middleware/utils/bsu/目录下。 4、确认当前weblogic版本,并确认所有域的进程全部关闭 ./bsu.sh -prod_dir=/home/weblogic/Oracle/Middleware/wlserver_10.3/ -status=applied -verbose –view 5、查看是否存在/home/weblogic/Oracle/Middleware/utils/bsu/cache_dir 目录,没有的需要 手工创建。 6、将补丁包上传到/home/weblogic/Oracle/Middleware/utils/bsu/cache_dir目录下 7、首先打大的升级包,解压p2*******_1036_Generic.zip unzip p2*******_1036_Generic.zip EJUW对应就是后面命令的patchlist 8、执行补丁安装命令。 ./bsu.sh -install -patch_download_dir=/home/weblogic/Oracle/Middleware/utils/bsu/cache_dir -patchlist=EJUW-prod_dir=/home/weblogic/Oracle/Middleware/wlserver_10.3 –verbose 9、打序列化的补丁包,解压p2*******_1036012_Generic.zip unzip p2*******_1036012_Generic.zip ./bsu.sh -install -patch_download_dir=/home/weblogic/Oracle/Middleware/utils/bsu/cache_dir -patchlist=ZLNA-prod_dir=/home/weblogic/Oracle/Middleware/wlserver_10.3 –verbose 10、在打ZLNA补丁包时,遇到了内存溢出的问题。需要修改bsu.sh脚本,将内存调大。 11、启动weblogic的域,查看输出日志。确定版本是否生效。

信息安全常见漏洞类型汇总汇总

一、注入漏洞 注入攻击(),简称注入攻击、注入,被广泛用于非法获取网站控制权,是发生在应用程序地数据库层上地安全漏洞.在设计程序,忽略了对输入字符串中夹带地指令地检查,被数据库误认为是正常地指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害. 通常情况下,注入地位置包括: ()表单提交,主要是请求,也包括请求; ()参数提交,主要为请求参数; ()参数提交; ()请求头部地一些可修改地值,比如、等; ()一些边缘地输入点,比如文件地一些文件信息等.

注入地危害不仅体现在数据库层面上,还有可能危及承载数据库地操作系统;如果注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不局限于: ()数据库信息泄漏:数据库中存放地用户地隐私信息地泄露.作为数据地存储中心,数据库里往往保存着各类地隐私信息,注入攻击能导致这些隐私信息透明于攻击者. ()网页篡改:通过操作数据库对特定网页进行篡改. ()网站被挂马,传播恶意软件:修改数据库一些字段地值,嵌入网马链接,进行挂马攻击. ()数据库被恶意操作:数据库服务器被攻击,数据库地系统管理员帐户被篡改. ()服务器被远程控制,被安装后门.经由数据库服务器提供地操作系统支持,让黑客得以修改或控制操作系统.

()破坏硬盘数据,瘫痪全系统. 解决注入问题地关键是对所有可能来自用户输入地数据进行严格地检查、对数据库配置使用最小权限原则. 通常使用地方案有: ()所有地查询语句都使用数据库提供地参数化查询接口,参数化地语句使用参数而不是将用户输入变量嵌入到语句中.当前几乎所有地数据库系统都提供了参数化语句执行接口,使用此接口可以非常有效地防止注入攻击. ()对进入数据库地特殊字符('"\<>*;等)进行转义处理,或编码转换. ()确认每种数据地类型,比如数字型地数据就必须是数字,数据库中地存储字段必须对应为型. ()数据长度应该严格规定,能在一定程度上防止比较长地注入语句无法正确执行. ()网站每个数据层地编码统一,建议全部使用编码,上下层编码不一致有可能导致一些过滤模型被绕过.

C++序列化反序列化库Kapok

C++序列化/反序列化库Kapok 1.Kapok的特点 简单,易用,header-only,只需要引用Kapok.hpp即可;高效,初步测试性和messagepack 相当。 它是纯c++11实现,因此需要支持C++11的编译器。 2.主要功能 对对象进行自动化的序列化和反序列化,用起来非常简单,先来看个序列化/反序列化一个tuple的例子吧。 //序列化 Serializer sr; auto tp = std::make_tuple(10, 12, string("test")); sr.Serialize(tp, "tuple"); //反序列化 DeSerializer dr; std::tuple p; dr.Parse(sr.GetString()); dr.Deserialize(p, "tuple"); 看起来是不是很简单! 再看一个序列化一个自定义对象的例子。 struct Person { int age; string name; string city; META(age, name, city) }; Person p = { 18, "bb", "aa" }; //序列化 Serializer sr; sr.Serialize(p, "Person"); //反序列化 DeSerializer dr;

Person person; dr.Parse(sr.GetString()); dr.Deserialize(person, "Person"); 一样的很简单,结构这里需要一个宏定义META,这个META的作用就是获取对象的元信息,有了这个元信息我们就可以很方便的实现序列化和反序列化了。 3.应用场景 Kapok除了不支持指针之外所有的对象都支持,支持结构体的无限嵌套(被嵌套的结构体也必须定义META宏)。这里说一下为什么不支持指针呢,因为对象中有指针的话存在两个问题:1.这个指针如果是动态数组的话,c++中无法获取这个数组的长度;2.指针还涉及到内存管理,我希望Kapok专注于序列化和/反序列化,暂时不考虑内存管理。 4.结构体必须有一个宏定义是否具有侵入性? 看起来每个序列化/反序列化的对象都要带一个宏定义似乎侵入性较强,但这种侵入性是完全无害的,因为它只是定义了一个额外的函数而已,这个函数只会在序列化/反序列化的时候才会用到,不会对当前对象造成任何影响,还有一点是因为c++没有反射,必须要通过某种方法来获取对象的元信息,纵观目前所有的序列化方案,只有这种方式是最简洁的,用户做最少的事情即可,这也是我选择这种方式的原因。 5.Kapok是如何实现序列化/反序列化的 Kapok的最底层是用到了rapidjson, 用它来实现对基本类型的序列化,对它做了一个简单的封装以便供上层使用,上面层就是序列化\反序列化实现层,主要是实现对对象元信息的解析和自动化的打包和解包。下面是Kapok序列化的一个示意图: 6.Kapok的性能如何 初步测试对一个tuple进行序列化/反序列化一万次,发现Kapok的耗时和messagepack相当。 7.Kapok是否支持多语言 暂时不支持,先把c++版本做好再说,如果要支持多语言的话,需要用其它语言进行重写,

weblogic故障诊断与日常维护总结

中间件故障诊断总结 一、步骤: 1、准确描述现象:客户说的和自己查看到的:平台、版本、操作、信息等。特别是,故障前是否有做过什么操作:网络调整、设备调整、主机参数调整、配置文件修改……反正将这一切都列入排查的对象。 2、使用工具收集数据,收集配置文件、日志、dump文件等等。 3、使用分析数据,根据问题或收集的数据,使用适当的工具分析数据,当然包括了在网上和在官方支持站点搜索类似的问题的解决办法。 4、尝试解决问题,根据找到的问题点,尝试解决。如修改错的,复原正确的;运行有问题的,适当调整运行的环境和运行的参数等等。 5、给出最佳解决方案,一般就是继续观察了。 6、总结经验并加以重用,知识积累。 二、通过前台收集基本的信息: 1、重点是故障前做过的操作 2、比对运行平台是否在官方的兼容性列表中,一般就是关注各个版本,特别是一些比较怪异的问题 3、检查环境和参数,如能打开控制台,就在控制台中初步观察,一般进入控制台的格式是http://ip地址:端口/console如:http://192.168.0.89:7001/console/。常用的留意点如下: A、域运行状态(域-监视-健康状况);一般为running状态,如果不是 running,那这些界面就没有了。 B、服务器运行状态(域-环境-服务器),正常的为running。

进入,监视-健康状况);留意JVM 堆中当前可用的内存量。 不同的JVM,所显示的内容可能不一样,以下为sun的:

D、各个server线程状态(域-环境-服务器,点击具体的serve后进入,监 视-线程);一般来说,空闲线程要多;健康状况为ok 如下图health状态为:Warning,这个是有线程阻塞的。

JAVA序列化基础知识Serializable与Externalizable的区别

大家都知道Serializable是一个mark interface,告诉JVM这个对象可以被转换成二进制流来传输. 但是Serializable与Externalizable的转换二进制流的过程是不一样的. Serializable 在我们实现这个接口的时候,我们可以使用4个私有方法来控制序列化的过程: 我们来看一个例子: public class FooImpl implements java.io.Serializable{ private String message; public String getFoo() { return message; } public void setMessage(String message) { this.message = message; } private void writeObject(java.io.ObjectOutputStream out) throws IOException { System.out.println("writeObject invoked"); out.writeObject(this.message == null ? "hohohahaha" : this.message); } private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { System.out.println("readObject invoked"); this.message = (String) in.readObject(); System.out.println("got message:" + message); } private Object writeReplace() throws ObjectStreamException { System.out.println("writeReplace invoked"); return this; } private Object readResolve() throws ObjectStreamException { System.out.println("readResolve invoked"); return this; }

软件项目维护方案(参考示例)

软件项目维护方案

1.项目背景及目标 1.1.项目背景 在国家政策的指导和帮助下,信息化也越来越发挥出十分重要的作用。XXXX 不断加大信息化管理工作力度,积极实施“上网工程”,大力推进全市局域网建设,加快办公自动化系统进程,信息技术在改革中发挥了重要的支撑作用,为充分发挥政府公共职能,促进依法理财、科学理财,提供了重要的信息技术保障。近年来建设各系统随着数据量的逐年增加,陆续出现了性能问题,有必要进行数据库系统的升级及性能优化,以确保应用系统的正常运行,为单位员工提供更好的信息服务。 1.2.项目目标 ●对各系统数据库进行补丁升级服务,安装补丁前制定详细的升级计划和应急 回退计划。 ●完成各系统数据库的性能调优工作。 ●各业务持续性得到有效的保证。 2.需求分析 XXXXXXX项目,我公司有多年的行业经验。具有对运维服务对象进行适时监测、指标分析、和及时修复的能力。 Oracle 产品日常运行维护项目主要从如下几个方面进行: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行查看,发现并解决问题。

(2). 每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康查看,对数据库对象的状态做查看。 (3). 查看表空间碎片,提出下一步空间管理计划。对ORACLE数据库状态进行一次全面查看。 (4)由于这些数据库系统承载着XXXX非常重要的业务系统数据,所以在日常 维护中需要非常仔细,每周、每月、每季都需要有相应的巡检记录,需要详细记载以下一些内容: 监控数据库对象的空间扩展情况 监控数据量的增长情况 系统健康查看,查看以下内容: 数据库对象有效性查看 查看是否有危害到安全策略的问题。 查看 alert、Sqlnet 等日志并归档报错日志 分析表和索引 查看对数据库会产生危害的增长速度 查看表空间碎片 数据库性能调整 预测数据库将来的性能 调整和维护工作 后续空间

常见漏洞类型汇总

一、SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。在设计程序,忽略了对输入字符串中夹带的SQL指令的检查,被数据库误认为是正常的SQL指令而运行,从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。 通常情况下,SQL注入的位置包括: (1)表单提交,主要是POST请求,也包括GET请求; (2)URL参数提交,主要为GET请求参数; (3)Cookie参数提交; (4)HTTP请求头部的一些可修改的值,比如Referer、User_Agent等; (5)一些边缘的输入点,比如.mp3文件的一些文件信息等。

SQL注入的危害不仅体现在数据库层面上,还有可能危及承载数据库的操作系统;如果SQL注入被用来挂马,还可能用来传播恶意软件等,这些危害包括但不局限于: (1)数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。作为数据的存储中心,数据库里往往保存着各类的隐私信息,SQL注入攻击能导致这些隐私信息透明于攻击者。 (2)网页篡改:通过操作数据库对特定网页进行篡改。 (3)网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。 (4)数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被篡改。 (5)服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。 (6)破坏硬盘数据,瘫痪全系统。

解决SQL注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。通常使用的方案有: (1)所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。 (2)对进入数据库的特殊字符('"\<>&*;等)进行转义处理,或编码转换。 (3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。 (4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。 (5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。 (6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。

硬件设备运维方案

目录

概述 XXX第二次土地调查数据库及国土资源视频会议系统运维项目内容主要分为土地调查数据库软硬件运维工作和视频会议系统运维工作,服务内容涵盖了网络交换机机设备、网络安全防护设备、服务器设备、存储设备、操作系统以及数据库等内容,存在技术多样化、管理复杂化等问题,从而对运维公司的技术力量以及管理团队都有着一定的要求。 XXX公司根据多年的项目实施和服务,积累了丰富人力资源和管理经验,根据本次项目特点,特制定如下运行维护解决方案。 服务内容 服务目标 XXX公司可提供的运行维护服务包括,信息系统相关的网络设备、服务器设备、存储设备、操作系统、数据库以及视频会议系统的运行维护服务,保证用户现有的信息系统的正常运行,降低整体管理成本,提高网络信息系统的整体服务水平。同时根据日常维护的数据和记录,提供用户信息系统的整体建设规划和建议,更好的为用户的信息化发展提供有力的保障。 用户信息系统的组成主要可分为两类:硬件设备和软件系统。硬件设备包括网络设备、安全设备、服务器设备、存储设备和视频会议系统设备等;软件系统主要为操作系统、数据库软件、集群软件等和业务应用软件等。 XXX公司通过运行维护服务的有效管理来提升用户信息系统的服务效率,协调各业务应用系统的内部运作,改善网络信息系统部门与业务部门的沟通,提高服务质量。结合用户现有的环境、组织结构、IT资源和管理流程的特点,从流程、人员和技术三方面来规划用户的网络信息系统的结构。将用户的运行目标、业务需求与IT服务的相协调一致。 XXX公司提供的信息系统服务的目标是,对用户现有的信息系统基础资源进行监控和管理,及时掌握网络信息系统资源现状和配置信息,反映信息系统资源的可用性情况和健康状况,创建一个可知可控的IT环境,从而保证用户信息系统的各类业务应用系统的可靠、高效、持续、安全运行。 服务项目范围覆盖的信息系统资源以下方面的关键状态及参数指标:运行状态、故障情况 配置信息 可用性情况及健康状况性能指标 信息资产统计服务 此项服务为基本服务,包含在运行维护服务中,帮助我们对用户现有的信息资产情况进行了解,更好的提供系统的运行维护服务。 服务内容包括: 硬件设备型号、数量、版本等信息统计记录 软件产品型号、版本和补丁等信息统计记录 网络结构、网络路由、网络IP地址统计记录 综合布线系统结构图的绘制 其它附属设备的统计记录 网络、安全系统运维服务

将php序列化到数据库的对象饭序列化成java对象

将php序列化到数据库的对象饭序列化成java对象 php的对象序列化到数据库中,形如 a:3:{i:0;i:1241;i:1;i:4;i:2;i:16;}但是java需要取出这样的对象,转换成java的对象/* PHPSerializer.java * * Author: Ma Bingyao * Copyright: https://www.360docs.net/doc/cf17097592.html, * Version: 2.1 * LastModified: 2006-08-09 * This library is free. You can redistribute it and/or modify it. * https://www.360docs.net/doc/cf17097592.html,/?p=202 */ package org.phprpc.util; import java.io.*; import java.util.*; import https://www.360docs.net/doc/cf17097592.html,ng.reflect.*;

class UnSerializeResult { public Object value; public int hv; public UnSerializeResult() {} public UnSerializeResult(Object value, int hv) { this.value = value; this.hv = hv; } } public class PHPSerializer { private static Package[] __packages = Package.getPackages(); private static final byte __Quote = 34; private static final byte __0 = 48; private static final byte __1 = 49; private static final byte __Colon = 58; private static final byte __Semicolon = 59; private static final byte __C = 67; private static final byte __N = 78;

Java-Jackson反序列化漏洞及挖洞思路

源码分析Jackson反序列化漏洞 前言: 本次分析从Java序列化和反序列化源码开始分析,进一步分析Jackson源码,找出造成漏洞的原因,最后以Jackson2.9.2版本,JDK1.80_171,resin4.0.52,CVE-2020-10673为例复现漏洞。 一.JA V A反序列化原理 1.1 Class对象 每一个类都有一个Class对象,Class对象包含每一个类的运行时信息,每一个类都有一个Class对象,每编译一个类就产生一个Class对象,Class类没有公共的构造方法,Class对象是在类加载的时候由JVM以及通过调用类加载器中的DefineClass()方法自动构造的,因此不能显式地声明一个Class对象。在类加载阶段,类加载器首先检查这个类的Class对象是否已经被加载。如果尚未加载,默认的类加载器就会根据类的全限定名查找.class文件。一旦某个类的Class对象被载入内存,我们就可以它来创建这个类的所有对象以及获得这个类的运行时信息。 获得Class对象的方法: 1).Class.forName(“类的全名”);//com.xx.xx.xx 2).实例对象.getClass() 3).类名.class 1.2反射 JA V A反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

实现Java反射机制的类都位于https://www.360docs.net/doc/cf17097592.html,ng.reflect包中: 1).Class类:代表一个类 2).Field类:代表类的成员变量(类的属性) 3).Method类:代表类的方法 4).Constructor类:代表类的构造方法 5).Array类:提供了动态创建数组,以及访问数组的元素的静态方法 简单反射调用代码 Class clz=this.getClass(); Object obj= clz.getMethod("方法名",Class对象序列).invoke(this,Object参数序列); 1.3 反序列化 Java 序列化是指把Java 对象转换为字节序列的过程便于保存在内存、文件、数据库中,ObjectOutputStream类的writeObject() 方法可以实现序列化。 Java 反序列化是指把字节序列恢复为Java 对象的过程,ObjectInputStream 类的readObject() 方法用于反序列化。 RMI:是Java 的一组拥护开发分布式应用程序的API,实现了不同操作系统之间程序的方法调用。值得注意的是,RMI 的传输100% 基于反序列化,Java RMI 的默认端口是1099 端口。 JMX:JMX 是一套标准的代理和服务,用户可以在任何Java 应用程序中使用这些代理和服务实现管理,中间件软件WebLogic 的管理页面就是基于JMX 开发的,而JBoss 则整个系统都基于JMX 构架。 只有实现了Serializable接口的类的对象才可以被序列化,Serializable 接口是启用其序列化功能的接口,实现java.io.Serializable 接口的类才是可序列化的,没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。 readObject() 方法的作用正是从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回,readObject() 是可以重写的,可以定制反序列化的一些行为。 readObject()主要做的事情,其实就是读取正常应该被序列化的字段信息后,

使用json-lib完成json的序列化和反序列化

使用json-lib完成json的序列化和反序列化2011-07-29 14:07:43 分类:默认分类 | 标签:软件 java json. json的序列化和反序列化在现在的javaweb中特别是ajax中使用的比较频繁,现在本人就这种技术提出自己的使用心得。 我的pojo对象的结构是这样的 部门表和员工表 1对多的关系 部门对象 public class Dept implements java.io.Serializable { private Integer depid;//部门ID private String depname;//部门名称 private Set emps = new HashSet(0);//员工集合 } 员工对象 public class Emp implements java.io.Serializable { private Integer empid;//员工id private Dept dept;//部门 private String empname;//员工名称 private Date birthday;//生日 } 1.json字符串序列化成对象 /** *通过json转换成对象 *@author凤生禾予 */ public void jsonToObject(){ Date d=new Date(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); StringBuffer str=new StringBuffer(); // json字符串 str.append("{empid:1,dept:{depid:1,depname:'开发部'},empname:'张三 ',birthday:'"+sdf.format(d)+"'}"); // 使用JSONObject将json序列化对象 JSONObject obj=JSONObject.fromObject(str.toString()); // 将JOSNObject对象转换成pojo对象 Emp emp=(Emp) JSONObject.toBean(obj,Emp.class); System.out.println(emp.getBirthday()); } 这里需要注意的是json字符串的写法以{}表示一个对象,字符串必须加引号

CVE-2009-0658漏洞分析

CVE-2009-0658漏洞分析 题目:CVE-2009-0658漏洞分析 原作:Peter Kleissner (http://web17.webbpro.de/index.php?page=analysing-the-pdf-exploit) 翻译:Cryin' 我想给大家分享下2009年3月对一个Adobe pdf漏洞的分析结果,该漏洞由于JBIG2压缩中的BUG导致执行任意Win32代码。该漏洞目前(2009年3月3日)已经仅在内部被修补,但Adobe有望在3月11日才发布更新版本。自2007年以来的所有Adobe阅读器(Adobe Reader 7.0和更高版本都受影响),恶意PDF文件利用此漏洞的成功率非常低,所以传播的不是很广泛。 PDF文件概览 首先让我们大概的认识下一般的PDF恶意文件 ?JavaScript代码,使Exploit成为可能 ?Shellcode集成在JavaScript代码中(加载在Stream里面) ?Exploit Code,包含在PDF文件的Stream中并经过加密的可执行文件(malware) ?伪造的PDF文件,实现隐藏的目的 PDF漏洞文件开发主要有三个部分:JavaScript代码、Shellcode、Exploit Code。这三部分在漏洞利用开发过程中都同等重要。 Pidief是一个知名度很高、传播十分广泛的病毒家族(本文分析的也是),在其历史上它利用各种Adobe Pdf漏洞来执行恶意程序(malware).下面分析的就是Pidief家族中鲜活的实例。尽情享受吧! JavaScript代码 Pidief包含的第一段JavaScript代码作为脚本存储在PDF文件的Object对象中,代码经过八进制编码后如下面所示: 2 0 obj <

常见漏洞及其解决方法

常见漏洞及其解决方案 1、SQL注入漏洞 漏洞描述: SQL注入被广泛用于非法入侵网站服务器,获取网站控制权。它是应用层上的一种安全漏洞。通常在设计存在缺陷的程序中,对用户输入的数据没有做好过滤,导致恶意用户可以构造一些SQL语句让服务器去执行,从而导致数据库中的数据被窃取,篡改,删除,以及进一步导致服务器被入侵等危害。 SQL注入的攻击方式多种多样,较常见的一种方式是提前终止原SQL语句,然后追加一个新的SQL命令。为了使整个构造的字符串符合SQL语句语法,攻击者常用注释标记如“-- ”(注意空格)来终止后面的SQL字符串。执行时,此后的文本将被忽略。如某个网站的登录验证SQL查询代码为strSQL = "SELECT * FROM users WHERE name = ‘”+ userName + “’and pw =’”+ passWord +”’”,其中userName 和passWord是用户输入的参数值,用户可以输入任何的字符串。如果用户输入的userName=admin’-- ,passWord为空,则整个SQL语句变为SELECT * FROM users WHERE name=’admin’-- ‘and pw=’’,等价于SELECT * FROM users WHERE name=’admin’,将绕过对密码的验证,直接获得以admin的身份登录系统。 漏洞危害: ?数据库信息泄漏,例如个人机密数据,帐户数据,密码等。 ?删除硬盘数据,破坏整个系统的运行。 ?数据库服务器被攻击,系统管理员帐户被窜改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx')。 ?取得系统较高权限后,可以篡改网页以及进行网站挂马。 ?经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统,植入后门程序(例如xp_cmdshell "net stop iisadmin"可停止服务器的IIS服务)。 解决方案: ?输入过滤,对于整数,判断变量是否符合[0-9]的值;其他限定值,也可以进行合法性校验;对于字符串,对SQL语句特殊字符进行转义(单引号转成两个单引号,双引号转成两个双引号)。MySQL也有类似的转义函数mysql_escape_string和mysql_real_ escape_string。Asp的过滤参考此页面https://www.360docs.net/doc/cf17097592.html,/nazim/archive/ 2008/04 /28/ filtering-sql-injection-from-classic-asp.aspx ?在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。 ?使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接组件,例如https://www.360docs.net/doc/cf17097592.html,的SqlDataSource对象或是LINQ to SQL,安全API库如ESAPI。?使用SQL防注入系统。 ?严格限制数据库操作的权限。普通用户与系统管理员用户的权限要有严格的区分。建立专门的账户,同时加以权限限制,满足应用的需求即可。 2、HTTPHOST头部攻击 漏洞描述:一般通用web程序是如果想知道网站域名不是一件简单的事情,如果用

Django任意代码执行漏洞分析

Django任意代码执行漏洞分析 从Django的SECTET_KEY到代码执行 Django是一个可以用于快速搭建高性能,优雅的网站的平台,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS (内容管理系统)软件。并于2005年7月在BSD许可证下发布。 最近在进行网站代码审查的过程中,发现某些产品由于session使用不当,导致可能被攻击者利用,执行任意代码。这些产品在登录的JS代码中,泄露了SECRET_KEY,将该值作为密码加密的盐,这样就暴露了加密salt不太好吧,更重要的是对django的安全造成了极大的威胁。 2 SECRET_KEY作用 SECTET_KEY在djanog中使用非常广泛,基本上涉及到安全,加密等的地方都用到了,下面列举一些常见情景:1,json object的签名2,加密函数,如密码重置,表单,评论,csrf的key,session数据 这里面就要重点讲到session的问题,在这里使用不当就会导致代码执行

3 代码执行 3.1 settings的session设置 django默认存储session到数据库中,但是可能会比较慢,就会使用到缓存,文件,还有cookie等方式,如果采用了cookie机制则有可能代码执行,settings配置如下: SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' 3.2 django 1.6以下 在django1.6以下,session默认是采用pickle执行序列号操作,在1.6及以上版本默认采用json序列化。代码执行只存在于使用pickle序列话的操作中。 3.3 session处理流程 可以简单的分为两部分,process_request和process_response,前者负责选择session引擎,初始化cookie 数据。见代码 Python class SessionMiddleware(object): def process_request(self, request): engine = import_module(settings.SESSION_ENGINE) session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME,

OWASP前十大漏洞

OWASP前十大漏洞 十大漏洞原因危害攻击方法 1 跨站脚本 (XSS,Cross Site Scripting) CGI程序没有对用 户提交的变量中的 HTML代码进行过 滤或转换;对提交的 数据没有经过适当 的验证或转译 黑客可以利用浏览器 中的恶意脚本获得用 户的数据,破坏网站, 插入有害内容,以及展 开钓鱼式攻击和恶意 攻击。 攻击者注入非法的标 签与脚本最终都要在 客户端执行,攻击的过 程实际上都在客户端 的浏览器上发生的。 能在客户端进行跨站 的不仅仅是HTML标签 与JavaScript脚本, 还包含一些其它的客 户端应用,比如Flash 里的ActionScript脚 本也能辅助发起XSS 攻击 2 注入漏洞(Injection Flaw) 字符过滤不严紧所 造成的 攻击者可利用注入漏 洞诱使Web应用执行 未预见的命令或数据 库查询,从而对数据库 信息进行窃取、篡改、 删除等 攻击者把一些包含指 令的数据发送给解释 器,解释器会把收到的 数据转换成指令执行。 3 恶意脚本执行 (Malicious File Excution) Web应用程序引入 来自外部的恶意文 件并执行文件内容 攻击者可利用恶意文 件执行漏洞进行攻击 取得Web服务器控制 权,进行不法利益或获 取经济利益 攻击者在具有引入功 能程序的参数中修改 参数内容,Web服务器 便会引入恶意程序内 容从而受到恶意文件 执行漏洞攻击 4 不安全的直接对象 参照物(Insecure Direct Object Reference) 当网站地址或者其 他参数包含了文件、 目录、数据库记录或 者关键字等参照物 对象时就可能发生 这种攻击 可能在网络接口中暴 露出用户的账号或是 重要文件 攻击者可以通过猜想 或者搜索另一个有效 关键字的方式攻击这 些参数 5 跨站指令伪造 (CSRF,Cross-Site Request Forgery) 它们是根据会话 cookie或者“自动记 忆”功能来授权指令 的 攻击者能让受害用户 修改的任何数据,或者 是执行允许使用的任 何功能 已登入Web应用程序 的合法使用者执行到 恶意的HTTP指令,但 Web应用程序却当成 合法需求处理,使得恶 意指令被正常执行

相关文档
最新文档