影響版本:
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