MKcms漏洞合集

MKCMS5.0漏洞合集

简介及安装

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行:

 
  1. if(isset($_POST['submit'])){

  2. $username = stripslashes(trim($_POST['name']));

  3. // 检测用户名是否存在

  4. $query = mysql_query("select u_id from mkcms_user where u_name='$username'");

  5. if(mysql_fetch_array($query)){

  6. echo '<script>alert("用户名已存在,请换个其他的用户名");window.history.go(-1);</script>';

  7. exit;

  8. }

  9. $result = mysql_query('select * from mkcms_user where u_email = "'.$_POST['email'].'"');

  10. if(mysql_fetch_array($result)){

  11. echo '<script>alert("邮箱已存在,请换个其他的邮箱");window.history.go(-1);</script>';

  12. exit;

  13. }

图片

注册用户名时$username参数传到后台后经过stripslashes()函数处理,而stripslashes()函数的作用是删除addslashes() 函数添加的反斜杠。

当前页面无输出点,只是返回一个注册/未注册(通过if判断true或者false),可以使用布尔盲注来解决这个问题。
POC

 
  1. POST /ucenter/reg.php HTTP/1.1

  2. Host: 127.0.0.1

  3. User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0

  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

  5. Accept-Language: en

  6. Accept-Encoding: gzip, deflate

  7. Referer: http://127.0.0.1/ucenter/reg.php

  8. Content-Type: application/x-www-form-urlencoded

  9. Content-Length: 52

  10. Connection: close

  11. Cookie: PHPSESSID=cb8e6ccde6cf9050972fa9461d606be3

  12. Upgrade-Insecure-Requests: 1

  13. name=test' AND 1=1 AND 'inject'='inject&email=sss%40qq.com&password=ssssss&submit=

图片

任意用户密码重置

漏洞出现在/ucenter/repass.php第1-44行:

图片

本质上来说此处是一个逻辑问题,程序未通过邮箱等验证是否为用户本身就直接先在第13-14行把用户密码重置为123456了,根本没管邮件发送成功没有。

图片


此处过滤了单引号,所以无法通过然后邮箱账号进行重置

漏洞修复

1.注册处的注入可像密码找回处一样,过滤一下就OK。
2.找回密码处可修改为如下代码:

 
  1. <?php

  2. include('../system/inc.php');

  3. if(isset($_SESSION['user_name'])){

  4. header('location:index.php');

  5. };

  6. function randomkeys($length) {

  7. $pattern = '1234567890abcdefghijklmnopqrstuvwxyz

  8. ABCDEFGHIJKLOMNOPQRSTUVWXYZ';

  9. for($i=0;$i<$length;$i++)

  10. {

  11. $key .= $pattern{mt_rand(0,35)};

  12. }

  13. return $key;

  14. };

  15. $repass = randomkeys(10);

  16. if(isset($_POST['submit'])){

  17. $username = stripslashes(trim($_POST['name']));

  18. $email = trim($_POST['email']);

  19. // 检测用户名是否存在

  20. $query = mysql_query("select u_id from mkcms_user where u_name='$username' and u_email='$email'");

  21. if(!! $row = mysql_fetch_array($query)){

  22. if (mysql_query($sql)) {

  23. $token =$row['u_question'];

  24. include("emailconfig.php");

  25. //创建$smtp对象 这里面的一个true是表示使用身份验证,否则不使用身份验证.

  26. $smtp = new Smtp($MailServer, $MailPort, $smtpuser, $smtppass, true);

  27. $smtp->debug = false;

  28. $mailType = "HTML"; //信件类型,文本:text;网页:HTML

  29. $email = $email; //收件人邮箱

  30. $emailTitle = "".$mkcms_name."用户找回密码"; //邮件主题

  31. $emailBody = "亲爱的".$username.":<br/>感谢您在我站注册帐号。<br/>您的初始密码为".$repass."<br/>如果此次找回密码请求非你本人所发,请忽略本邮件。<br/><p style='text-align:right'>-------- ".$mkcms_name." 敬上</p>";

  32. // sendmail方法

  33. // 参数1是收件人邮箱

  34. // 参数2是发件人邮箱

  35. // 参数3是主题(标题)

  36. // 参数4是邮件主题(标题)

  37. // 参数4是邮件内容 参数是内容类型文本:text 网页:HTML

  38. $rs = $smtp->sendmail($email, $smtpMail, $emailTitle, $emailBody, $mailType);

  39. if($rs==true){

  40. $_data['u_password'] = md5($repass);

  41. $sql = 'update mkcms_user set '.arrtoupdate($_data).' where u_name="'.$username.'"';

  42. echo '<script>alert("请登录到您的邮箱查看您的密码!");window.history.go(-1);</script>';

  43. }else{

  44. echo "找回密码失败";

  45. }

  46. }

  47. }

  48. }

  49. ?>

增加一个生成随机密码的函数,将把新密码更新到数据库的流程放到发送邮件成功后即可。

MKCMS6.2漏洞合集

简介及安装

米酷影视管理系统是一套专为不同需求的站长而设计的影视管理系统,灵活,方便,人性化设计简单易用是最大的特色,是快速架设视频网站首选,只需 3 分钟即可建立一个海量的视频讯息的行业网站。

下载地址:链接:https://pan.baidu.com/s/1zJ0zDxLdblkM1DHxMZHr3w
提取码:zkaq

图片

图片

漏洞复现
验证码重用

/admin/cms_login.php验证码处的逻辑如下,比较session中的验证码和输入的是否一致,不一致就进入alert_href,这个js跳转,实际是在刷新页面

 
  1. if(isset($_POST['submit'])){

  2. if ($_SESSION['verifycode'] != $_POST['verifycode']) {

  3. alert_href('验证码错误','cms_login.php');

  4. }

图片

跳转后就会刷新验证码,然而我用的是burp,默认是不解析js的

全局搜索这个$_SESSION[‘verifycode’],发现只在/system/verifycode.php有赋值,也就是说,如果使用验证码后,我们不跟随js跳转,就不会重置验证码,验证码也就能被重复使用了。

图片

前台注入:/ucenter/repass.php

历史漏洞中,在/ucenter/repass.php有个越权修改密码的洞(CVE-2019-11332),跟进去发现原来还有注入,以下是分析过程。

 
  1. if(isset($_POST['submit'])){

  2. $username = stripslashes(trim($_POST['name']));

  3. $email = trim($_POST['email']);

  4. // 检测用户名是否存在

  5. $query = mysql_query("select u_id from mkcms_user where u_name='$username' and u_email='$email'");

前面说到全局对$_POST存在addslash的过滤(加\转义),上面又把参数给stripslashes了(去掉),那么这里就是一个注入了。

图片

前台注入:/ucenter/active.php

/ucenter/active.php?verify=1存在注入

 
  1. $verify = stripslashes(trim($_GET['verify'])); //去掉了转义用的\

  2. $nowtime = time();

  3. $query = mysql_query("select u_id from mkcms_user where u_question='$verify'");

  4. $row = mysql_fetch_array($query);

sqlmap直接跑即可

图片

图片

前台注入:/ucenter/reg.php
/ucenter/reg.php的name参数,存在注入。

 
  1. if(isset($_POST['submit'])){

  2. $username = stripslashes(trim($_POST['name']));

  3. // 检测用户名是否存在

  4. $query = mysql_query("select u_id from mkcms_user where u_name='$username'");

任意用户密码找回(密码可被穷举)

这个问题主要是/ucenter/repass.php代码里,找回密码的逻辑有问题,第10行查询到username、 email能对应上之后,14行就直接重置密码了。。。而且密码的范围在12行有写,只有90000种可能,重置之后,burp跑一下就可以了。(当然要结合验证码重用才能有效爆破)

图片

备份文件路径可猜解

这个备份功能设置的是非常简单的文件名。/backupdata/mkk.sql
在/admin/cms_backup.php

 
  1. <?php

  2. $filename="../backupdata/".DATA_NAME.".sql"; //存放路径,默认存放到项目最外层

  3. $fp = fopen($filename,'w');

  4. fputs($fp,$mysql);

  5. fclose($fp);

  6. alert_href('备份成功!','cms_data.php');

  7. ?>

全局搜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去注入。

图片

  声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

免费领取安全学习资料包!


渗透工具

技术文档、书籍

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

应急响应笔记

学习路线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/651392.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP基础知识

1. HTTP常见的状态码有哪些&#xff1f; 常见状态码&#xff1a; 200&#xff1a;服务器已成功处理了请求。 通常&#xff0c;这表示服务器提供了请求的网页。 301 &#xff1a; (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时&a…

【kettle001】访问国产达梦数据库并处理数据至execl文件

一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 熟悉、梳理、总结下达梦&#xff08;DM&#xff09;关系型数据库相关知识体系 1.环境准备 搭建…

iOS——NSCache

什么是NSCache NSCache是Foundation框架中的一个类&#xff0c;用于在iOS和macOS应用程序中进行临时性的内存缓存。它提供了一种轻量级的缓存机制&#xff0c;可以用于存储临时性的数据&#xff0c;例如图片、对象等。NSCache的主要特点和用法包括&#xff1a; 临时性缓存&…

谷歌搜索量在哪里查询?

如果您想查询的是谷歌搜索的流量数据&#xff0c;比如某个关键词的搜索频率或趋势&#xff0c;Google Trends 是一个很好的工具&#xff0c;它可以让您看到不同时间段内关键词的搜索流行度&#xff0c;也可以比较几个关键词的搜索量&#xff0c;您可以直接访问 Google Trends 网…

Oracle delete删除数据是否为逻辑删除、新插入数据占用的数据块位置实验

假设一&#xff1a;数据库delete删除为直接删除 假设二&#xff1a;数据库delete删除为逻辑删除&#xff0c;在数据块标记出来&#xff0c;但是实际并没有删除。 方式一&#xff1a;通过dump数据块的方式来实现 我们先用小数据量&#xff0c;通过dump数据块的方式来实现 -- 数…

单链表专题实验

答案&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<assert.h> #include<stdlib.h> typedef int SLTDataType; typedef struct SListNode {SLTDataType data;struct SListNode* next; }SLTNode; void PrintSLT(SLTNode* phead…

多输入多输出 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机多输入多输出预测

多输入多输出 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机多输入多输出预测 目录 多输入多输出 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现WOA-LSSVM鲸鱼算法优化…

【QT】ROS2 Humble联合使用QT教程

【QT】ROS2 Humble联合使用QT教程 文章目录 【QT】ROS2 Humble联合使用QT教程1. 安装ROSProjectManager插件2. 创建ROS项目3.一个快速体验的demoReference 环境的具体信息如下&#xff1a; ubunt 22.04ros2 humbleQt Creator 13.0.0ROS ProjectManager 13.0.0 本文建立在已经…

20.Nacos集群搭建

模拟Nacos三个节点&#xff0c;同一个ip,启动三个不同的端口&#xff1a; 节点 nacos1, 端口&#xff1a;8845 节点 nacos2, 端口&#xff1a;8846 节点 nacos3, 端口&#xff1a;8847 1.搭建数据库&#xff0c;初始化数据库表结构 这里我们以单点的数据库为例 首先新建一…

计算机网络—— book

文章目录 一、概述1.1互联网的核心部分1&#xff0e;电路交换的主要特点2&#xff0e;分组交换的主要特点 1.2.计算机网络的性能1&#xff0e;速率2&#xff0e;带宽3&#xff0e;吞吐量4&#xff0e;时延5&#xff0e;利用率 1.3.计算机网络体系结构协议与划分层次具有五层协议…

OpenHarmony语言基础类库【@ohos.util.LinkedList (线性容器LinkedList)】

LinkedList底层通过双向链表实现&#xff0c;双向链表的每个节点都包含对前一个元素和后一个元素的引用。当需要查询元素时&#xff0c;可以从头遍历&#xff0c;也可以从尾部遍历&#xff0c;插入、删除效率高&#xff0c;查询效率低。LinkedList允许元素为null。 LinkedList…

模拟信号的离散化

本文介绍模拟信号的离散化。 1.采样定理 定义&#xff1a;若想重建输入的模拟信号&#xff0c;采样频率必须大于等于输入模拟信号最高频率的2倍&#xff0c;即&#xff1a; 其中&#xff0c;为采样频率&#xff0c;为输入模拟信号最高频率 否则&#xff0c;信号会发生混叠 2…