glxcms漏洞披漏

cms简介

Gxlcms新闻系统是一个以php+mysql进行开发的新闻类cms内容管理系统。
Gxlcms新闻系统的优势:前台与后台采用隔离方式,模板化设计,让只要你会前端就可以做一个新闻网站!后台设计简单明了,小白用户一看就会明白!程序功能也非常完善!
1.目前程序支持三种路由模式:静态生成,伪静态,动态;
2.支持两种存储模式:本地存储,FTP存储
3.接入百度主动推送功能!让你每篇新闻/资讯都可以及时被百度发现
4.图片水印功能:只要开启图片水印,不管是标图图片或者是内容图片统统添加水印,水印功能支持9宫格设计,让你可以随意把图片水印加到任意地方
5.数据库一键备份/还原,让你可以轻松的把网站迁移到任何服务器上
6.缓存功能:模板缓存,数据库缓存,网站页面缓存
7.友情链接:支持图片链接和文字链接
8.广告模块:只要后台添加广告后,全部js生成到前台,让你不用费事修改模板
9.采集功能,我们支持火车头采集,火车头接口已经在插件中心里面,只需要你下载后,就可以采集上万新闻内容,为了防止重名新闻,我们对接口做了细腻化的功能,支持入库重名判断,当有重名新闻自动过滤
10.扩展功能:扩展性,可以在插件中心下载,招聘模块,图集模块,会员中心模块,交友模块等等模块进行安装(开发中)
源码下载地址:
Demo地址:
官网更新补丁链接:待补充

漏洞详情:

1、后台sql注入漏洞(CVE-2018-18488)

漏洞分析

从\lib\admin\action\dataaction.class.php文件中处理数据库备份方法可知:
$table是从$_POST[‘ids’]中传入,且可控。然后,在32行代码中与TRUNCATE TABLE 拼接存入sql文件,然后在后续导入还原功能中执行,因此我们可以控制生成的sql文件,并且执行任意sql语句。
图1
图2
构造sql注入语句:

1
2
ids%5B%5D=gxl_actor`;
select sleep(3);--%20

我们发送数据包后,生成的sql文件如下所示:
图3
然后在进行备份还原:
图4
可看到延迟,我们注入select sleep(1)后通过sql备份还原功能执行sql文件:
图5
因此判断存在注入。

修复建议:

对ids参数值进行过滤

2、前台任意sql备份文件下载:(CVE-2018-18487)

漏洞分析

从\lib\admin\action\dataaction.class.php文件中处理数据库备份方法可知生成备份文件的方法如下:
图6
看到mt_rand函数:
php官网
先知社区

然后结合cms的sql文件生成代码:
Sql文件名字:年月日_随机数_1.sql

通过随机数值来爆破种子的过程,外国朋友写了一个工具:php_mt_seed(官方使用说明:http://www.openwall.com/php_mt_seed/README )。使用工具获得随机数,拼接sql文件名称。
然后在管理员未修改源码目录的情况下访问默认路径即可未授权下载备份的sql文件:
图9

修复建议:

可参考phpcms小于V9.6.2 authkey泄露的修复方式在每次生成随机数之前都手动播种一次,
或者采用时间戳的方式。

参考链接:https://xz.aliyun.com/t/31

-------------本文结束感谢您的阅读-------------