Jenkins Arbitrary File Read to RCE via "Remember Me"
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
このブログ投稿では、Jenkinsのローカルファイルインクルージョン脆弱性をRCEに変換する素晴らしい方法を見つけることができます: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
これは、任意のクッキーを作成することがRCEを取得するために悪用される投稿の部分のAIによって作成された要約です。自分で要約を作成する時間ができるまでの間のものです:
機能要件: "Remember me"が有効である必要があります(デフォルト設定)。
アクセスレベル: 攻撃者は全体/読み取り権限が必要です。
秘密アクセス: 重要なファイルからバイナリおよびテキストコンテンツを読み取る能力。
ユーザー情報の取得
各ユーザーのために$JENKINS_HOME/users/*.xml
からユーザー設定と秘密をアクセスして収集します:
ユーザー名
ユーザーシード
タイムスタンプ
パスワードハッシュ
秘密鍵の抽出
クッキーの署名に使用される暗号鍵を抽出します:
秘密鍵: $JENKINS_HOME/secret.key
マスターキー: $JENKINS_HOME/secrets/master.key
MACキーのファイル: $JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
トークンの準備
トークンの有効期限を計算:
トークンのためのデータを連結:
MACキーの復号化
MACキーのファイルを復号化:
署名の計算
HMAC SHA256を計算:
クッキーのエンコーディング
最終クッキーを生成:
セッション認証
CSRFおよびセッショントークンを取得:
/crumbIssuer/api/json
にリクエストを送信してJenkins-Crumb
を取得します。
応答からJSESSIONID
をキャプチャし、remember-meクッキーと一緒に使用します。
コマンド実行リクエスト
Groovyスクリプトを使用してPOSTリクエストを送信:
Groovyスクリプトは、システムレベルのコマンドやJenkins環境内の他の操作を実行するために使用できます。
提供されたcurlコマンドの例は、必要なヘッダーとクッキーを使用してJenkinsにリクエストを送信し、任意のコードを安全に実行する方法を示しています。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)