前言
某众测项目,一个多端入口系统
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命令登录上去,但很可惜没办法对仓库进行搜索,只能push
和pull
,但有上面的yaml
配置,知道了镜像命名,碰撞即可
最终成功把最新镜像拉到手
然后起一个容器,用docker cp
命令把源码拉出来
源码审计
先看一手第三方jar包,fastjson赫然在列,版本在可用范围内
定位代码用到的地方:
dns探测一下:
root权限很舒服。(这个接口十分隐秘,黑盒测感觉根本测不出来)
还有前面说的jwt问题,刚开始就想到是弱secret,但没有爆破,后面翻了源码还真是,六字符而且跟系统命名有关,直接伪造token,变身超级管理员。
还有xxe等一些问题,不一一细说
总结
对于识别vue/react的一些现代化系统,可以尝试js里面定位关键词,还有github搜docker镜像服务账号口令泄露也是一个不错的思路
转自:乌云安全