1.漏洞描述
Apache Log4j2 是一款优秀的 Java 日志框架。阿里云安全团队向 Apache 官方报告了 Apache Log4j2 远程代码执行漏洞。由于 Apache Log4j2 某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。
由于 Log4j2 作为日志记录基础第三方库,被大量 Java 框架及应用使用,只要用到 Log4j2 进行日志输出且日志内容能被攻击者部分可控,即可能会受到漏洞攻击影响。因此,该漏洞也同时影响全球大量通用应用及组件,例如:
- Apache Struts2
- Apache Solr
- Apache Druid
- Apache Flink
- Apache Flume
- Apache Dubbo
- Apache Kafka
- Spring-boot-starter-log4j2
- List item
- ElasticSearch
- Redis
- Logstash
;
步骤3:
添加log4j2需要的配置文件,log4j2.xml,而且log4j2版本的日志不再支持properties的配置。
<properties>
<!-- 本地测试日志写路径-->
<property name="LOG_HOME">/data/home/logs/***</property>
<property name="FILE_NAME">XXXName</property>
</properties>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} |-%-5level %logger{80} - %msg%n" />
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
</Console>
<RollingFile name="info-rolling" fileName="${LOG_HOME}/${FILE_NAME}.log"
filePattern="${LOG_HOME}/${LOG_FILENAME}.%d{yyyy-MM-dd}.log"
immediateFlush="false">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} |-%-5level %logger{80} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="24" modulate="true"/>
</Policies>
<Filters>
<ThresholdFilter level="info" onMatch="ACCEPT"
onMismatch="DENY" />
</Filters>
<DefaultRolloverStrategy max="15" />
</RollingFile>
<RollingFile name="error-rolling" fileName="${LOG_HOME}/${FILE_NAME}.err"
filePattern="${LOG_HOME}/${LOG_FILENAME}-%d{yyyy-MM-dd}.err"
immediateFlush="false">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} |-%-5level %logger{80} - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="24" modulate="true"/>
</Policies>
<Filters>
<ThresholdFilter level="warn" onMatch="ACCEPT"
onMismatch="DENY" />
</Filters>
<DefaultRolloverStrategy max="15" />
</RollingFile>
</Appenders>
<Loggers>
<!-- <Logger name="com.cssweb.test.app" level="trace" additivity="true">
<AppenderRef ref="running-log" /> </Logger> -->
<logger name="org.springframework" level="INFO"></logger>
<logger name="org.mybatis" level="INFO"></logger>
<Root level="all">
<!-- 这里是输入到控制台-->
<AppenderRef ref="Console" />
<!-- 这里是输入到文件,很重要-->
<AppenderRef ref="info-rolling" />
<AppenderRef ref="error-rolling" />
</Root>
</Loggers>
步骤4:
前面三步完成的话,其实可以启动试试,但是通常情况下不会成功,
因为项目里面还有其他的组件依赖有使用到低版本的日志依赖。会导致我们新版本的日志不起作用
步骤5:
去掉低版本的日志依赖
打开maven工具栏,选中其中需要编译的项目,然后点击show Dependencies然后可以看到整体依赖图哦!
再点击Exclude去掉低版本依赖哦!
这里需要一个个去掉低版本的日志依懒即可!
完结…亲测有用,看到这里麻烦点个赞哦!-------------------------------------------------------------------------------------------------