任意文件读取
首先进行资产搜集,发现其子域名存在一个系统
然后使用findsometing,发现有大量接口,目测是个api接口
随便寻找一个接口进行测试,
get参数添加id后发现很明显存在未授权访问,然后查看其他接口
发现其存在apis/xxxxxxx/download?filePath接口,于是便可以尝试任意文件读取,发现成功下载etc/passwd文件
接下来就想着去读取ssh私钥,但是未能成功
由于是攻防演练,任意文件下载是不得分的,于是继续想着如何进行渗透,最好获取主机权限
任意文件下载ssh私钥失败后,继续进行信息搜集,寻找有用信息。
返回之前的未授权接口,发现了一个很好的接口apis/xxxxx/env
发现这个是一个spring boot的网站并且存在ak/sk的信息
获取ak/sk
众所周知,spring boot是以jar包的形式运行,ak/sk会存放在spring boot的application.properties 或 application.yml配置文件中
那么思路就是去获取application.properties 或 application.yml配置文件了
而spring boot的配置文件,在运行阶段,就早已打成jar包。
所以我们要获取application.properties 或 application.yml配置文件的话,就需要我们去获取到spring boot的jar包的源码,因此就需要确定jar包的路径
结合之前的任意文件下载,下载proc/self/cmdline文件,获取当前的进程
发现其运行了app.jar包,也就是网站的源码。然后猜测在当前路径,但是发现没有下载成功
然后往前一个目录下载app.jar
查看jar包
找到ak/sk信息
然后连接上云,拿下28个存储桶
然后获得大量个人敏感信息
后续使用想着获得权限,但是由于权限不够,没能直接接管
之后发现,还存在腾讯云ak/sk,然后直接可以接管腾讯云服务器
成功接管
后期进行代码审计
/xxxxx/download存在任意文件下载
这里没有进行过滤,可以直接进行拼接,然后读取/etc/passwd,并且看到@ApiOperation
@ApiOperation 是一个用于描述 API 操作的注解,所以通过代码可以知道这个代码实际上定义了一个api接口
然后通过这个api接口可以未授权访问,进行任意文件读取的操作,也是漏洞产生的原因