
CVE-2015-3224 エクスプロイト - Rails Web Console RCE
CVE-2015-3224 のエクスプロイトのJavaScript実装(Node.js)です。このツールは、脆弱性のあるバージョンの web-console gem を実行しているRuby on Railsアプリケーションを標的とし、認証なしのリモートコード実行(RCE)を可能にします。
CVE-2015-3224 により、攻撃者はRailsの web-console gem のIPホワイトリスト保護をバイパスできます。
web-console は開発中のみ使用することを意図したデバッグツールです。デフォルトでは、127.0.0.1(localhost)IPアドレスへのアクセスを制限します。しかし、脆弱なバージョンでは、適切な検証なしに X-Forwarded-For HTTPヘッダーに基づいてクライアントのIPアドレスを検証します。
特定の偽装IP(例:0000::1)を含むリクエストを作成することで、攻撃者はアプリケーションを欺き、リクエストが信頼されたローカルソースから来ていると思い込ませることができます。コンソールはRubyコードを評価するため、これは即座に**リモートコード実行(RCE)**につながります。
このスクリプトは、以下の2つの主要な手順でエクスプロイトプロセスを自動化します:
偵察とパスの抽出:
data-remote-path を抽出します。これはコンソールと対話するために必要な一意のセッションIDです。ペイロードインジェクション:
X-Forwarded-For: 0000::1 ヘッダーを注入してIPチェックをバイパスします。input パラメーターに含めて送信します(form-url-encoded ボディとして適切にフォーマット)。fetch サポートにはv18以上を推奨)。リポジトリをクローンし、Node.jsでスクリプトを直接実行します:
# Syntax
node exploit.js [TARGET_URL] [COMMAND]
# Example
node exploit.js http://vulnerable-site.com "uname -a"
[*] Target: http://vulnerable-site.com
[*] Command: whoami
[+] Console path found: console/repl_sessions/cd984a0d............
[+] Command Output:
---------------------------------------------------
webrick
---------------------------------------------------
この脆弱性を修正するには、Gemfile 内の web-console gem をバージョン2.1.3以上に更新してください:
gem 'web-console', '>= 2.1.3'
あるいは、本番環境ではwebコンソールが厳密に無効化されていることを確認してください。
MITライセンスの下で配布されています。