首页
社区
课程
招聘
[原创]分析SnakeYAML 反序列化漏洞(CVE-2022-1471)
发表于: 2024-5-13 09:23 1651

[原创]分析SnakeYAML 反序列化漏洞(CVE-2022-1471)

2024-5-13 09:23
1651
  1. 简介
    SnakeYaml是Java中解析yaml的库,而yaml是一种人类可读的数据序列化语言,通常用于编写配置文件等。

yaml基本语法:

大小写敏感
使用缩进表示层级关系
缩进只允许使用空格
#表示注释
支持对象、数组、纯量这3种数据结构
示例:
yaml对象:

key:
child-key: value
child-key2: value2
yaml数组:

companies:
-
id: 1
name: company1
price: 200W
-
id: 2
name: company2
price: 500W
意思是 companies 属性是一个数组,每一个数组元素又是由 id、name、price 三个属性构成
详细参考:https://www.runoob.com/w3cnote/yaml-intro.html

SnakeYaml库:
SnakeYaml提供了yaml数据和Java对象相互转换的API,即能够对数据进行序列化与反序列化。

Yaml.load():将yaml数据反序列化成一个Java对象
Yaml.dump():将Java对象序列化成yaml

2.思路来源
今天在学习SnakeYAML的反序列化的时候,想到⼀个新的探测payload,⽹上之前有⼀个SPI(Service Provider Interface)
那个链⼦可以有通过URLClassloader检测。
SPI是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。SPI是调用方来制定接口规范,提供给外部来实现,调用方在调用时则选择自己需要的外部实现。 从使用人员上来说,SPI 被框架扩展人员使用。

3.RCE

如果存在任意文件写入的话,即构造一个恶意类,并添加到classpath下,导致代码执行

此时将将SPI1中say方法的内容改为calc,当运行后则会造成代码执行
图片描述


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//