1. 程式人生 > >網站漏洞如何修復對phpcms2008遠程代碼寫入緩存漏洞利用

網站漏洞如何修復對phpcms2008遠程代碼寫入緩存漏洞利用

國內 mage 新版本 註冊 一個 技術分享 穩定 ges 模板緩存

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和綠盟、啟明星辰等安全公司比較專業.

網站漏洞如何修復對phpcms2008遠程代碼寫入緩存漏洞利用