metersphere 远程代码执行分析
diff 补丁发现对 plugin 做了授权
方法很少,那多半都会在上传文件这
source 点在我们上传的一个 jar 文件,结构如下,init 方法写有我们的恶意代码
跟进 editPlugin,利用 fileUtil 对我们的文件进行写入服务器
跟进 getmethod,这里的 path 不可控,filename 是我们传入的文件名
先是 loadjar 热加载进入 classpath,注意这里我们便可以往 classpath 中添加任何的类与配置文件
跟进 getSubClass 发现会根据我们传入的文件名 load 一个配置文件,那么我们传入 test.properties.jar,会解析 test.properties 配置文件,而我们上传的 jar 会进行热加载,所以这里我们将 jar 中添加一个 test.properties 便可以控制 inPro
后面根据 inPro 的键值获取相关 Class 类,这个类名我们可控,类文件也可控,只要后面实例化我们便可以执行任意代码
遍历类,进行实例化,并调用了 init 方法,完成 rce
而 customMethod 接口同样会调用 customMethod 方法,恶意代码也可写到此方法中
整个利用比较简单,官方也只是将相关接口加入了权限验证,估计认为这只是一个正常功能