您现在的位置:主页 > 水晶滴胶 >

水晶滴胶

Apache Log4j2远程命令执行漏洞检测防护技术研究

发布日期:2022-05-13 14:51   来源:未知   阅读:

  Apache Log4j2 是 Apache 的一个基于Java的日志记录工具,该工具可以控制日志信息输送的目的地为控制台、文件、GUI组件等,并通过定义每一条日志信息的级别,使其能更加细致地控制日志的生成过程。

  由于Apache Log4j2中存在JNDI注入漏洞,攻击者可设计一个数据请求发送给使用 Apache Log4j2工具的服务器,当该请求被打印成日志时就会触发远程代码执行。

  Log4j2对日志消息进行格式化时会判断是否存在“${”,并通过${prefix:name}语法解析${}内的变量获取prefix和name。在支持的prefix中只有jndi能够进行注入,所以当日志消息中存在

  substitute方法在解析${}里的变量时会截取第一个“:-”后面所有的字符串,如果lookup函数返回空,则“${}”以及里面的变量会替换为截取之后的字符串。处理${${::-j}}时,取出的prefix无法命中strLookupMap中的strLookup对象,所以lookup返回了null,最后处理${${::-j}}的结果为j。

  在java中,unicode和字符串效果是一样的,所以还可以用unicode编码的方式绕过字符串形式的payload的检测。

  如果使用了json库,例如fastjson,还可以使用十六进制的形式进行绕过检测。

  整理清楚漏洞原理后,检测思路自然就出来了。因为只有jndi可注入,所以如果要利用该漏洞RCE的话,必然要使用jndi,不管什么绕过手法,最终解析后的prefix都是jndi。

  使用睿眼攻击溯源系统的用户可登录更新平台输入机器码获取最新规则升级包进行检测。

  图 睿眼攻击溯源系统检测Apache Log4j2各种绕过手法返回搜狐,查看更多