漏洞简介
东胜物流软件是青岛东胜伟业软件有限公司一款集订单管理、仓库管理、运输管理等多种功能于一体的物流管理软件。东胜物流信息管理系统 Areas/Mobile/Views/WMS/ZWCCX.aspx 接口存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用SQL注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。
影响版本
fofa语法
(body="FeeCodes/CompanysAdapter.aspx" || body="dhtmlxcombo_whp.js" || body="dongshengsoft" || body="theme/dhtmlxcombo.css") && body="东胜"
漏洞分析
根据 Areas/Mobile/Views/WMS/ZWCCX.aspx 的代码引用<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ZWCCX.aspx.cs" Inherits="DSWeb.Areas.Mobile.Views.WMS.ZWCCX" %>,在dll中找到DSWeb.Areas.Mobile.Views.WMS.ZWCCX的逻辑实现
protected void Page_Load(object sender, EventArgs e)
{
this.SetupHTML();
string str = this.Request.QueryString["truckno"];
str.Replace(",", "").Replace("'", "");
((HtmlInputControl) this.hdkeyword).Value = str;
}
private void SetupHTML()
{
string str1 = this.Request.QueryString["truckno"];
str1.Replace(",", "").Replace("'", "");
if (string.op_Inequality(str1, ""))
{
string str2 = $"select distinct wo.DODATE TiHuoRiQi,\r\n wod.STORAGENAME CangKu,\r\n ic.ADDR DiZhi,\r\n ic.TEL DianHua\r\n from wms_out_detail wod\r\n left join wms_out wo on wod.OUTBSNO = wo.BSNO \r\n left join info_client ic on wod.STORAGENAME = ic.SHORTNAME\r\n where wod.TRUCKNO = '{str1}' and wo.DODATE>=(GETDATE()-3) order by wo.DODATE desc";
Database database = DatabaseFactory.CreateDatabase();
漏洞形成原因如下
- 过滤失效:代码尝试使用
str1.Replace(",", "").Replace("'", "")过滤危险字符,但String.Replace()方法返回新字符串,必须将返回值赋值才有效。当前代码未赋值,导致过滤完全无效。
// 错误写法(当前代码)
str1.Replace(",", "").Replace("'", ""); // 无效!
// 正确写法应该是
str1 = str1.Replace(",", "").Replace("'", "");
- 字符串拼接 SQL:使用字符串插值
$"{str1}"直接将用户输入拼接到 SQL 语句中,未使用参数化查询。 - 直接执行文本 SQL:通过
ExecuteReader((CommandType) 1, commandText)执行,CommandType为 1 即CommandType.Text,直接执行拼接的 SQL 文本。
truckno参数的值被直接拼接在str2 SQL语句里,导致SQL注入漏洞。
漏洞复现
GET /Areas/Mobile/Views/WMS/ZWCCX.aspx?truckno=1' HTTP/1.1
Host: dongsheng.mrxn.net


