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

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

缺陷编号:wooyun-2013-044084

漏洞标题:phpcms v9 前台无限制GETSHELL(第一弹)

相关厂商:phpcms

漏洞作者: 狗狗侠

提交时间:2013-11-26 11:19

修复时间:2014-02-24 11:19

公开时间:2014-02-24 11:19

漏洞类型:命令执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

详细说明:

第一次玩乌云,希望给个邀请码,壮我大乌云
0x01:介绍
PHPCMS V9(后面简称V9)采用PHP5+MYSQL做为技术基础进行开发。V9采用OOP(面向对象)方式进行基础运行框架搭建。模块化开发方式做为功能开发形式。框架易于功能扩展,代码维护,优秀的二次开发能力,可满足所有网站的应用需求。 5年开发经验的优秀团队,在掌握了丰富的WEB开发经验和CMS产品开发经验的同时,勇于创新追求完美的设计理念,为全球多达10万网站提供助力,并被更多的政府机构、教育机构、事业单位、商业企业、个人站长所认可。
0x02:漏洞分析
在中 v9\phpcms\modules\member\index.php381行处

public function account_manage_avatar() {
$memberinfo = $this->memberinfo;
//初始化phpsso
$phpsso_api_url = $this->_init_phpsso();
$ps_auth_key = pc_base::load_config('system', 'phpsso_auth_key');
$auth_data = $this->client->auth_data(array('uid'=>$this->memberinfo['phpssouid'], 'ps_auth_key'=>$ps_auth_key), '', $ps_auth_key);
$upurl = base64_encode($phpsso_api_url.'/index.php?m=phpsso&c=index&a=uploadavatar&auth_data='.$auth_data);
//获取头像数组
$avatar = $this->client->ps_getavatar($this->memberinfo['phpssouid']);

include template('member', 'account_manage_avatar');
}


这里是一个上传头像的功能模块,我们继续跟踪上传地址为
v9/phpsso_server/index.php?m=phpsso&c=index&a=uploadavatar
读取v9\phpsso_server\phpcms\modules\phpsso\index.php文件
其中uploadavatar为我们处理上传头像函数
具体函数如下

public function uploadavatar() {

//根据用户id创建文件夹
if(isset($this->data['uid']) && isset($this->data['avatardata'])) {
$this->uid = $this->data['uid'];
$this->avatardata = $this->data['avatardata'];
} else {
exit('0');
}

$dir1 = ceil($this->uid / 10000);
$dir2 = ceil($this->uid % 10000 / 1000);

//创建图片存储文件夹
$avatarfile = pc_base::load_config('system', 'upload_path').'avatar/';
$dir = $avatarfile.$dir1.'/'.$dir2.'/'.$this->uid.'/';
if(!file_exists($dir)) {
mkdir($dir, 0777, true);
}

//存储flashpost图片
$filename = $dir.$this->uid.'.zip';
file_put_contents($filename, $this->avatardata);
echo $filename;exit();
//解压缩文件
pc_base::load_app_class('pclzip', 'phpsso', 0);
$archive = new PclZip($filename);
if ($archive->extract(PCLZIP_OPT_PATH, $dir) == 0) {
die("Error : ".$archive->errorInfo(true));
}

//判断文件安全,删除压缩包和非jpg图片
$avatararr = array('180x180.jpg', '30x30.jpg', '45x45.jpg', '90x90.jpg');
if($handle = opendir($dir)) {
while(false !== ($file = readdir($handle))) {
if($file !== '.' && $file !== '..') {
if(!in_array($file, $avatararr)) {
@unlink($dir.$file);
} else {
$info = @getimagesize($dir.$file);
if(!$info || $info[2] !=2) {
@unlink($dir.$file);
}
}
}
}
closedir($handle);
}
$this->db->update(array('avatar'=>1), array('uid'=>$this->uid));
exit('1');
}


其中关键代码

pc_base::load_app_class('pclzip', 'phpsso', 0);
$archive = new PclZip($filename);
if ($archive->extract(PCLZIP_OPT_PATH, $dir) == 0) {
die("Error : ".$archive->errorInfo(true));
}


这里为解压缩文件
接下来为判断是否为图片类型

//判断文件安全,删除压缩包和非jpg图片
$avatararr = array('180x180.jpg', '30x30.jpg', '45x45.jpg', '90x90.jpg');
if($handle = opendir($dir)) {
while(false !== ($file = readdir($handle))) {
if($file !== '.' && $file !== '..') {
if(!in_array($file, $avatararr)) {
@unlink($dir.$file);
} else {
$info = @getimagesize($dir.$file);
if(!$info || $info[2] !=2) {
@unlink($dir.$file);
}
}
}
}
closedir($handle);
}


