Bludit cms 后台RCE漏洞

漏洞分析

第一次听说这个cms,也是atao师傅告诉我的,源码地址-https://bludit.com/

新奇的地方在于不依赖数据库,数据以json形式储存在文件里,我一开始的思路就是去找他的文件写入的点。

入口文件如下。

$urlinit.php 中定义

此文件只有声明常量,包含php类文件。

在edit-category/general路由 中,可以修改数据,然后写入文件中,对应的文件处理如下。

直接将$_POST整个数组传入,感觉有可以利用的点,一系列的处理如下。

这里会将一些参数做一个strip_tags 的处理,但写到newKey里。

他确实写进去了,但发现在save方法的时候,拼接了第一行defined('BLUDIT')or die('xxx');,妈的。

这几乎在每一个文件中都存在,除过入口文件。而且此常量,也只在入口文件中声明,这就导致我们即使可以通过一些拼接手段注入代码,在没有文件包含的情况下也没有办法利用的,不过我没找见。

无能为力只能写个存储xss了。

后台提供了安装插件的方法。

不过插件都是在本地的bl-plugins文件夹里,然后通过activate将其加载进来。

此处的 $plugins['all'] 是 admin.php 文件中包含了 这个文件

然后此文件中实例化了所有的插件类,将其存入数组中。

在site.php 中有如下调用

这里会遍历存在该type的插件,并调用其beforeall方法。

但其实只会调用已经activate的插件的beforeall方法,所以我们需要先在后台把对应插件下载下来。

在插件中找到一个可以利用的。

跟进downloadfiles方法。

跟进TCP::download,

就是从url获取内容,然后写入目的文件中,最后解压到目的文件所在的目录。

也就是 图片中的 romote-content 目录中,那么我们就可以构造一个压缩包在vps上,然后修改source值就可以写入木马文件了

这个漏洞感觉跟 极致cms后台的一个漏洞很相似。修改source为我们的恶意服务器,并上传带有木马的压缩包。

save之后 trywebhook

这里的try webhook就是把webhook写入配置文件中,然后访问对应webhook的路由,就会去执行该插件的beforeall方法,从而导致我们的恶意文件被下载解压。

成功getshell

点击收藏 | 3 关注 | 2
  • 动动手指,沙发就是你的了!
登录 后跟帖