1月6日午後、Discuzベースでオンラインリリース! 7.1 および 7.2 の脆弱性と関連する攻撃方法。これを受けて、PHPChinaはDZ研究開発部門に緊急に連絡し、PHPChina公式フォーラムプログラムの関連パッチを可能な限り短期間で作成し、PHPChinaフォーラムのメンバーの通常の使用と安全な運営を確保しました。 PHPChina をご愛顧いただき、誠にありがとうございます。当社は常にユーザーを第一に考え、より安全で便利な学習およびコミュニケーション環境を提供してまいります。以下は関連する導入です:
まず最初に、この脆弱性は xhming から送信され、その後、11 時頃に読み取られたものであることを説明します。 1 月 5 日の夜、ハッカーのコア グループの要求で、xhming は私に poc を与え、私は経験値を与えました。そして、同じ問題が見つかりました。夜中の2時頃の時点では、私が与えた経験値を知っているのはt00lsコアグループの数人だけでしたが、まさか半日後にはその経験値があちこちにあるとは予想もしていませんでした。昨日持っていたバージョンから。
AとBの関係が良好でAがBに送る、BとCが仲が良い、BがCに送るなどの速度で経験値が拡散するのは想像に難くありません。怒りに耐えられず噂を漏らしたので、他の人に送ります。最も耐えられないのは、グループ内で何人かのSBがタカを握っていることです。本当に何も言いたくないのですが、いつあなたがタカを握る番になるでしょうか?人の心は古くからあるものではないので、もし将来に何かがあれば、それは自分の中にしまっておくべきです。
今朝、この脆弱性について Saiy に話しました。公式の DZ パッチは間もなく公開されます。
関連記事: Cosun が Discuz 7.2 パッチ 20100110 をリリースしました
特記事項: 脆弱性を生成する $scriptlang 配列はプラグインのインストール後に初期化されるため、プラグインをインストールしたユーザーは影響を受けません。
脆弱性の紹介:
ディスカッション!新しいバージョン 7.1 および 7.2 の showmessage 関数の eval で実行されるパラメーターは初期化されず、任意に送信できるため、あらゆる PHP コマンドを実行できます。
脆弱性分析:
このリモート コード実行の脆弱性を分析してみましょう。この問題は非常に深刻です。次のようにシェルを記述できます。
1. この脆弱性は showmessage 関数に起因します:クリップボードにコピー引用コンテンツ: [www.bkjia.com]
function showmessage($message, $url_forward = '', $extra = '', $forwardtype = 0) {
extract($GLOBALS, EXTR_SKIP);//危険な使用法、初期化されていない変数を関数に直接取り込む可能性があります。問題、www.oldjun.com より$advlist;
define('CACHE_FORBIDDEN', TRUE);
$hookscriptmessage = $show_message;$messagehandle = 0;
$msgforward = unserialize($_DCACHE['settings']['msgforward']);リフレッシュタイム = intval($msgforward['refreshtime']);
$refreshtime = empty($forwardtype) ? $refreshtime : ($refreshtime ? $refreshtime : 3);
$msgforward['refreshtime'] = $refreshtime * 1000;
$url_forward = empty($url_forward) '' : (empty($_DCOOKIE['sid']) && $transsidstatus ? transsid($url_forward) : $url_forward);
$seccodecheck = $seccodestatus & 2; $_DCACHE['settings']['funcsiteid'] && $_DCACHE['settings']['funckey'] && $funcstatinfo && !IS_ROBOT) {
$statlogfile = DISCUZ_ROOT.'./forumdata/funcstat.log' ; if($fp = @fopen($statlogfile, 'a')) {
@flock($fp, 2)
if(is_array($funcstatinfo)) {
$funcstatinfo = array_unique($funcstatinfo); $funcstatinfo as $funcinfo) {
fwrite($fp, funcstat_query($funcinfo, $message)."n");
}
} else {
fwrite($fp, funcstat_query($funcstatinfo, $message)."n ");
}
fclose($fp);
$funcstatinfo = $GLOBALS['funcstatinfo'] = '';
}
}
if(!define('STAT_DISABLED') && STAT_ID > 0 && !IS_ROBOT ) {
write_statlog($message);
}
if($url_forward && (!empty($quickforward) || empty($inajax) && $msgforward['quick'] && $msgforward['messages'] && @ in_array($message, $msgforward['messages']))) {
updatesession();
dheader("location: ".str_replace('&', '&', $url_forward)); empty($infloat)) {
if($extra) {
$messagehandle = $extra;
}
$extra = '';
if(in_array($extra, array('HALTED', 'NOPERM ') )) {
$discuz_action = 254;
} else {
$discuz_action = 255;
include language('messages')
$vars =explode(':', $message);// :
if(count($vars) == 2 && isset($scriptlang[$vars[0]][$vars[1]])) {//2 つの数値で十分です。分割するには:
eval("$ show_message = "".str_replace('"', '"', $scriptlang[$vars[0]][$vars[1]])."";");//$scriptlang は初期化されていません、カスタマイズできます、www.oldjun.com より
} elseif(isset($lang[$message])) {
$pre = $inajax ? 'ajax_' : '';
eval("$show_message = ""; language[$pre.$message]) ? $ language[$pre.$message] : $ language[$message])."";");
unset($pre);
}
. ...
}
合計 2 ページ:
前のページ
1
2