log4j2远程代码执行漏洞本地复现

如题所述

本文仅供学习参考,请勿在真实环境进行网络攻击行为。

一、背景

Log4j 2 是 Java 中应用非常广泛的一个日志框架,在 2021 年底,一个名为 CVE-2021-44228(也称为 Log4Shell)的严重漏洞被发现,该漏洞被CVSS评为10分最高级别。网络攻击者利用这个漏洞不需要服务器密码就可以访问并操作服务器,攻击方式非常简单,技术门槛低,危害极大。受影响版本:Apache log4j2 2.0 - 2.14.1 下面先简单看一下攻击原理,然后直接开始操作。

二、攻击原理

假设现在有个网站,当用户登录时,正常请求路径如下:

如果应用服务端的登录接口中使用漏洞版本的log4j2打印请求参数的日志,就有可能被注入。如图所示:

三、复现步骤

以下代码已放在github仓库:log4j漏洞复现代码

1. jdk版本

作者使用jdk1.8.0_161和1.8.0_42复现成功,1.8.0_301复现失败。

JDK 6u211、7u201、8u191之后:增加了com.sun.jndi.ldap.object.trustURLCodebase选项,默认为false,禁止LDAP协议使用远程codebase的选项,把LDAP协议的攻击途径也给禁了。

使用1.8.0_301的情况下,将trustURLCodebase属性设置为true也没复现成功,原因暂未深究。

2. 模拟被攻击的应用服务器

写一个springboot项目,模拟被攻击的应用服务端登录接口,接口中打印了userName参数日志,启动此项目。端口为8080。访问地址为 127.0.0.1:8080/login

3. 编写恶意代码

写一个在应用服务端执行的恶意代码,这里用删除一个服务器文件做演示,实际上可以使用反弹shell等做更多有害操作。编译这个类,生成class文件。

4. 启动http服务

启动一个http服务,使其可以访问上一步生成的.class文件,可以使用python启动一个http服务,cmd进入.class文件的目录,然后执行以下命令,使用 127.0.0.1:4444/Exploit....能够访问说明一切正常。如果没有python环境也可以使用nginx等,只要能访问到Exploit.class即可。以下是使用python启动http服务的命令和截图:

5. 启动LADP服务

具体作用可以参考上面的原理图。这里直接使用github上的代码 GitHub - mbechler/marshalsec来运行ladp服务。如图所示:编译、运行启动。

运行ladp服务的命令:

上面命令中的 127.0.0.1:4444/#...是第四步中的地址,根据自己的情况可自行修改,1389是ladp服务默认端口,无需修改。

6. 发起攻击请求

在C盘建一个1.txt文件,使用恶意构造的参数访问登录接口。

切换到ldap服务的控制台,可以看到日志,说明登录接口中的log4j已经访问ladp服务了。

切换到http控制台,可以看到请求日志,说明应用服务器已经请求http服务器加载Exploit.class。

在Exploit源码中debug,可以确认恶意代码已经执行,漏洞成功复现。

四、注意事项
温馨提示:内容为网友见解,仅供参考
无其他回答

log4j2远程代码执行漏洞本地复现
以下代码已放在github仓库:log4j漏洞复现代码 1. jdk版本 作者使用jdk1.8.0_161和1.8.0_42复现成功,1.8.0_301复现失败。JDK 6u211、7u201、8u191之后:增加了com.sun.jndi.ldap.object.trustURLCodebase选项,默认为false,禁止LDAP协议使用远程codebase的选项,把LDAP协议的攻击途径也给禁了。

lo4j2 漏洞复现过程及解决方案
可以看到,我是通过 spring-boot-starter-log4j2 来间接引用的 log4j2 的。引入的具体包版本是这样的:我们先写一段想要被执行的程序:publicclassExploit{publicExploit(){try{System.out.println("执行漏洞代码");String[]commands={"open","\/System\/Applications\/Calculator.app"};Processpc=Runtime....

[漏洞复现] apache-log4j_2.x-2.15.0-rc2_rce_cve-2021-44228_百度知 ...
近日,CNVD平台报告了Apache Log4j2的严重安全漏洞(CVE-2021-44228),涉及远程代码执行(RCE)风险。攻击者可利用此漏洞在未经授权的情况下对系统执行恶意代码,导致服务器权限被侵犯。Log4j2,作为Java日志组件的升级版本,因其广泛应用于业务系统中的日志记录,使得这个漏洞显得尤为关键。2021年11月24日,...

高危Bug!一众大厂中招,Apache Log4j2 远程代码执行漏洞:官方正在...
Apache Log4j2 远程代码执行漏洞的详细信息已被披露,而经过分析,本次 Apache Log4j 远程代码执行漏洞,正是由于组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。Apache Lo...

Apache Log4j2远程代码执行漏洞
一、情况分析 近日,监测发现互联网中出现 Apache Log4j2 远程代码执行漏洞。攻击者可利用该漏洞构造特殊的数据请求包,最终触发远程代码执行。由于该漏洞影响范围极广,建议广大用户及时排查相关漏洞。Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架...

log4j2原理分析及漏洞复现
复现漏洞的过程涉及攻击者发送包含恶意URL的日志信息,服务器解析后触发远程文件下载和执行。漏洞利用通常在靶机上进行,如Kali系统,通过新老版本的工具包,输入payload并监听回显,成功执行反弹shell命令。修复这一漏洞的关键在于更新Log4j2版本至安全版本,以及在开发中加强输入验证,限制日志中对JNDI的使用,...

Log4J2漏洞原理详解及复现
Log4J2漏洞原理深度解析及实战复现环境搭建 首先,我们基于vulhub环境进行搭建,通过命令行启动容器:docker-compose up -d。确认服务运行良好后,访问8983端口,检查是否成功连接。漏洞原理深入剖析 Apache Log4j2作为开源日志管理库,为Java应用程序提供强大日志功能。它允许使用logger.info("{}", input)...

修复KubeSphere 内置 Jenkins 的 Apache Log4j2 漏洞
分析漏洞,发现漏洞目标使用的 Jenkins 版本为 2.319.1 和 Jetty 版本为 9.4.43.v20210629,这与漏洞报告中的结果一致。初步判断问题出在 Jenkins 使用的 log4j-over-slf4j 包,该包可能引起远程代码执行漏洞。通过替换 jar 包并重启 devops-jenkins,重新执行漏洞扫描,该漏洞未再次出现。此外,还...

面对Log4j2 漏洞,安全人都做了什么?
1. Log4j2漏洞复现在Log4j2漏洞刚曝光时,就有各种复现实例出现,主要涉及利用JNDI注入漏洞执行任意代码。复现的过程通常包括两部分:一是基于Log4j2开发的、自身存在漏洞的代码实现;二是搭建JNDI服务,如使用marshalsec、JNDI-Injection-Exploit等工具快速启动RMI或LDAP服务。这类实现与Log4j2漏洞本身关系不大...

阿里云回应未及时上报漏洞被处罚(阿里云官方最新回应)
IT之家了解到,本月阿里云计算有限公司发现了 Java 日志库的阿帕奇 Apache Log4j2 组件存在远程代码执行漏洞,并将漏洞情况告知阿帕奇软件基金会。这一组件是基于 Java 语言的开源日志框架,被广泛用于业务系统开发。漏洞编号为:CVE-2021-45046。12 月 17 日,工信部网络安全管理局发布关于阿帕奇 Log4j2 ...

相似回答
大家正在搜