记一次众测找源码到RCE

前言

某众测项目,一个多端入口系统

PC,APP,与及测试后台

上来就去后台摸了一下底

前端:react

认证授权:jwt token

框架:springboot+spring mvc+mybatis

文件存储:某云oss

很现代化的系统

转变思路

转眼一想,目标是某国企,这个系统也不是他们自己的业务,给内部员工用的,应该不会自己开发吧?

于是就想会不会用的是第三方公司软件,想办法把源码搞下来。

首先得明确这个系统是不是第三方的,前端是react,js,css等都用webpack打包好了,html页面没啥特别特征,翻了一下js看到了一个不是目标的域名

顺着域名,找到了这个公司的官网,上海某提供多端入口整套解决方案的公司,没有猜错,接着目标就变成了对这家公司进行信息收集。

摸到了:

github "target.com"搜了一下,找到了个仓库,一个运维同学写的自动化脚本,里面包含了内网的一些IP信息,配置信息

如:

accesskey:

有一个十分关键的是这家公司用的是docker容器部署,这还是上的微服务架构

各种容器的部署yaml

十分巧的是他们用的是某第三方docker镜像服务来存储镜像,外网可访问(运气爆棚)

账号密码Get到,直接docker命令登录上去,但很可惜没办法对仓库进行搜索,只能pushpull,但有上面的yaml配置,知道了镜像命名,碰撞即可

最终成功把最新镜像拉到手

然后起一个容器,用docker cp命令把源码拉出来

源码审计

先看一手第三方jar包,fastjson赫然在列,版本在可用范围内

定位代码用到的地方:

dns探测一下:

root权限很舒服。(这个接口十分隐秘,黑盒测感觉根本测不出来)

还有前面说的jwt问题,刚开始就想到是弱secret,但没有爆破,后面翻了源码还真是,六字符而且跟系统命名有关,直接伪造token,变身超级管理员。

还有xxe等一些问题,不一一细说

总结

对于识别vue/react的一些现代化系统,可以尝试js里面定位关键词,还有github搜docker镜像服务账号口令泄露也是一个不错的思路

点击收藏 | 5 关注 | 2
登录 后跟帖