[漏洞分析] BlackCat CMS 1.1.1任意文件下载

来源:互联网 发布:002175东方网络股票 编辑:程序博客网 时间:2024/05/16 08:54

此漏洞编号为EDBID:37304

BlackCat是一款开源、易于使用、灵活的内容管理系统(CMS),默认语言为德语,使用时可以设置为英语。其1.1.1版本中存在任意文件下载漏洞。


一、漏洞复盘

首先在实验环境下安装该系统,安装完成后的登录界面如下


输入在安装过程中设置的登录凭证admin/$Admin1,成功进入系统


在浏览器上访问存在漏洞的php文件,在本例中为http://[HOST]//blackcat/modules/blackcat/widgets/logs.php?dl=../config.php,并且下载任意文件,浏览器显示如下


也可以在终端利用curl直接将要下载文件的内容显示出来
curl -sH 'Accept-encoding: gzip' "http://[HOST]/blackcat/modules/blackcat/widgets/logs.php?dl=../config.php" |gunzip -


综上可知,利用这个漏洞,可以下载网站的任意文件,造成信息泄露。


二、漏洞分析

漏洞位于[ROOT]\modules\blackcat\widgets\logs.php中的第73行~第100行


这段代码首先在第75行从URL中的dl参数中得到需要下载的文件的名称,

随后在第76行判断文件是否存在,

从78行到80行的意思是如果待下载的文件确实存在,那么在该文件所在路径下创建一个同名的zip文件。

之后在第81行判断压缩文件中是否存在错误,若没有,则进一步处理,即强制让浏览器发生下载动作,也就是从86行到100行的内容。

问题即出现在第75行,对于从dl参数中得到的待下载的文件名没有做任何过滤就与路径字符串进行拼接。因此文件名中存在路径切换字符时,就会使得用户能切换到任意路径下的任意文件,进而下载它们。


三、修复方法

可以检查参数dl中是否有../这类的路径切换字符,如有则发出警告。
也可以设定一个可下载文件名称的白名单,仅可下载名单内的文件。


0 0