ホームページ  >  記事  >  運用・保守  >  XXL-JOB API インターフェイスへの不正アクセスの RCE 脆弱性を再現する方法

XXL-JOB API インターフェイスへの不正アクセスの RCE 脆弱性を再現する方法

WBOY
WBOY転載
2023-05-12 09:37:055138ブラウズ

XXL-JOB の説明

XXL-JOB は、軽量の分散タスク スケジューリング プラットフォームであり、その中心的な設計目標は、迅速な開発、容易な学習、軽量、容易な拡張です。ソースコードは現在公開されており、多くの企業のオンライン製品ラインに接続されており、すぐに使用できるようになっています。

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

1. 脆弱性の詳細

この脆弱性の中核的な問題は GLUE モードです。 XXL-JOB は、「GLUE モード」を通じて多言語およびスクリプト タスクをサポートします。このモードのタスク機能は次のとおりです:

● 多言語サポート: Java、Shell、Python、NodeJS、 PHP、PowerShell...などのタイプ。

# Web IDE: タスクはソース コード形式でディスパッチ センターに維持され、Web IDE を介してオンライン開発とメンテナンスをサポートします。

# 動的効果: ユーザーが Web IDE を介してオンラインで開発したタスク コードは、リモートの実行プログラムにプッシュされ、実行のためにリアルタイムでロードされます。

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

#上図に示すように、GLUE モードのタスク コードに攻撃コードを記述し、それをエグゼキュータにプッシュして実行すると、リモート攻撃が発生する可能性があります。攻撃します。

[脆弱性の説明]

XXL-JOB の Restful API インターフェイスまたは RPC インターフェイスには認証手段が設定されていないため、不正な攻撃者が悪意のあるリクエストを作成し、リモートで実行される可能性があります。 .コマンド

[脆弱性評価]

高リスク

[影響を受けるバージョン]

XXL- JOB

2. 環境セットアップ

全体的なアイデア: ソース コードのダウンロード -> Maven インストールの依存関係 -> 設定とデプロイメント「スケジュール センター」 "- >デプロイメントの設定 "executor プロジェクト"-> デプロイメントの完了

ローカル開発環境: Java8 Maven3.6

1. Github ダウンロード ソース コード

アドレス: https : //github.com/xuxueli/xxl-job/releases/tag/v2.2.0

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

2.Maven は必要な依存関係をダウンロードします

Idea は、解凍されたソース コードを開き、関連する依存関係を pom に自動的にインストールします。ターミナルで maven コマンドを使用して、必要な依存関係をダウンロードすることもできます。

3. データベース設定

スケジューリング データベース初期化 SQL スクリプトの場所は次のとおりです:

/xxl-job/doc/db/tables_xxl_job.sql

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

# #ローカルなので mysql をインストールするには、docker を使用してインストールします。

a) docker pull mysql:5.7

b) sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

This mysql コンテナを開始しました。アカ​​ウントは root、パスワードは 123456です。

navicat を使用してデータベースに接続します。

左下隅をクリックしてテストを完了できます。繋がり。インポートされたデータベースを右クリックし、「SQL ファイルの実行」を選択し、「開始」をクリックしてデータベースのインポートを完了します。 如何进行XXL-JOB API接口未授权访问RCE漏洞复现

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

4.「スケジュール センター」の設定と展開

スケジュール センター プロジェクト: xxl-job-admin

機能: タスク スケジューリング プラットフォーム上のスケジューリング タスクを一元管理し、スケジューリングの実行をトリガーし、タスク管理プラットフォームを提供します。実際の状況に応じて、application.properties のデータベース構成を変更できます。

如何进行XXL-JOB API接口未授权访问RCE漏洞复现#XxlJobAdminApplication を実行してディスパッチ センターを開始します。

推奨されるものを使用します。実行を管理する Springboot 構成ファイルを確認し、xxl.job.executor.logpath パラメータを見つけます。パスを作成または変更して、プログラムの実行に関する問題を防ぐことができます。新しい Mac システムにデータ パスが存在しません。mkdir を使用したパスの作成に失敗したことがわかりました。これは、Mac システムで Sip がオフになっているためです。Sip 制限を削除するには、sudo mount -uw / を使用してください。 XxlJobExecutorApplication を実行してエグゼキューターを開始します。ブラウザで //localhost:8080/ を開き、ログイン インターフェイスを確認します。起動が成功したことを確認してください。デフォルトのログイン アカウントは「admin/123456」です。

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

注: 如何进行XXL-JOB API接口未授权访问RCE漏洞复现

最初に /data/applogs/xxl-job を作成し、プログラム内の多くの構成ファイルにこのパスを使用することをお勧めします

如何进行XXL-JOB API接口未授权访问RCE漏洞复现ディスパッチ センター データベース構成の変更

Linux /Unix は lsof を使用してポート占有をチェックし、起動の失敗を防ぐことができます

実際の状況に応じてディスパッチセンターとエグゼキュータを個別に導入可能

3. 脆弱性の再発

公式ドキュメントを参照するとタスクが確認できますエグゼキュータでトリガーされる RESTful API インターフェイスの説明

如何进行XXL-JOB API接口未授权访问RCE漏洞复现タスク実行モードは次のとおりです

如何进行XXL-JOB API接口未授权访问RCE漏洞复现GulueTypeEnum ソース コードを表示します

如何进行XXL-JOB API接口未授权访问RCE漏洞复现そこで、Burpsuite を使用しますPOC を構築するには

如何进行XXL-JOB API接口未授权访问RCE漏洞复现

ヒント:

glueSource を変更するときに、実行が有効にならない場合は、jobId

When を変更してください。プロジェクトを再起動すると、ポート起動例外が発生したことがわかりました。BurpSuite を閉じてください

XXL-JOB の正式版には独自の認証コンポーネントが付属しているため、システムの基礎となる通信のセキュリティを確保できますオンにしたとき。 XXL-JOB の作成者は、通常の状況では、ディスパッチ センターと実行者の間の基本的な通信は安全であり、リモート コマンドの脆弱​​性は存在しないと述べています。ただし、アクセス トークンがエグゼキュータで有効になっていない場合、不正なスケジューリング リクエストを特定して阻止することはできません。悪意のある要求者は、GLUE モードを使用して悪意のある攻撃コードをプッシュし、リモート攻撃を実行する可能性があります。したがって、XXL-JOB の作成者は、この問題は本質的に「脆弱性」ではないと考えており、公式 Web サイト版では、保護のために有効にすることができる認証コンポーネントが提供されています。

4. 修復の提案

1. XXL-JOB に付属する認証コンポーネントをオンにします: 公式ドキュメントで「xxl.job.accessToken」を検索し、ドキュメントの指示に従ってください。有効にするだけです。

2. ポートアクセス制限: セキュリティグループ制限を設定することで、指定された IP のみがポートにアクセスできるようになります

以上がXXL-JOB API インターフェイスへの不正アクセスの RCE 脆弱性を再現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。