背景
2021年12月初,极光安全团队通过安全威胁舆情发现Apache Log4j2 存在远程代码执行漏洞,迅速对该漏洞危害性评估和涉及面漏斗分析,制定了应急响应方案,对涉及到的代码组件类和主机资产类快速整理,外部安全扫描对该漏洞进行优先级扫描,避免威胁进一步扩大和阻断,对内推动该漏洞版本组件的修复进度,持续关注该漏洞组件的后续发展。
本文通过构造环境复现漏洞,了解这个漏洞产生的原因,分析修复漏洞方法,研究学习背后的相关技术。
漏洞影响
Log4j2作为java代码项目中广泛使用的开源日志组件,漏洞影响范围极广,堪称史诗级、核弹级漏洞。
直接和间接依赖Log4j2的开源组件总计有17万个,也就是说有至少17万个开源组件是受Log4j2漏洞影响GitHub作为全球最大的开源代码托管平台,抽样分析发现至少5.8%的java开源项目受该漏洞影响
在java语言的开源组件流行度排行中,Log4j2列第13位
漏洞复现
利用漏洞攻击过程
复现代码
github地址https://github.com/zheng93775/log4j2-attack 按照README.md里面的步骤可以完整运行整个流程模块说明
模块 说明
business-app 正常的业务应用
marshalsec 攻击方搭建,用于启动LDAP服务的开源工具
evil-http-server 攻击方搭建,启动Http服务,提供恶意代码下载
evil-http-server
首先我们准备一个含有恶意执行代码的类,恶意代码执行时会在Windows下启动计算器
使用SpringMVC的Controller,http请求返回的相应是恶意类的二进制字节码
编译后,启动服务,监听9090端口