JDK 17+ FreeMarker SSTI:从 CVE-2023-4450 复现引出 MethodHandle 句柄、named module 机制研究
积木报表这个洞已经公开很久了,就是一个 FreeMarker SSTI ,之前复现的时候用了 1.6.0 版本测试可以执行命令 也可以打内存马就把没继续管了,最近听到不少关于这个洞的讨论,可以用下面这个 payload 执行命令,但是不能注入内存马,所以决定再来重新跟一下这个洞,没想到收获颇丰。
积木报表这个洞已经公开很久了,就是一个 FreeMarker SSTI ,之前复现的时候用了 1.6.0 版本测试可以执行命令 也可以打内存马就把没继续管了,最近听到不少关于这个洞的讨论,可以用下面这个 payload 执行命令,但是不能注入内存马,所以决定再来重新跟一下这个洞,没想到收获颇丰。
RASP 越来越多了,应用最多的是 Java 场景,其他语言大多是用的 c 实现了类似功能不参与讨论。从 JDK 1.5 开始,Java 提供了一种动态代理机制,允许代理检测在 JVM 中运行的服务,通过插桩的方式修改方法的字节码。简单来说就是 hook 系统的关键函数实现防护,通常将这类函数称为 Sink 点,参数来源函数称 为 Source 点,产品形态决定了其在绕过思路上与 WAF 这类产品有很大的不同,举一些例子: