首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    Java安全之SnakeYaml反序列化分析

    Java安全之SnakeYaml反序列化分析 0x00 前言 偶然间看到SnakeYaml的资料感觉挺有意思,发现SnakeYaml也存在反序列化利用的问题。借此来分析一波。 0x01 SnakeYaml 使用 SnakeYaml 简介 SnakeYaml是用来解析yaml的格式,可用于Java对象的序列化、反序列化。 SnakeYaml 使用 导入依赖jar包 <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId

    3.5K20编辑于 2021-12-13
  • 来自专栏我的网安魔法之旅

    Java安全之SnakeYaml反序列化

    YAML基本格式要求: YAML大小写敏感; 使用缩进代表层级关系; 缩进只能使用空格,不能使用TAB,不要求空格个数,只需要相同层级左对齐(一般2个或4个空格) Java 常见用来处理 yaml 的库就是SnakeYaml SnakeYaml是一个完整的YAML1.1规范Processor,支持UTF-8/UTF-16,支持Java对象的序列化/反序列化,支持所有YAML定义的类型。 测试环境 java version “1.8.0_71” pom.xml <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml 因此控制这个类的静态代码块就有机会执行任意代码了,这部分代码实现可以参考https://github.com/artsploit/yaml-payload/ 那么SPI和SnakeYaml如何联系起来呢 反序列化分析 | nice_0e3 SnakeYAML反序列化及可利用Gadget | Y4tacker Java安全之yaml反序列化 | jiang

    1K10编辑于 2023-09-12
  • 来自专栏JadePeng的技术博客

    JAVA使用SnakeYAML解析与序列化YAML

    1.概述 本文,我们将学习如何使用SnakeYAML库将 YAML文档转换为Java对象,以及JAVA对象如何序列化为YAML文档。 2.项目设置 要在项目中使用SnakeYAML,需要添加Maven依赖项(可在此处找到最新版本): <dependency> <groupId>org.yaml</groupId> <artifactId >snakeyaml</artifactId> <version>1.25</version> </dependency> 3.入口点 该YAML类是API的入口点: Yaml yaml = new 4.加载YAML文档 SnakeYAML支持从String或InputStream加载文档,我们从定义一个简单的YAML文档开始,然后将文件命名为customer.yaml: firstName: "John com.baeldung.snakeyaml.Customer,为了避免在输出文件中使用标签名,我们可以使用库提供的 dumpAs()方法。

    7.1K41发布于 2020-02-18
  • 来自专栏技术进阶之路

    Provides transitive vulnerable dependency org.yaml:snakeyaml:1.33

    -- lookup parent from repository --> </parent> Provides transitive vulnerable dependency org.yaml:snakeyaml :1.33 这段报错的意思是:snakeyaml是一个脆弱的传递依赖。 截止到 2022-12-13 日,snakeyaml 仍未修复该漏洞。 二、解决方法 解决方法也很简单,既然该依赖项不安全存在漏洞,那我们就不用它,排除它。 <exclusions> <exclusion> <groupId>org.yaml</groupId> <artifactId>snakeyaml

    3.1K20编辑于 2023-01-13
  • 来自专栏全栈程序员必看

    SpringBoot报错ERROR org.springframework.boot.SpringApplication – Application run failed[通俗易懂]

    (StreamReader.java:218) at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java: 176) at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171) at org.yaml.snakeyaml.reader.StreamReader.peek ) at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287) at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken :195) at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) at org.yaml.snakeyaml.parser.ParserImpl.checkEvent (ParserImpl.java:148) at org.yaml.snakeyaml.composer.Composer.checkNode(Composer.java:82) at org.yaml.snakeyaml.constructor.BaseConstructor.checkData

    3.4K60编辑于 2022-09-30
  • 来自专栏别先生

    一脸懵逼学习Storm的搭建--(一个开源的分布式实时计算系统)

    51 at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230) 52 at org.yaml.snakeyaml.composer.Composer.composeNode ) 54 at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105) 55 at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData 111 at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230) 112 at org.yaml.snakeyaml.composer.Composer.composeNode ) 114 at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105) 115 at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData 171 at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230) 172 at org.yaml.snakeyaml.composer.Composer.composeNode

    1.6K60发布于 2018-01-02
  • 来自专栏网络安全攻防

    【渗透利器】RuoYI漏洞综合利用工具

    工具介绍 若依综合利用工具支持检测若依框架多个历史漏洞,并且支持一键利用(Snakeyaml命令执行漏洞、Snakeyaml命令执行漏洞绕过、JdbcTemplate漏洞、ReadFile(新)文件读取漏洞 兄弟们的支持是我更新的动力 漏洞检测: SQL注入: thymeleaf注入: snakeyaml漏洞: JDBCtamplte注入: 免责声明 由于传播、利用RuoYI综合解密工具提供的功能而造成的任何直接或者间接的后果及损失

    5.8K10编辑于 2024-06-19
  • 来自专栏java

    【问题篇】Springboot解决启动时报错:“org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInput”

    场景:今天换了一台电脑,从git仓库拉取以前的代码后,运行时报错“org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException

    2.2K10编辑于 2024-06-21
  • 【读取jar里面的yml文件里面参数】

    import org.yaml.snakeyaml.Yaml; import java.io.FileWriter; import java.io.IOException; import java.util.Map 要运行上述代码,我们需要添加snakeyaml库的依赖。可以在Maven或Gradle的构建文件中添加如下依赖: <! -- Maven --> <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.29</version> </dependency> // Gradle implementation 'org.yaml:snakeyaml:1.29' 运行上述代码后,会生成一个

    34410编辑于 2025-08-29
  • 来自专栏一猿小讲

    细数Java项目中用过的配置文件(YAML篇)

    在不同的编程语言中,都有很多三方工具可以解析 YAML 文件,而在 Java 项目可以用 SnakeYaml 进行解析,接下来就写写代码体验一下 yaml 文件的解析。 <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.18 从原项目中直接拿来,为了清晰,索性只留解析 YAML 文件部分的代码,呈现给你) import org.apache.commons.collections4.MapUtils; import org.yaml.snakeyaml.Yaml 其中 SnakeYaml 类库还有很多 API 可以使用,不一一带着写代码啦,感兴趣的自行参考 SnakeYaml 官方文档,去照猫画虎敲敲吧。 https://bitbucket.org/asomov/snakeyaml/wiki/Documentation 另外,细心的你在平时研发时,有没有发现,有的项目 YAML 文件的后缀是 .yml,有的项目却是

    1.6K20发布于 2020-04-21
  • 来自专栏cwl_Java

    Java工具集-yml配置处理工具

    引入依赖 <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId version> </dependency> 代码示例 package *; import com.simple.util.base.StringUtils; import org.yaml.snakeyaml.DumperOptions ; import org.yaml.snakeyaml.Yaml; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream

    1.4K10发布于 2019-10-26
  • 来自专栏一个执拗的后端搬砖工

    某依框架定时任务RCE分析与思考

    二、SnakeYAML反序列化EXP 系统部署可参考官网教程,这里不再展开介绍。 三、JNDI注入EXP 前边SnakeYAML反序列化分析的比较详细,JNDI虽然工作原理不同,但是利用方式类似,简单介绍下即可。 ,而springboot默认支持yaml格式的配置文件解析,也就是说springboot默认集成了SnakeYAML相关能力。 不需要在pom文件中显式引入: 再结合定时任务可以通过类的全路径来实例化执行,所以就出现了前边所说的把任务执行内容改成了: org.yaml.snakeyaml.Yaml.load('!! 到这里SnakeYAML反序列化攻击的实现方式,和攻击原理基本都介绍清楚了,另外这个反序列化漏洞目前是覆盖到SnakeYAML所有版本,因为它本身不是漏洞,而是使用方式滥用带来的缺陷或者漏洞吧,ruoyi

    2.3K10编辑于 2024-11-29
  • 来自专栏卓文见识

    IDEA动态调试(三)——反序列化漏洞(xml+Yaml)

    这篇主讲xml和yaml格式数据的处理,xml处理库主要有Xmldecoder和XStream;Yaml类似于XML,如常见的docker-compose.yml,其最主流的处理库是SnakeYaml, [CDATA[ blue]]></string></void><voidmethod="close"/></object></java> 3、SnakeYaml 1) 序列化: Yaml 使用dump 3)原理: SnakeYaml全版本存在反序列化漏洞,当Yaml.load()函数的参数外部可控时,攻击者就可以传入一个恶意类的yaml格式序列化内容,当服务端进行yaml反序列化获取恶意类时就会触发 SnakeYaml反序列化漏洞。 类比下Fastjson的反序列化的类方法调用,同样调用了反序列化的类的构造函数和yaml格式内容中包含的属性的setter方法,这里可以在yaml.load(s)处打断点,可跟踪SnakeYaml反序列化的调用链

    3.4K20发布于 2020-03-12
  • 来自专栏马洪彪

    jeecgboot常见问题及处理方法-found character '@' that cannot start any token. (Do not use @ for indentation)

    org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(ParserImpl.java:586) at org.yaml.snakeyaml.parser.ParserImpl.peekEvent org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:248) at org.yaml.snakeyaml.composer.Composer.composeMappingNode ) at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:236) at org.yaml.snakeyaml.composer.Composer.composeNode org.yaml.snakeyaml.composer.Composer.composeMappingChildren(Composer.java:248) at org.yaml.snakeyaml.composer.Composer.composeMappingNode (Composer.java:236) at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:162) at org.yaml.snakeyaml.composer.Composer.getNode

    4.2K40发布于 2021-11-09
  • 来自专栏全栈文档库

    SpringBoot-读取配置文件(工具类法)

    该指南介绍了如何通过引入SnakeYaml包建立YamlUtil工具类,直接获取应用程序的yaml配置文件的配置信息。这种方法相对于使用@Value对象映射的方法,更加方便,封装性更好。 一、创建YamlUtil工具类 package com.util; import org.apache.log4j.Logger; import org.yaml.snakeyaml.Yaml; import

    92332编辑于 2024-02-03
  • 来自专栏美码师

    Y服务-你真的懂 Yaml 吗?

    docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-loading-yaml 下面提供 将SnakeYaml 引入框架 在Maven的pom.xml文件中添加: <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId getId() { return id; } public void setId(String id) { this.id = id; } } 通过 SnakeYaml 参考文档 阮一峰-YAML语言教程: http://www.ruanyifeng.com/blog/2016/07/yaml.html SnakeYaml 官方文档: https://bitbucket.org /asomov/snakeyaml/wiki/Documentation Yaml 1.2 规范: http://www.yaml.org/spec/1.2/spec.html SpringBoot-LoadingYaml

    1K20发布于 2019-07-30
  • 来自专栏QGS星球

    一文读懂Springboot读取yml配置文件

    在创建一个 SpringBoot 项目时,引入的 spring-boot-starter-web 依赖间接地引入了 snakeyaml 依赖, snakeyaml 会实现对 yml配置的解析。

    6.1K10编辑于 2023-12-30
  • 来自专栏JavaQ

    深入Spring Boot (四):YAML属性配置文件使用详解

    要想使用YAML作为属性配置文件,需要将SnakeYAML库添加到classpath下,Spring Boot对SnakeYAML库也做了集成,例如使用spring-boot-starter-web或spring-boot-starter 都会自动添加SnakeYAML库到classpath下。

    11.8K71发布于 2018-04-08
  • 来自专栏一个执拗的后端搬砖工

    springboot(9)-yaml

    要想使用YAML作为属性配置文件,需要将SnakeYAML库添加到classpath下,Spring Boot对SnakeYAML库也做了集成,例如使用spring-boot-starter-web或spring-boot-starter 都会自动添加SnakeYAML库到classpath下。

    78910发布于 2020-11-19
  • 来自专栏java技术大本营

    java工具之解析yaml文件

    基础依赖 这个工具是在已有的工具上进行封装的 gradle: compile group: 'org.yaml', name: 'snakeyaml', version: '1.25' maven: <dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>1.25

    9K10发布于 2020-02-26
领券