为180x180.jpg', '30x30.jpg', '45x45.jpg', '90x90.jpg ,如果不为这几种,则就删除,但是他考虑到的仅仅是当前目录下的,没做循环遍历,导致我们可以新建一个目录,然后里面放入我们的PHP木马,然后压缩成zip,然后再上传,然后即可达到任意上传文件,直接前台无限制getshell
0x03:漏洞利用
新建一个如图文件
新建一个22目录,目录里面放入我们的test.php文件,test.php里面放入我们的一句话,然后压缩成zip文件

HSSE)T74AXF@JMDD{BL5F_7.jpg


然后上传一个正常头像,获取一个路径,如正常头像地址为http://127.0.0.1/v9/phpsso_server/uploadfile/avatar/1/1/3/90x90.jpg
然后我们再次上传,通过burpsuit抓包,将其中post的内容用paste from file替换掉

88NP})5AQ]M2])JN6188P22.jpg


然后发送
最好获取shell路径为 在之前的正常路径下面加上我们的解压路径,如http://127.0.0.1/v9/phpsso_server/uploadfile/avatar/1/1/3/22/test.php

90F4_{2CYE{REA[D~}K8UQH.jpg


0x04:修复
这个phpcms 直接循环遍历一下验证吧
0x05:奖励
听说乌云通用型奖励很给力哦? 是真的么? 如果给力,我再来几发? xsser?

漏洞证明:

90F4_{2CYE{REA[D~}K8UQH.jpg

修复方案:

循环遍历验证下吧

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:18

确认时间:2013-11-26 13:36

厂商回复:

感谢提交!!

最新状态:

暂无


漏洞评价:

评论

  1. 2013-11-26 11:21 | Finger 认证白帽子 ( 普通白帽子 | Rank:777 漏洞数:95 | 最近有人冒充该账号行骗,任何自称Finger并...)

    又来了一个神奇的路人甲

  2. 2013-11-26 11:22 | xfkxfk 认证白帽子 ( 核心白帽子 | Rank:2179 漏洞数:338 | 呵呵!)

    关注之

  3. 2013-11-26 11:24 | MeirLin ( 实习白帽子 | Rank:96 漏洞数:30 | 号借人)

    前台吗。霸气

  4. 2013-11-26 11:27 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    连载的节奏?

  5. 2013-11-26 11:29 | 九零少帅 ( 实习白帽子 | Rank:43 漏洞数:10 | 喂 你干嘛哩.)

    @路人甲 求忽略!

  6. 2013-11-26 11:42 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    路人甲好啊 这个奖励不都是发到乌云的账户了?

  7. 2013-11-26 12:06 | B1acken ( 普通白帽子 | Rank:174 漏洞数:56 | 渣渣)

    前台无限制GETSHELL,亮了

  8. 2013-11-26 12:10 | 狗狗侠 ( 普通白帽子 | Rank:497 漏洞数:55 | 我是狗狗侠)

    @xsser 我是狗狗侠,请发到我乌云账户,不客气...哈哈

  9. 2013-11-26 12:14 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @狗狗侠 瞄了个咪咪的

  10. 2013-11-26 12:15 | Huc-Unis ( 普通白帽子 | Rank:1055 漏洞数:292 | 诶,现在通用奖励越来越低了;离买保时捷卡...)

    Mark!

  11. 2013-11-26 12:18 | 西毒 ( 普通白帽子 | Rank:221 漏洞数:33 | 心存谦卑才能不断超越自我)

    @xsser 我是狗狗侠,这是我的新马甲,别客气

  12. 2013-11-26 12:21 | 西毒 ( 普通白帽子 | Rank:221 漏洞数:33 | 心存谦卑才能不断超越自我)

    @xsser 我知道是谁了,感谢

  13. 2013-11-26 12:22 | 西毒 ( 普通白帽子 | Rank:221 漏洞数:33 | 心存谦卑才能不断超越自我)

    @猪猪侠 现身吧

  14. 2013-11-26 12:28 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @西毒 搞个猜马甲有奖活动吧

  15. 2013-11-26 12:31 | 疯子 ( 普通白帽子 | Rank:242 漏洞数:42 | 世人笑我太疯癫,我笑世人看不穿~)

    前台无限制GETSHELL,亮了

  16. 2013-11-26 12:39 | 西毒 ( 普通白帽子 | Rank:221 漏洞数:33 | 心存谦卑才能不断超越自我)

    @xsser 好啊 好啊...猜对了乌云送妹子?

  17. 2013-11-26 12:41 | 园长 ( 普通白帽子 | Rank:134 漏洞数:14 | 你在身边就是缘,缘分写在数据库里面。)

    狗狗侠

  18. 2013-11-26 13:08 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    这又是一哥的节奏吖

  19. 2013-11-26 13:29 | NetSeif ( 实习白帽子 | Rank:45 漏洞数:13 | ‮(子帽白心核)

    霸气!

  20. 2013-11-26 13:30 | NetSeif ( 实习白帽子 | Rank:45 漏洞数:13 | ‮(子帽白心核)

    ‮(子帽白心核

  21. 2013-11-26 13:32 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    狗狗侠>_<

  22. 2013-11-26 13:40 | 只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)

    我猜是疯狗的马甲

  23. 2013-11-26 14:59 | 猪头子 ( 普通白帽子 | Rank:189 漏洞数:35 | 自信的看着队友rm -rf/tar挂服务器)

    @只发通用型 楼上也是马甲无误

  24. 2013-11-26 15:06 | 小米 ( 路人 | Rank:17 漏洞数:3 | 性别男 爱好女 看AV我最行 要装逼找Helen ...)

    难道你还有第二弹?

  25. 2013-11-26 15:40 | 猪头子 ( 普通白帽子 | Rank:189 漏洞数:35 | 自信的看着队友rm -rf/tar挂服务器)

    @xsser 我猜是猪猪侠的..

  26. 2013-11-26 15:43 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    应该注册个猫猫侠、鸡鸡侠等等

  27. 2013-11-26 16:26 | 围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)

    马了个克的!

  28. 2013-11-26 18:45 | Distant ( 路人 | Rank:5 漏洞数:2 | 乌云奖金:999999999999999999999999.99 元)

    @狗狗侠 要献身了吗

  29. 2013-11-26 21:54 | 无名小卒 ( 路人 | Rank:10 漏洞数:1 | 我不是黑阔,但我认识的全是黑阔!)

    亮瞎我了!

  30. 2013-11-26 22:07 | Sct7p ( 实习白帽子 | Rank:62 漏洞数:9 | 懂与不懂之间只隔了一层纸,懂的人会觉得很...)

    狗狗侠,猪猪侠。干嘛不来个蜘蛛侠。或者来个什么犬夜叉啊。什么的

  31. 2013-11-29 14:41 | 挖掘鸡 ( 路人 | Rank:4 漏洞数:1 | 我爱挖掘鸡)

    27-46-31-08@qq.com 哪位发送个来,我有挖掘鸡,看能不能批量,大家分享

  32. 2013-11-29 14:49 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    为毛楼上这么多马甲。。。

  33. 2013-11-29 14:53 | ( 路人 | Rank:0 漏洞数:1 | 爱好互联网安全)

    我也来一个。。

  34. 2013-11-29 15:02 | 大肠精 ( 路人 | Rank:0 漏洞数:2 | 业余兴趣而已)

    应该要先获取管理密码吧

  35. 2013-11-30 01:34 | 蟋蟀哥哥 ( 普通白帽子 | Rank:363 漏洞数:57 | 巴蜀人士,80后宅男,自学成才,天朝教育失败...)

    急需该洞子

  36. 2013-11-30 08:33 | Huc-Unis ( 普通白帽子 | Rank:1055 漏洞数:292 | 诶,现在通用奖励越来越低了;离买保时捷卡...)

    坐等第二弹!

  37. 2013-11-30 09:28 | 九零少帅 ( 实习白帽子 | Rank:43 漏洞数:10 | 喂 你干嘛哩.)

    @鬼魅羊羔 哎哟 这么马甲!好眼熟!

  38. 2013-11-30 15:32 | QQ852451559 ( 实习白帽子 | Rank:79 漏洞数:18 | 学生党)

    mark

  39. 2013-11-30 17:07 | 落月 ( 路人 | Rank:0 漏洞数:2 | 落月,关注网络安全;关注黑帽劫持;)

    0。霸气

  40. 2013-11-30 20:50 | 挖掘鸡 ( 路人 | Rank:4 漏洞数:1 | 我爱挖掘鸡)

    给我,我来挖掘鸡批量出来

  41. 2013-11-30 21:17 | J′aron ( 路人 | Rank:17 漏洞数:5 | 问题真实存在但是影响不大.)

    前台无限制GETSHELL,亮了

  42. 2013-11-30 21:23 | 风风 ( 普通白帽子 | Rank:101 漏洞数:43 | 。)

    猪猪侠,狗狗侠。目测要火鸡鸡侠,驴驴侠,羊羊侠,牛牛侠 这些谁注册,交版权费啊你们就是幸福的一家.

  43. 2013-12-01 01:52 | skysheep ( 路人 | Rank:0 漏洞数:1 | 关注网络安全。)

    +1

  44. 2013-12-01 22:34 | 邪少 ( 实习白帽子 | Rank:58 漏洞数:7 )

    我草。。如何修复呢。。怎么修复啊。

  45. 2013-12-02 13:10 | 冻心 ( 路人 | Rank:5 漏洞数:3 | 爱wooyun 爱生活!)

    这是要疯了吧这

  46. 2013-12-03 04:42 | skysheep ( 路人 | Rank:0 漏洞数:1 | 关注网络安全。)

    注意这是第一蛋 蛋 蛋 蛋 。

  47. 2013-12-16 23:18 | Huc-Unis ( 普通白帽子 | Rank:1055 漏洞数:292 | 诶,现在通用奖励越来越低了;离买保时捷卡...)

    敢问洞主测试的最高哪个版本的?9.5.1?我测试了的确不错!但其实是有限制的,有些不允许注册,或注册提示禁止的用户名!如何破也?

  48. 2013-12-17 23:24 | cnrstar ( 普通白帽子 | Rank:157 漏洞数:23 | Be my personal best!)

    霸气~

  49. 2013-12-18 21:58 | 冻心 ( 路人 | Rank:5 漏洞数:3 | 爱wooyun 爱生活!)

    为何是路人!!!!

  50. 2013-12-20 18:04 | BadCat ( 实习白帽子 | Rank:81 漏洞数:21 | 悲剧的我什么都不会)

    好强大的狗狗侠..跟猪猪侠啥关系?

  51. 2013-12-20 18:27 | 何松 ( 路人 | Rank:18 漏洞数:4 | 你看)

    狗狗侠 - -爆了

  52. 2013-12-20 21:18 | Mosuan ( 普通白帽子 | Rank:449 漏洞数:175 | 尘封此号,不装逼了,再见孩子们。by Mosua...)

    @Huc-Unis 求exp

  53. 2013-12-22 00:00 | Windy ( 路人 | Rank:26 漏洞数:10 | 苦逼的民工)

    前台无限制GETSHELL!!!

  54. 2013-12-24 22:48 | felixk3y ( 普通白帽子 | Rank:523 漏洞数:41 | php python jsp)

    @xsser 这个是360上,10月11号就发布了的,相差了一个多月哦

  55. 2013-12-25 02:00 | Windy ( 路人 | Rank:26 漏洞数:10 | 苦逼的民工)

    @挖掘鸡 求掘鸡。。。

  56. 2013-12-25 22:06 | Ki11 ( 路人 | Rank:26 漏洞数:5 | ส็็็็็็็็็็็็็็็็็็็...)

    路人还要等多少年?

  57. 2013-12-30 18:18 | scan_z ( 路人 | Rank:8 漏洞数:4 | /home/work/newsphp/newsroot/temp/smarty/...)

    路人路过。。。

  58. 2013-12-31 00:22 | 无名小卒 ( 路人 | Rank:10 漏洞数:1 | 我不是黑阔,但我认识的全是黑阔!)

    路人需要等多少年!

  59. 2014-01-20 10:03 | x1aoh4i ( 普通白帽子 | Rank:403 漏洞数:62 )

    我也是马甲

  60. 2014-02-12 20:06 | 军哥哥 ( 路人 | Rank:5 漏洞数:2 | 艹艹艹艹)

    狗侠的PHP技术不错啊!

  61. 2014-02-24 18:23 | 乌云一哥 ( 路人 | Rank:7 漏洞数:1 | echo file_get_contents('http://www.wooyu...)

    ...这个漏洞。。。。貌似传了好久了

  62. 2014-06-13 10:57 | 小贱人 ( 路人 | Rank:4 漏洞数:3 | 资深菜鸟,)

    已阅 不错

  63. 2015-01-18 23:23 | BeenQuiver ( 普通白帽子 | Rank:101 漏洞数:26 | 专注而高效,坚持好的习惯千万不要放弃)

  64. 2015-03-17 09:30 | bobbi ( 路人 | Rank:8 漏洞数:6 | 人生真是寂寞如雪)

    66666666666

  65. 2015-03-17 10:21 | B1acken ( 普通白帽子 | Rank:174 漏洞数:56 | 渣渣)

    @xsser 这个可以有