发布时间: 2011-10-12

影响版本:
phpcms 2008
漏洞描述:
phpcms 2008的代码中由于对模板参数处理不当,导致可以任意执行任意代码文件。
具体的代码触发路径是这样的:
phpcms/yp/product.php中获取pagesize参数,拼接为$urlrule变量。随后将之带入yp目录下的product.html模板之中。在模板执行后,进入到get函数处理中,最后经过get->pages->pageurl函数,最终触发pageurl的如下代码:

eval(“\$url = \”$urlrule\”;”);
在这里,将未过滤的$urlrule通过eval赋值。这里可以使用${@phpcode}的语法执行php函数,最终造成漏洞。(进入最后pageurl逻辑前,有个要求是product数目必须超过0,所以没有测试数据的本地新搭建环境没法复现,必须加一些测试数据才行)
<*参考http://www.wooyun.org/bugs/wooyun-2010-02984*>
测试方法:
[sebug.net]
本站提供程序(方法)可能带有***性,仅供安全研究与教学之用,风险自负!

http://demo.phpcms.cn/yp/product.php?pagesize=${@print(md5(admin))}

http://demo.phpcms.cn/yp/product.php?pagesize=${@phpinfo()}

等待官方补丁

http://www.phpcms.cn