phpcms網站漏洞如何修復對遠端程式碼寫入快取漏洞利用
SINE安全公司在對phpcms2008網站程式碼進行安全檢測與審計的時候發現該phpcms存在遠端程式碼寫入快取檔案的一個SQL注入漏洞,該phpcms漏洞危害較大,可以導致網站被黑,以及伺服器遭受黑客的攻擊,關於這次發現的phpcms漏洞細節以及如何利用提權我們來詳細剖析。
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和綠盟、啟明星辰等安全公司比較專業.