PbootCMS是網站常用的一款CMS系統,是由國内著名程式開發商翔雲科技研發的一套網站CMS系統,免費開源,擴充性較高,使用的企業很多但是避免不了網站存在漏洞,SINE安全對其代碼進行安全審計的同時發現該pbootcms 存在嚴重的漏洞,包含SQL注入擷取管理者密碼漏洞,以及遠端代碼注入執行漏洞。該pbootcms系統采用的是PHP語言開發,資料庫是MYSQL,并支援pgsql資料庫大并發處理,系統預設支援的伺服器環境,PHP5.3版本以上,以及mysql版本5.6,apache,nginx,都可以運作該CMS系統。關于這次檢測出來的CMS漏洞,我們進行詳細的介紹。
之前的pbootcms老版本出現的漏洞也比較多,我們這次審計的是pbootcms V1.3.3新版本,新版本較于老版本更新了許多,SQL注入非法參數的過濾,以及上傳漏洞的修複,過濾系統的加強,但還是始終沒有嚴格的杜絕非法參數的傳入。我們來看下這個遠端代碼注入執行漏洞,該漏洞産生的原因是在ParserController.php代碼裡的LABEL方式調用shat函數,我們來看下代碼:

我們找到label調用的方式,一步步跟蹤代碼查到是使用了after的方式調用,看到注釋的内容大體的意思是網站的前端模闆在進行解析标簽的操作是,會對網站前端的預設資料庫标簽進行解析,然後通過标簽的内容再進行傳遞數值,在傳遞的過程中,使用者輸入的一些資料造成了這次遠端代碼注入執行漏洞。
pbootcms v1.3.3版本的過濾了一些非法注入參數,但是還是可以進行代碼繞過,可以使用寬位元組繞過注入,使用字元轉義也可以對過濾系統進行繞過,混迹代碼加強運算符也可以對pbootcms的安全過濾系統進行繞過。我們來測試一下:
構造我們的注入代碼:我們在伺服器裡搭建了一個測試環境,[本地/index.php/index/index?safe=](本地/index.php/index/index?safe=){pboot:if(1)$a=$_GET[b];$a();;//)})}}{/pboot:if}&b=phpinfo
我們來執行看下,竟然執行了phpinfo查詢,我們也可以執行一些查詢資料庫的賬号密碼等管理者的操作。
pbootcms擷取管理者密碼漏洞分析
關于這個網站漏洞的産生是存在于ParserController.php代碼裡的parserSearchLabel()方式進行的調用代碼,可以插入一些非法的參數,單引号,轉義符,斜杠等等非法參數,我們使用OR注入代碼,進行擷取管理者賬号密碼就可以了。
關于pbootcms漏洞修複,建議網站的營運者盡快更新pbootcms到最新版本,也可以在伺服器端進行sql注入攻擊防護,攔截get、post、cookies送出的非法參數。對網站上的漏洞進行修複,或者是對網站安全防護參數進行重新設定,使他符合當時的網站環境。如果不懂如何修複網站漏洞,也可以找專業的網站安全公司來處理,國内也就Sinesafe和綠盟、啟明星辰等安全公司比較專業.針對于pbootcms預設的管理者登入位址進行修改,預設是admin.php改為anquan123admin.php即可,盡量長一些,字母加數字組合,避免攻擊者進行暴力猜解,利用擷取到的管理者賬号密碼登入背景。