前言

12月9日爆出来的log4j2远程执行漏洞,因为影响巨大,网上新闻和介绍特别多,这里不多说,间接使用log4j2的第三方也不少,等官网修复不知道是否赶得上,直接采用暴力删除jndilook.class最简单

1、直接删除漏洞class

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash
set -eu
for JAR_PATH in "$@"; do
	if [[ $JAR_PATH != *log4j-core*.jar ]] || [ -e "$JAR_PATH.bak" ] || ! [ -f "$JAR_PATH" ]; then
		echo "Skipped $JAR_PATH"
		continue
	fi
	echo "Processing $JAR_PATH"
	cp -p "$JAR_PATH" "$JAR_PATH.bak"
	zip -q -d "$JAR_PATH" org/apache/logging/log4j/core/lookup/JndiLookup.class
done

2、Apache log4j2漏洞官方说明

官方漏洞说明: https://logging.apache.org/log4j/2.x/security.html

3、危害等级

高危

4、影响

可以远程通过 jndi 漏洞执行任意命令(CVE-2021-44228),包括删服务器,删库,下载木马,挖矿,服务器接管等等后果

5、范围

巨大,很多优秀的第三方开源项目有间接使用 log4j2,比如已知的如下部分清单: 在线清单: https://log4j2.huoxian.cn/layout

Kafka 
Flink 
Hadoop Hive	 
ElasticSearch 
Druid
HikariCP
Solr
Logstash 
Redis Client(redisson\jedis\lettuce)
Spring-Boot-strater-log4j2
mssql-jdbc
mybatis-plus
mybatis-generator-plugin
springfox-swagger2
netty-socketio
hystrix
zuul
zipkin 

6、排查方式

利用工具搜索
下载地址:https://github.com/logpresso/CVE-2021-44228-Scanner

7、logback漏洞

logback低于1.2.9版本也有CVE-2021-42550漏洞,不过这个漏洞相比前面的log4j2影响小很多,记录下关键因素
漏洞说明: https://cve.report/CVE-2021-4
官方说明: https://logback.qos.ch/news.html

7.1、危害等级

中级

7.2 漏洞配置

初始配置demo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<configuration scan="true" scanPeriod="10 seconds" debug="true">  
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">  
          <encoder>  
             <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>  
          </encoder>  
       </appender>  
    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">  
        <connectionSource class="ch.qos.logback.core.db.JNDIConnectionSource">  
            <jndiLocation>ldap://127.0.0.1:1389/erqtcd</jndiLocation>  
        </connectionSource>  
    </appender>  
  
       <root level="DEBUG">  
          <appender-ref ref="STDOUT" />  
       </root>  
</configuration>

存在漏洞的配置demo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<configuration scan="true" scanPeriod="10 seconds" debug="true">
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
          <encoder>
             <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
          </encoder>
       </appender>
    <insertFromJNDI env-entry-name="ldap://127.0.0.1:1389/erqtcd" as="appName" />  

   <root level="DEBUG">
          <appender-ref ref="STDOUT" />
       </root>
</configuration>

7.3 漏洞说明

漏洞复现说明: https://github.com/cn-panda/logbackRceDemo

7.4 漏洞触发条件

1、业务接口有文件上传漏洞,
2、logback.xml配置了动态加载
3、logback.xml文件有写权限,即可以被覆盖
4、然后攻击人员可以通过文件上传漏洞 上传包含开启jndi的配置文件,剩下的注入漏洞跟log4j2一样了,可以执行任意命令

注:如果杜绝了步骤1的文件上传漏洞,这个中级漏洞就很难触发

8、log4j1.X的漏洞

log4j1.X 已经2015年停止维护了,不过如果还有历史项目在使用的话,可以参考步骤1删除下面的class

1
org/apache/log4j/net/JMSAppender.class
1
zip -q -d log4j-*.jar org/apache/log4j/net/JMSAppender.class