久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

Discuz! 官方交流社區

標題: Discuz!X.3.4 ML任意代碼執行漏洞修復(discuz多國語言版) [打印本頁]

作者: 1314學習網    時間: 2019-7-24 15:26
標題: Discuz!X.3.4 ML任意代碼執行漏洞修復(discuz多國語言版)
本帖最后由 1314學習網 于 2019-7-24 15:27 編輯

0X1 漏洞描述

2019年7月11日,網絡上出現了一個Discuz!ML遠程代碼執行漏洞的PoC,研究員驗證對discuz x3.4進行全面的網站滲透測試的時候,發現discuz多國語言版存在遠程代碼執行漏洞,該漏洞可導致論壇被直接上傳webshell,直接遠程獲取管理員權限,linux服務器可以直接執行系統命令,危害性較大,關于該discuz漏洞的詳情,我們來詳細的分析看下。攻擊者能夠利用該漏洞在請求流量的cookie字段中(language參數)插入任意代碼,執行任意代碼,從而實現完全遠程接管整個服務器的目的,該漏洞利用方式簡單,危害性較大。漏洞影響范圍包括如下版本。
Discuz ML! V3.X存在代碼注入漏洞,
攻擊者通過精心構建的請求報文可以直接執行惡意的PHP代碼,
進一步可獲取整個網站的服務器權限。

漏洞影響版本:

Discuz!ML v.3.4,
Discuz!ML v.3.2,
Discuz!ML v.3.3 codersclub.org的產品

Discuz!ML是一個由CodersClub.org創建的多語言,集成,功能齊全的開源網絡平臺,

用于構建像“社交網絡”這樣的互聯網社區。使用這些軟件創建的數百個論壇包括v3.2,v3.3,v3.4。
1.3如何區分Discuz!ML網站

通常,這些站點包含以下類型的頁腳或站點的左下側。

Discuz! ML v.3.4、Discuz! ML v.3.3、Discuz! ML v.3.2
源碼下載鏈接:https://bitbucket.org/vot/discuz.ml/downloads/


0X2 漏洞分析!

根據公告定位文件source/module/portal/portal_index.php第32行
(, 下載次數: 37)

查看問題函數上方查看定義函數以及關聯文件的位置,可以看到template函數在/source/function/function_core.php中,繼續跟進
(, 下載次數: 36)


問題代碼如下所示。

$cachefile = './data/template/'.DISCUZ_LANG.'_'.(defined('STYLEID') ? STYLEID.'_' : '_').$templateid.'_'.str_replace('/', '_', $file).'.tpl.php';

程序將緩存文件寫在了/data/template/目錄下,文件名由DISCUZ_LANG等多個變量組成,問題就出在這兒了,看看DISCUZ_LANG的值是哪兒獲取來的:
(, 下載次數: 41)


可以看到從程序全部變量$_G[‘config’][‘output’][‘language’]中獲取了該值。繼續跟進看看該值可以定位到/source/class/discuz/discuz_application.php:
(, 下載次數: 35)


在304行,系統通過Cookie獲取了語言的值,并在341行定義了前面要找的DISCUZ_LANG,值為Cookie中獲取到的lng。可以看到整個過程沒有任何的過濾。整個流程即就是:外部參數‘ lng。可以看到整個過程沒有任何的過濾。整個流程即就是:外部參數`lng。可以看到整個過程沒有任何的過濾。整個流程即就是:外部參數‘lng(即language語言)可控,導致template函數生成的臨時模板文件名可操縱,插入自己的代碼,最終include_once`包含一下最終導致了代碼注入。那這里可以搜一下其他的可利用點,全局查找:
(, 下載次數: 32)

大約有60多個點可以用的。

0X3 漏洞利用

訪問論壇主頁,在Cookie的language字段值后面拼接php代碼:

  1. ‘.phpinfo().’
復制代碼

(, 下載次數: 31)


執行命令獲得管理員權限:
(, 下載次數: 37)

0X4 漏洞修復
對discuz的版本進行全面的升級,在language參數值中進行全面的安全過濾,限制逗號,以及閉合語句的執行,還有\斜杠都一些特殊惡意代碼進行攔截,必要的話對其進行轉義,如果對代碼不是太熟悉的話,也可以找專業的網站安全公司來進行漏洞修復,國內也就SINE安全公司,綠盟,啟明星辰比較專業。再一個對discuz目錄的權限進行安全分配,限制data目錄的腳本執行權限,防止PHP腳本的運行,最重要的就是做好網站的安全防護。
打開 source/class/discuz/discuz_application.php
找到
  1. if(!$lng) {
復制代碼

修改為
  1. if(!preg_match("#^[\w]+$#i", $lng)){
  2.         $lng = '';
  3. }
  4. if(!$lng) {
復制代碼


原文地址:http://esoln.net/esoln/blog/2019/06/14/discuzml-v-3-x-code-injection-vulnerability/

作者: allthebest    時間: 2019-7-24 20:41
謝謝分享




歡迎光臨 Discuz! 官方交流社區 (http://www.9999xn.com/) Powered by Discuz! W1.0