Apache Log4j2 是一款优秀的 Java 日志框架,大量的业务框架都使用了该组件。
2021 年 11 月 24 日,阿里云安全团队向 Apache 官方报告了 Apache Log4j2 远程代码执行漏洞,这个漏洞触发条件低,危害大。
12 月 10 日凌晨,Apache 开源项目 Log4j 的远程代码执行漏洞细节被公开,由于 Apache Log4j2 某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。
CVE 编号:CVE-2021-44228
受影响版本:log4j2 2.0-beta9~2.14.1
这一则消息一出,让很多安全工程师难以入眠,立刻起身进入“战斗防御状态”。这就让我想到了最近的浙江疫情,医护人员连夜紧急到位进入“战斗状态”。
(PS:最近疫情高发,小伙伴们一定要勤洗手、带口罩、勿乱跑哦!)
除了各企业的安全人员,各安全大厂商也是立刻开始进行漏洞真实性的验证,并紧急通知用户进行规则升级以抵御最新漏洞,避免漏洞危害严重扩散。
到底有多严重呢?我随便说一个,自己感受一下:
企业打补丁可能需要几小时,甚至要花上好几天,但黑客攻击,却只需要几分钟时间!到底是打补丁更快,还是黑客攻击更快,就不用我多说吧?
Apache Log4j2 并不是一个特定的 Web 服务,而是一个用于处理日志的第三方日志框架(库),任何 Java Web 都可能使用到该日志框架,使用 Log4j2 的真的超级多,多到数不清。
真要数出个一二,不如数没有使用 Log4j2 的来得更快一些。可想而知,被攻击后,波及范围有多广了。
那如何复现这个漏洞,并修复呢?
我们可以通过很多基于 Java 开发的 Web 服务来复现这个漏洞,只要该服务使用到 log4j2 库(漏洞影响范围内的版本)即可,比如 Apache Solr 。
触发漏洞的方法非常简单,只需要向 Solr 管理员接口的 action 参数发送 Payload ,由于该接口会调用 log4j 记录日志,因此会触发漏洞执行。该接口如下:
http://127.0.0.1:8983/solr/admin/cores?action=
接下来使用 DNSlog 来构造验证 Payload。
DNS Log 对于大部分渗透测试的同学来说,应该会比较熟悉,经常被用于测试盲打盲注类的漏洞。
如果你不清楚,可以简单理解为:我们获取一个临时的域名,如果远程服务器尝试访问该域名,就会在 DNS 上留下访问记录,此时我们可以通过查询该记录获取到一些外带信息。
当然了, DNS log 只是作为验证漏洞是否存在的方法之一,并不是唯一解。
蓝桥云课小小地蹭了个热度图片,推出了《 Apache Log4j 2 远程代码执行漏洞详解》,用动手实验的方式来帮助大家复现 Apache Log4j2 远程代码执行漏洞。
本次课程会详细介绍该漏洞原理、利用方式、挖掘方式和修复方法,并包含可动手操作的在线实验环境,帮助你更加深刻的理解该漏洞。
重点来了!即刻起,免费学!
Apache Log4j 2 远程代码执行漏洞
现在,我们来说说漏洞的挖掘方法和工具。
漏洞挖掘可以分别从白盒和黑盒两个角度进行:
- 如果你是审查自己的应用是否受到 log4j2 漏洞影响,白盒测试是你应该首选的方式,能够帮助你从源码层面做最全面的检查。
- 黑盒测试有着很大的不确定性,因为从黑盒角度来说,任何一个参数都可能会触发 log4j2 漏洞。因此黑盒测试的准确性,很大一部分取决于测试到的参数是否全面。
我推荐两款工具,供大家参考:
1、白盒测试推荐使用下面这个工具进行源代码扫描:
CVE-2021-44228-Scanner
可以根据平台下载对应的版本:
2、黑盒测试推荐使用下面这个工具:
BurpSuite Pro 插件
打开 BurpSuite Pro,切换到 Extender -> BApp Store,在右侧的搜索框中搜索 log4,可以看到两个插件(截止 2021 年 12 月 22 日):
- log4shell Everywhere:被动扫描插件
- log4Shell Scanner:主动扫描插件
分别安装以上两个插件,然后在 Active Scan 和 Passive Scan 中便会自动检查 log4j 漏洞,如果有发现漏洞,结果会在 Dashboard 中展示。
好了,今天的 Apache Log4j 2 远程代码执行漏洞就分享到这里了。如果你想要复现此漏洞,并自己实操练习的话,可以戳下方链接免费体验哦~
Apache Log4j 2 远程代码执行漏洞