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

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

缺陷编号:wooyun-2015-092849

漏洞标题:LebiShop商城系统最新版六处SQL注入三

相关厂商:www.lebi.cn

漏洞作者: xfkxfk

提交时间:2015-01-23 11:38

修复时间:2015-04-23 11:40

公开时间:2015-04-23 11:40

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-01-23: 细节已通知厂商并且等待厂商处理中
2015-01-26: 厂商已经确认,细节仅向厂商公开
2015-01-29: 细节向第三方安全合作伙伴开放
2015-03-22: 细节向核心白帽子及相关领域专家公开
2015-04-01: 细节向普通白帽子公开
2015-04-11: 细节向实习白帽子公开
2015-04-23: 细节向公众公开

简要描述:

LebiShop商城系统官方下载最新版六处SQL注入,demo演示

详细说明:

LebiShop商城系统官方下载最新版六处SQL注入,demo演示
第一处SQL注入

// Shop.Ajax.Ajax_userin
public void Comment_Del()
{
if (this.CurrentUser.id > 0)
{
string id = RequestTool.RequestString("ids");
if (id == "")
{
base.Response.Write("{\"msg\":\"" + base.Tag("请选择要删除的信息") + "\"}");
return;
}
B_Lebi_Comment.Delete(string.Concat(new object[]
{
"TableName = 'Product' and User_id=",
this.CurrentUser.id,
" and Parentid in (",
id,
")"
}));
B_Lebi_Comment.Delete(string.Concat(new object[]
{
"Parentid = 0 and TableName = 'Product' and User_id=",
this.CurrentUser.id,
" and id in (",
id,
")"
}));
base.Response.Write("{\"msg\":\"OK\"}");
}
}


参数id通过RequestTool.RequestString("ids")获取,这里的RequestString只是过滤了单引号
但是在进入in条件后,并没有单引号保护,导致sql注入
下面的sql注入原理同理,都是通过RequestString获取参数,但是在进入sql语句时并没有单引号保护,所以无需截断单引号,导致注入漏洞
第二处SQL注入

// Shop.Ajax.Ajax_userin
public void LikeToBasket()
{
string ids = RequestTool.RequestString("id");
string mes = "";
if (ids != "")
{
List<Lebi_User_Product> models = B_Lebi_User_Product.GetList(string.Concat(new object[]
{
"(Type_id_UserProductType=141 or Type_id_UserProductType=144) and User_id=",
this.CurrentUser.id,
" and id in (",
ids,
")"
}), "");


第三处SQL注入

// Shop.Ajax.Ajax_userin
public void Message_Delete()
{
if (this.CurrentUser.id > 0)
{
string id = RequestTool.RequestString("ids");
if (id == "")
{
base.Response.Write("{\"msg\":\"" + base.Tag("请选择要删除的信息") + "\"}");
return;
}
B_Lebi_Message.Delete(string.Concat(new object[]
{
"(User_id_To=",
this.CurrentUser.id,
" or User_id_From=",
this.CurrentUser.id,
") and id in (",
id,
")"
}));
base.Response.Write("{\"msg\":\"OK\"}");
}
}


第四处SQL注入

// Shop.Ajax.Ajax_userin
public void UserLike_Del()
{
string ids = RequestTool.RequestString("id");
if (ids == "")
{
base.Response.Write("{\"msg\":\"OK\"}");
return;
}
List<Lebi_User_Product> models = B_Lebi_User_Product.GetList(string.Concat(new object[]
{
"User_id=",
this.CurrentUser.id,
" and id in (",
ids,
")"
}), "");
foreach (Lebi_User_Product model in models)
{
B_Lebi_User_Product.Delete(model.id);
}
base.Response.Write("{\"msg\":\"OK\"}");
}


第五处SQL注入

// Shop.Ajax.Ajax_userin
public void UserOftenBuy_Del()
{
string ids = RequestTool.RequestString("id");
if (ids == "")
{
base.Response.Write("{\"msg\":\"OK\"}");
return;
}
List<Lebi_User_Product> models = B_Lebi_User_Product.GetList(string.Concat(new object[]
{
"User_id=",
this.CurrentUser.id,
" and id in (",
ids,
")"
}), "");
foreach (Lebi_User_Product model in models)
{
B_Lebi_User_Product.Delete(model.id);
}
base.Response.Write("{\"msg\":\"OK\"}");
}


第六处SQL注入

// Shop.Ajax.Ajax_userin
public void UserOftenBuy_Update()
{
string id = RequestTool.RequestString("Uid");
List<Lebi_User_Product> models = B_Lebi_User_Product.GetList(string.Concat(new object[]
{
"User_id=",
this.CurrentUser.id,
" and id in (",
id,
")"
}), "");
foreach (Lebi_User_Product model in models)
{
model.count = RequestTool.RequestInt("Count" + model.id, 0);
model.WarnDays = RequestTool.RequestInt("WarnDays" + model.id, 0);
model.Time_addemail = DateTime.Now.Date.AddDays((double)model.WarnDays);
B_Lebi_User_Product.Update(model);
}
base.Response.Write("{\"msg\":\"OK\"}");
}

漏洞证明:

以第六处SQL注入为例
官方demo演示:

1.png


在线案例演示:

2.png


使用SQLmap可直接跑出全部数据

修复方案:

使用int xxx = RequestTool.RequestInt("yyy");

版权声明:转载请注明来源 xfkxfk@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-01-26 11:37

厂商回复:

官方已作出修复,感谢

最新状态:

暂无