網站漏洞如何修復對phpcms2008遠程代碼寫入緩存漏洞利用
phpcms2008是國內深受站長建站使用的一個內容CMS管理系統,phpcms的開源話,免費,動態,靜態生成,API接口,模板免費下載,自定義內容設計,可提供程序的二次開發與設計,大大方便了整個互聯網站長的建站使用與優化。整個phpcms采用PHP+Mysql數據庫作為架構,穩定,並發高,承載量大。
phpcms2008漏洞詳情
在對代碼的安全檢測與審計當中,發現type.php文件代碼存在漏洞,代碼如下:
<?php
require dirname(FILE).‘/include/common.inc.php‘;
...
if(empty($template)) $template = ‘type‘;
...
include template(‘phpcms‘, $template);
...
?>
以上代碼if(empty($template)) 在進行變量定義的時候可以跟進來看下,通過extract進行變量的聲明與註冊,如果當前的註冊已經有了,就不會覆蓋當前已有的聲明,導致可以變量偽造與註入。
我們再來跟蹤該代碼找到template函數,看到調用到了include目錄下的global.func.php文件,該代碼裏的function template會對傳遞過來的定義值進行判斷,默認TPL_REFRESH是為1的參數值,也就是說自動開啟了模板緩存功能。當需要更新緩存的時候就會先判斷有沒有變量註冊,如果有就會進行更新緩存。
該漏洞利用的就是緩存的更新,將網站***代碼插入到緩存文件當中去。可以看出$template沒有進行過濾就可以直接寫入到緩存模板中,我們可以指定TAG內容,post提交過去,如下代碼:
我們在自己的本地電腦搭建了一套phpcms2008系統的環境,進行漏洞測試,提交post參數過去,我們看下本地的漏洞結果,可以執行phpinfo代碼。也可以插入一句話***後門進行上傳webshell。
phpcms漏洞修復與安全建議
目前phpcms官方已經修復該漏洞,請各大網站運營者盡快升級phpcms2008到最新版本,有些二次開發的網站可以針對緩存目錄進行安全限制,禁止PHP腳本文件的執行,data,cache_template目錄進行安全加固部署,對網站上的漏洞進行修復,或者是對網站安全防護參數進行重新設置,使他符合當時的網站環境。如果不懂如何修復網站漏洞,也可以找專業的網站安全公司來處理,國內也就Sinesafe和綠盟、啟明星辰等安全公司比較專業.
網站漏洞如何修復對phpcms2008遠程代碼寫入緩存漏洞利用