MKCMS漏洞合集
简介及安装
MKCMS5.0 是一款基于 PHP+MYSQL 开发制作的专业全自动采集电影网站源码。程序不需授权上传直接使用 , 自动更新电影 , 无人值守! 完整的会员影视中心 后台可对接卡盟 可以设置收费观看模式。
下载地址:链接:https://pan.baidu.com/s/12HsPtKN8ECIAv3QNy6rSwg
提取码:zkaq
源码放在 phpstudy 根目录下。
访问:http://127.0.0.1/MKCMS5.0/install/

漏洞复现
前台 sql 注入
漏洞出现在 /ucenter/reg.php 第 7-19 行:
册用户名时 $username 参数传到后台后经过 stripslashes() 函数处理,而 stripslashes() 函数的作用是删除 addslashes() 函数添加的反斜杠。
当前页面无输出点,只是返回一个注册 / 未注册(通过 if 判断 true 或者 false),可以使用布尔盲注来解决这个问题。
POC:
任意用户密码重置
漏洞出现在 /ucenter/repass.php 第 1-44 行:
本质上来说此处是一个逻辑问题,程序未通过邮箱等验证是否为用户本身就直接先在第 13-14 行把用户密码重置为 123456 了,根本没管邮件发送成功没有。

此处过滤了单引号,所以无法通过然后邮箱账号进行重置
漏洞修复
1. 注册处的注入可像密码找回处一样,过滤一下就 OK。
2. 找回密码处可修改为如下代码:
增加一个生成随机密码的函数,将把新密码更新到数据库的流程放到发送邮件成功后即可。
MKCMS6.2 漏洞合集
简介及安装
米酷影视管理系统是一套专为不同需求的站长而设计的影视管理系统,灵活,方便,人性化设计简单易用是最大的特色,是快速架设视频网站首选,只需 3 分钟即可建立一个海量的视频讯息的行业网站。
下载地址:链接:https://pan.baidu.com/s/1zJ0zDxLdblkM1DHxMZHr3w
提取码:zkaq

漏洞复现
验证码重用
/admin/cms_login.php 验证码处的逻辑如下,比较 session 中的验证码和输入的是否一致,不一致就进入 alert_href,这个 js 跳转,实际是在刷新页面
跳转后就会刷新验证码,然而我用的是 burp,默认是不解析 js 的
全局搜索这个 $_SESSION[‘verifycode’],发现只在 /system/verifycode.php 有赋值,也就是说,如果使用验证码后,我们不跟随 js 跳转,就不会重置验证码,验证码也就能被重复使用了。
前台注入:/ucenter/repass.php
历史漏洞中,在 /ucenter/repass.php 有个越权修改密码的洞(CVE-2019-11332),跟进去发现原来还有注入,以下是分析过程。
前面说到全局对 $_POST 存在 addslash 的过滤(加 \ 转义),上面又把参数给 stripslashes 了 (去掉 ), 那么这里就是一个注入了。
前台注入:/ucenter/active.php
/ucenter/active.php?verify=1 存在注入
sqlmap 直接跑即可

前台注入 :/ucenter/reg.php
/ucenter/reg.php 的 name 参数,存在注入。
任意用户密码找回(密码可被穷举)
这个问题主要是 /ucenter/repass.php 代码里,找回密码的逻辑有问题,第 10 行查询到 username、 email 能对应上之后,14 行就直接重置密码了。。。而且密码的范围在 12 行有写,只有 90000 种可能,重置之后,burp 跑一下就可以了。(当然要结合验证码重用才能有效爆破)
备份文件路径可猜解
这个备份功能设置的是非常简单的文件名。/backupdata/mkk.sql
在 /admin/cms_backup.php
全局搜 DATA_NAME 变量,是安装时候设置的数据库名。
在 \install\index_2.php 中
默认的 DATA_NAME 值是 mkk
在 \system\data.php 中

MKCMS v7.0 sql 注入漏洞
漏洞简介
米酷影视管理系统是一套专为不同需求的站长而设计的影视管理系统,灵活,方便,人性化设计简单易用是最大的特色,是快速架设视频网站首选,只需 3 分钟即可建立一个海量的视频讯息的行业网站。
米酷 CMS v7.0.3 版本 admin/model/admin_edit.php、ucenter/reg.php 等文件存在漏洞,攻击者可以利用漏洞进行 sql 注入攻击。
前台注入漏洞
漏洞分析
在 ucenter/reg.php 这个文件中,第 9 行处对 $username 这个参数进行了查询拼接。
但是在第 7 行处,$username 的值是来自于 POST 传递的 name 参数,当 name 参数到达 reg.php 这个文件之后,stripslashes()函数将 name 的值进行了去除“\”处理。
根据 include,跳转到 /system/library.php 中,我们可以发现这里系统对 GET、POST 等参数进行了 addslashes_deep()函数处理,即对参数传递时加上了一个“\”。

问题就出在这里,前端用户进行提交的 name 参数,经过了 addslashes_deep()函数处理加上了一个“\”,到达 reg.php 页面又使用 stripslashes()函数将 name 的值进行了去除“\”处理,这就导致出现了无过滤拼接。
漏洞复现
来到前台漏洞点。http://127.0.0.1/MKCMS7.0/ucenter/reg.php
事先已有 admin 用户。抓包注册 admin 用户,提示已存在
在 name 参数处构造 Payload:+and+’1’=’2
在 name 参数处构造 Payload:+and+’1’=’1
根据不同的返回值可以说明构造的 payload 被拼接到数据库进行了判断处理。
后台注入
漏洞分析
在 admin/model/admin_edit.php 文件中,文件第 10 行处,系统进行了数据库查询,拼接了两个参数,一个是 POST 传递的 a_name,一个是 GET 传递的 id,可以看出,系统并未对参数在这里做任何的过滤处理。
漏洞复现
定位到漏洞点 :127.0.0.1/MKCMS7.0/admin/cms_admin_edit.php?id=1

用单引号测试

构造 payload:id=1+and+if(1>2,1,sleep(3))。数据库执行了 sleep()函数。同样也可以直接丢给 sqlmap 去注入。