There are questions remain, We'll search for the answers together. But one thing we known for sure,the future is not set!

【原创文章】大商创商城系统(Dscmall) 2.0版三个高危SQL注入漏洞修复

大商创Dscmall多用户商城 2.0版存在多个SQL注入漏洞,

在fofa.info输入body=”dsc-choie”,显示有8431个网站存在这个漏洞。

已经可以批量POC啦,找到他们官方,给的回复都是售后要给钱,购买系统使用权给了钱。

出了漏洞竟然不是系统程序升级,修复漏洞,而是说要进行售后续费,需要给3000/月,5000/半年,8000块/年的售后服务费用,表示无语和钦佩。

1,wholesale_flow.php

注入漏洞:$_REQUEST[‘rec_ids’]没有过滤
$_REQUEST[‘rec_ids’]没有验证是否是数字,导致可以把数组中的字符连接成SQL语句。
原代码
else if ($_REQUEST['step'] == 'ajax_update_cart') {
require_once ROOT_PATH . 'includes/cls_json.php';
$json = new JSON();
$result = array('error' => 0, 'message' => '', 'content' => '');
$rec_ids = empty($_REQUEST['rec_ids']) ? array() : $_REQUEST['rec_ids'];//验证了$_REQUEST['rec_ids']是否为空,但是没有验证是否是数字
$rec_ids = implode(',', $rec_ids);
修改为
else if ($_REQUEST['step'] == 'ajax_update_cart') {
require_once ROOT_PATH . 'includes/cls_json.php';
$json = new JSON();
$result = array('error' => 0, 'message' => '', 'content' => '');
$rec_ids = empty($_REQUEST['rec_ids']) ? array() : $_REQUEST['rec_ids'];//验证了$_REQUEST['rec_ids']是否为空,但是没有验证是否是数字
$rec_ids = array_map('intval', $rec_ids);  //验证$rec_ids数组中每一个所有元素是否为数字,含非数字字符时返回0
$rec_ids = implode(',', $rec_ids);//然后连接数组
2,ajax_dialog.php
注入漏洞:_REQUEST[‘brand_id’]没有过滤
原代码
else if ($_REQUEST['act'] == 'getUserInfo') {
$seckillid = '';
$_REQUEST['seckillid'] = !empty($_REQUEST['seckillid']) ? stripslashes($_REQUEST['seckillid']) : '';
$temp = !empty($_REQUEST['temp']) ? trim($_REQUEST['temp']) : '';
$_REQUEST['seckillid'] = json_str_iconv($_REQUEST['seckillid']);
if (!empty($_REQUEST['seckillid'])) {
$seckillid = json_decode($_REQUEST['seckillid'], true);
}
$brand_id = !empty($_REQUEST['brand_id']) ? trim($_REQUEST['brand_id']) : '';  //只检查了$_REQUEST['brand_id'])是否为空,但是没有检查是否是数字
$smarty->assign('user_id', $user_id);
修改为
else if ($_REQUEST['act'] == 'getUserInfo') {
$seckillid = '';
$_REQUEST['seckillid'] = !empty($_REQUEST['seckillid']) ? stripslashes($_REQUEST['seckillid']) : '';
$temp = !empty($_REQUEST['temp']) ? trim($_REQUEST['temp']) : '';
$_REQUEST['seckillid'] = json_str_iconv($_REQUEST['seckillid']);
if (!empty($_REQUEST['seckillid'])) {
$seckillid = json_decode($_REQUEST['seckillid'], true);
}
$brand_id = !empty($_REQUEST['brand_id']) ? intval(trim($_REQUEST['brand_id'])) : ''; //如果brand_id为字符串,结果就为0
$smarty->assign('user_id', $user_id);

 

3,flow.php
注入漏洞:$_REQUEST[‘rec_id’]、$_REQUEST[‘sel_id’]没有过滤
原代码
else if ($_REQUEST['step'] == 'ajax_cart_goods_amount') {
require_once ROOT_PATH . 'includes/cls_json.php';
$json = new JSON();
$result = array('error' => 0, 'message' => '');
get_request_filter();
$rec_id = !empty($_REQUEST['rec_id']) ? dsc_addslashes($_REQUEST['rec_id']) : '';
$act_sel_id = !empty($_REQUEST['sel_id']) ? dsc_addslashes($_REQUEST['sel_id']) : '';
修改为
else if ($_REQUEST['step'] == 'ajax_cart_goods_amount') {
require_once ROOT_PATH . 'includes/cls_json.php';
$json = new JSON();
$result = array('error' => 0, 'message' => '');
get_request_filter();
//$rec_id = !empty($_REQUEST['rec_id']) ? dsc_addslashes($_REQUEST['rec_id']) : '';
$rec_id = !empty($_REQUEST['rec_id']) ? dsc_addslashes(intval($_REQUEST['rec_id'])) : '';  //intval $rec_id参数
//$act_sel_id = !empty($_REQUEST['sel_id']) ? dsc_addslashes($_REQUEST['sel_id']) : '';
$act_sel_id = !empty($_REQUEST['sel_id']) ? dsc_addslashes(intval($_REQUEST['sel_id'])) : ''; //intval $sel_id参数

 

 

转载请注明:百蔬君 » 【原创文章】大商创商城系统(Dscmall) 2.0版三个高危SQL注入漏洞修复

喜欢 (1)or分享 (0)

Warning: Attempt to read property "comment_author_email" on null in /www/wwwroot/baishujun.com/public_html/wp-content/themes/yusi1.0/comments.php on line 46
发表我的评论
取消评论

请证明您不是机器人(^v^):

表情