米酷cms代审记录

  • A+
所属分类:代码审计

一、前言

米酷cms是一套用户视频搭建的cms,源码中存在大量sql注入,选了两处进行记录其余过程原理和过程都一样就不记录了。

二、注册处SQL注入

漏洞位置:ucenterreg.php,第1~18行。

系统在systemlibrary.php中对$_GET$_POST等使用addslashes()函数进行了全局过滤,如下所示:

米酷cms代审记录

而在ucenterreg.php文件中接受前端传入的username参数后使用stripslashes()函数去除了反斜杠,然后拼接进入数据库查询操作造成sql注入如下所示:

米酷cms代审记录


漏洞复现:
首先注册一个正常用户,然后在进行注册抓取相应的注册数据添加单引号,按照代码执行逻辑,sql语句单引号未闭合导致sql语句执行出错返回为null,代码判断即为用户名不存在,进入下一步判断邮箱是否存在。故利用此来进行注入
如下所示:kobe为注册存在的用户名,使用and永真条件判断sql查询返回用户数据,故显示用户名存在:

米酷cms代审记录


使用and永假条件sql查询无数据返回,判断用户不存在进行下一步邮箱判断如下所示:

米酷cms代审记录


三、基于时间的sql盲注

漏洞位置:adminmodeladmin_edit.php第1-23行,漏洞参数id漏洞代码如下所示:

<?php

if (isset($_POST['save'])) {
null_back($_POST['a_name'], '请填写登录账号');
null_back($_POST['a_password'], '请填写登录密码');
null_back($_POST['a_cpassword'], '请重复输入登录密码');
if ($_POST['a_password'] != $_POST['a_cpassword']) {
alert_back('两次输入的密码不一致');
}
$result = mysqli_query($conn,'select * from mkcms_manager where m_name = "' . $_POST['a_name'] . '" and m_id <> ' . $_GET['id'] . '');
if (mysqli_fetch_array($result)) {
alert_back('登录账号重复,请更换登录账号。');
}
$_data['m_name'] = $_POST['a_name'];
$_data['m_password'] = md5($_POST['a_password']);
$sql = 'update mkcms_manager set ' . arrtoupdate($_data) . ' where m_id = ' . $_GET['id'] . '';
if (mysqli_query($conn,$sql)) {
alert_href('管理员修改成功!', 'cms_admin.php');
} else {
alert_back('修改失败!');
}
}

上述代码直接将前端传入的id参数拼接入sql语句中造成sql注入,此处无任何差异回显,可以使用基于时间的盲注进行,如下所示构造POC

/admin/cms_admin_edit.php?id=3+and+if(1=2,1,sleep(2))

当发送payload中if判断条件为真时if函数值为1,响应时间为几毫秒如下所示:

米酷cms代审记录


当发送payload中if条件为假时,sleep(2),响应时间大于4秒(有两个sql语句执行)如下所示:


米酷cms代审记录


之后还有很多文件都有注入就不记录了,相冲cnvd的老哥可以自己去看看。


作者:spider,文章来源:先知社区



关注公众号:HACK之道
米酷cms代审记录
如文章对你有帮助,请支持点下“赞”“在看”

本文始发于微信公众号(HACK之道):米酷cms代审记录

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: