ホームページ  >  記事  >  バックエンド開発  >  最新の SQL インジェクション 0day 脆弱性が DEDECMS に存在します - 再び存在します。それに対処する方法

最新の SQL インジェクション 0day 脆弱性が DEDECMS に存在します - 再び存在します。それに対処する方法

WBOY
WBOYオリジナル
2016-06-13 13:33:17777ブラウズ

最新の DEDECMS SQL インジェクション 0day 脆弱性 - 再び登場
4 月 29 日のニュース: 国内セキュリティ調査チーム「Know Chuangyu」が、最新の DEDECMS SQL インジェクション 0day を傍受したと主張しました。最新バージョン 5.7 は現在 DEDECMS からダウンロードできます。公式 Web サイトも影響を受けていますが、この警告が発行された時点では、公式はまだパッチや解決策を提供していません。この脆弱性は悪用されやすく、dedecms のインストール後に脆弱性モジュールがデフォルトで有効になります。

Chuangyu は 3 つの一時的な解決策を提供していることを知ってください:

解決策 1、一時的なパッチには 4 つの手順が必要です

1. magic_quotes_gpc = On であることを確認してください

詳細開く方法: php インストール ディレクトリで php.ini を開き (appserv などの統合環境を使用している場合、php.ini はシステム ドライブ文字: windowsphp.ini にある可能性があります)、magic_quotes_gpc を検索して、オンに設定します。

2.

/plus/carbuyaction.php 22 行目付近

if($cfg_mb_open == 'N') { ShowMsg("システムはメンバーシップ関数を閉じました, したがって、このページにはアクセスできません!","javascript:;"); exit(); }



$rs =array();
の下にコード行を追加します。
3.

member/ajax_membergroup.php の 33 行目付近、つまり

if(empty($membergroup)){ echo "まだグループを設定していません!"; exit; }

以下のコードを追加します:

if(strpos($membergroup,"'")){ echo "SQL インジェクション保護の一時パッチ、Chuangyu セキュリティ チームが警告していることを知っておいてください。公式パッチに注意してください!"; exit; }

4.

元のメンバー/ajax_membergroup.php 36 行目付近

$row = $dsql-> GetOne("SELECT グループ名 FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id={$membergroup}");

に変更されました

$row = $dsql- >GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id='{$membergroup}'");

オプション 2: バックグラウンドでメンバーシップ機能を無効にするウェブサイト管理者として

システム -> 基本システム パラメーター -> メンバー設定 -> メンバーシップ機能を有効にするかどうかを変更します (いいえ)

オプション 3。メンバーシップ関数が必要な場合は、脆弱なファイル/メンバー /ajax_membergroup.php の名前を直接変更するか削除することを検討できます。これは最も暴力的ですが最も効果的な方法です。

注: この記事で提供されている一時的なパッチは、システムにわずかな影響を与えるだけであり、特定のパッチはまだテストされていません。

-----解決策--------------------------------
phpnewnew が貢献しています。お疲れ様でした。皆さんに感謝します。DEDECMS ユーザーは幸いです。
------解決策---------
私は DEDE をよく使用しますが、時々ハッキングされます。
------解決策---------

話し合う

引用:

phpnewnew が貢献しています。お疲れ様でした。皆さんに感謝します。DEDECMS ユーザーは幸いです。


フライングマン~コピーします、それは警備会社の修正コードですカカ

------解決策---------
は考えられません
$row = $ dsql ->GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id={$membergroup}");
これは脅威となる可能性があります

ちょっと根拠がない?
------解決策---------
話し合う

考慮されません
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE Mid = {$cfg_ml->M_ID} AND id={$membergroup}");
これは脅威となる可能性があります

ちょっと根拠がないですよね?

------解決策---------
$membergroup を未処理のダイレクト URL 変数として設定します
次に
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE Mid = {$cfg_ml->M_ID} AND id=0 or 1=1"
get に移動しますテーブルの最初のデータ
この最初のデータは通常、分類のルートとなるため、脅威となることはありません。
------解決策------------------
これは、{$membergroup} がuser 操作したデータを再整形して注入することはできませんか?

ディスカッション

私はそうは思いません
$row = $dsql-> GetOne("SELECT groupname FROM #@__member_group WHERE mid = {$cfg_ml->M_ID} AND id={$membergroup}");
これは脅威となる可能性があります

ちょっと根拠がありませんね。

------解決策-----
他のテーブルを結合することはできないでしょうか?権限がある場合は、mysql 関数を使用してファイル コードを表示し、root パスワードを使用してログインし、php コードを挿入し、ポニーをアップロードするためのフォームを出力できます。 。 。 。 。 。

上記は単なるアイデアです。

議論してください

$membergroup を未処理の直接 URL 変数
とすると、
$row = $dsql->GetOne("SELECT groupname FROM #@__member_group WHERE Mid = {$cfg_ml->M_ID} AND id=0 または 1 =1"
テーブル内の最初のデータを取得するだけです
この最初のデータは通常、分類のルートであるため、脅威となることはありません

------解決策---------
話し合う

他のテーブルを結合することはできませんか? root 権限がある場合は、mysql 関数を使用してファイル コードを表示し、root パスワードを使用してログインし、フォームを出力するための PHP コードを挿入できます。ポニーをアップロードします。 。 。 。 。 。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。