SINE安全公司在對phpcms2008網站代碼進行安全檢測與審計的時候發現該phpcms存在遠程代碼寫入緩存文件的一個SQL注入漏洞,該phpcms漏洞危害較大,能夠致使網站被黑,以及服務器遭受黑客的攻擊,關於此次發現的phpcms漏洞細節以及如何利用提權咱們來詳細剖析。php
phpcms2008是國內深受站長建站使用的一個內容CMS管理系統,phpcms的開源話,免費,動態,靜態生成,API接口,模板免費下載,自定義內容設計,可提供程序的二次開發與設計,大大方便了整個互聯網站長的建站使用與優化。整個phpcms採用PHP+Mysql數據庫做爲架構,穩定,併發高,承載量大。web
phpcms2008漏洞詳情sql
在對代碼的安全檢測與審計當中,發現type.php文件代碼存在漏洞,代碼以下:shell
<?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和綠盟、啓明星辰等安全公司比較專業.