ApacheLog4j2远程代码执⾏漏洞分析+检测+防护
apachelog4j2漏洞分析:
Apache Log4j2是⼀款开源的Java⽇志框架,被⼴泛地应⽤在中间件、开发框架与Web应⽤中,⽤来记录⽇志信息。由于
Apache Log4j2某些功能存在递归解析功能,未经⾝份验证的攻击者通过发送特别构造的数据请求包,可在⽬标服务器上执⾏任意代码。漏洞PoC已在⽹上公开,默认配置即可进⾏利⽤,该漏洞影响范围极⼴,建议相关⽤户尽快采取措施进⾏排查与防护。
根据Iog4j的⽤途和复现的情况来看,攻击⼊⼝取决于Iog4j从线上业务的哪些地⽅取数据放⼊ ,所以没有固定请求路径。另外由于线上web业务的任何数据都可能写⼊Iog4j,甚 ⾄⼀些pre-auth的地⽅,⽐如注册、登录,所以这个漏洞的影响可能会被放⼤到未授权命令执⾏。
检测:
⼈⼯检测
1、相关⽤户可根据Java jar解压后是否存在org/apache/logging/log4j相关路径结构,判断是否使⽤了存在漏洞的组件,若存在相关Java程序包,则很可能存在该漏洞。
2、若程序使⽤Maven打包,查看项⽬的l⽂件中是否存在下图所⽰的相关字段,若版本号为⼩于2.15.0,则存在该漏洞。
3、若程序使⽤gradle打包,可查看adle编译配置⽂件,若在dependencies部分存在org.apache.logging.log4j相关字段,且版本号为⼩于2.15.0,则存在该漏洞。
4、检测Ivy依赖版本是否低于 2.15.0
5、 检测SBT依赖版本是否低于 2.15.0
若没有使⽤上述⼯具,那么可以全局搜索log4j的相关jar包。
受影响版本:
Apache Log4j 2.x <= 2.14.1
已知受影响应⽤及组件:
Apache Solr
Apache Flink
Apache Druid
srping-boot-strater-log4j2
更多组件可参考如下链接:
不受影响版本:
Apache log4j-2.15.0-rc1
防护:
1、升级
2、流量拦截
rulel $(jndi:ldap://
rule2 $(jndi:rmi://
以上流量特征可能出现在流量中的任何地⽅,也包括各种类型的请求(GET、POST等),所以需要对 整个请求流量做特征匹配。
以上正则对业务中的正常jndi流量⽆影响(恶意流量须包含${jndi:rmi或${jndi:ldap,正常 业务jndi流量通常只包含rmi://、 ldap:// ),但是如果你的正常流量也包含上述特征请慎⽤。
3、临时防护
从官⽅给的信息和复现情况来看,利⽤⼿段是jndi注⼊⽆疑,jndi注⼊⽆⾮ldap、rmi,需要外连请 求Idap-server/exp-server,禁⽌外连能在⼀定程度上缓解,但是不能防御攻击者已控其他内部服务 器的情况。此外,JDK11.0.1、8u191、7u201、6u211或者更⾼版本默认是⽆法利⽤JNDI注⼊,JDK6u141、7u131、8u121或者更⾼版本⽆法利⽤RMI注⼊,⽹ 上的⼀些bypas s⽅法也是依赖本地特定
的lib(相当于了新的gadgets),所以总结:
1、禁⽌使⽤Iog4j的服务器外连(⽇志服务器正常不需要外连)
并在边界对dnslog相关域名访问进⾏检测。
部分公共dnslog平台如下:
ceye.io
dnslog.link
dnslog
dnslog.io
<
awvsscan119.autoverify
burpcollaborator
s0x
2、建议JDK使⽤⾼版本
3、添加jvm启动参数:-Dlog4j2.formatMsgNoLookups=true
4、在应⽤classpath下添加配置⽂件,⽂件内容为:log4j2.formatMsgNoLookups=true
5、将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。