漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2014-061658
漏洞标题:PHPCMS后台Getshell
相关厂商:phpcms
漏洞作者: phith0n
提交时间:2014-05-21 12:14
修复时间:2014-08-19 12:16
公开时间:2014-08-19 12:16
漏洞类型:命令执行
危害等级:高
自评Rank:15
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2014-05-21: 细节已通知厂商并且等待厂商处理中
2014-05-21: 厂商已经确认,细节仅向厂商公开
2014-05-24: 细节向第三方安全合作伙伴开放
2014-07-15: 细节向核心白帽子及相关领域专家公开
2014-07-25: 细节向普通白帽子公开
2014-08-04: 细节向实习白帽子公开
2014-08-19: 细节向公众公开
简要描述:
后台getshell~
'pc_version' => 'V9.5.5', //phpcms 版本号
'pc_release' => '20140430', //phpcms 更新日期
详细说明:
PHPCMS后台能够自定义url规则:
其中可以定义是否生成静态文件。生成静态文件这一块,如果处理不好后缀,经常容易直接getshell。那么我们看看phpcms是怎么处理这个url重写的。
/phpcms/modules/admin/urlrule.php第46行:
这是修改规则的函数。其中关键地方是这句话:
$_POST['info']['urlrule'] = rtrim(trim($_POST['info']['urlrule']),'.php');
先使用trim去除urlrule两边的空格,再调用rtrim去除urlrule两边的下列字符:“.php”,所以,如果我们的规则写的xxx.php,那么就会变成xxx。
值得注意的是,这里去除.php不只是去除.php,是去除“.php”这四个字符里面任意一个字符。也就是说,如果我写“.ppp”,或者“.php.”都是会被去除掉的。
不过这样真的万无一失了吗?很明显不能。
有以下利用方法:
1.xxx.php3或xxx.php4等后缀,也是会被很多服务器解析为php的。
2.如果我们输入“xxx.php .php”,是什么效果?最后一个.php会被清除掉,留下“.php ”。windows主机下有个特点,文件名后面多的空格是会被忽略的。这样我等于说最后生成静态文件的时候生成的是xxx.php。
3.IIS6下可以利用解析漏洞,后缀写为.php;.html即可
具体利用见漏洞证明。
漏洞证明:
测试环境:windows7 + apache + php5.4
1.登录后台,选一个内容模块(content,我选的倒数第二个),修改url重写规则:
url规则改成xxxx.php .php,是否生成静态那里选“是”。
点保存。
我们已经可以看到这里改好的url规则,后缀是.php :
2.然后来到内容 - 管理栏目,选择某个栏目,我选的“国内”,点修改:
如上图,在“生成HTML设置”里的“内容页URL规则”选择刚才修改的那个规则(这个content-1-2-1.html是事例,不是实际生成的文件名,不管它),然后把“内容页生成HTML”选择“是”。
3.先不提交,再来到SEO设置这里,把一句话写到title里:
然后提交。
4.如果“国内”这个栏目里没文章,去随便写一篇,如果有,这一步略过。
5.内容 - 发布管理 - 批量更新内容页,更新一下,生成静态页面。生成的静态页面就是你设置的规则规定的那个。我这里是content-6-7-1.php,6是分类id,7是文章id,1是页数。
访问可见phpinfo:
修复方案:
如上传文件时那样检查后缀。
版权声明:转载请注明来源 phith0n@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:1
确认时间:2014-05-21 17:02
厂商回复:
感谢反馈!
最新状态:
暂无