
개인 교육 목적의 CVE-2021-4034(PwnKit) PoC.
이 저장소는 CVE-2021-4034(일명 PwnKit)에 대한 개념 증명을 포함하고 있습니다. 개인 교육 및 학습 목적으로만 개발되었습니다. 자신이 소유하거나 명시적으로 테스트 권한을 부여받은 환경에서만 사용하십시오.
익스플로잇을 빌드하려면 다음이 필요합니다:
pkexec는 Polkit의 유틸리티로, 권한이 있는 사용자가 다른 사용자(일반적으로 관리자 권한)로 프로그램을 실행할 수 있게 해주며 sudo와 유사합니다. CVE-2021-4034는 이 바이너리에 영향을 미치는 메모리 손상 취약점입니다. 문제는 argc == 0일 때 인수 처리 오류에서 발생합니다. 이로 인해 메모리에서 첫 번째 환경 변수 포인터를 제어할 수 있는 범위를 벗어난 쓰기가 발생합니다. 특정 조건에서 권한이 없는 로컬 사용자가 루트로 권한을 상승시킬 수 있습니다. 자세한 내용은 여기에서 확인할 수 있습니다: https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt
최종 익스플로잇은 완전히 자체 포함되어 있으며 외부 라이브러리나 추가 바이너리가 필요하지 않습니다.
배포판: Ubuntu 20.04 LTS
커널 버전: 5.4.0-42-generic
Polkit 버전: 0.105-26ubuntu1 (패치되지 않음)
포함된 셸(shell.asm)은 Linux용 x86_64 어셈블리로 작성되었습니다. 공유 객체(.so)로 컴파일되어 익스플로잇에 포함됩니다.
선택적으로 셸은 배포판 간 이식성을 높이기 위해 C로 구현할 수 있지만, 학습 목적과 저수준 어셈블리 코딩 연습을 위해 ASM 버전을 유지합니다.
참고: 이 익스플로잇과 셸은 x86_64 Linux 환경에서만 호환됩니다. 다른 아키텍처(예: ARM 또는 i386)에서는 작동하지 않습니다.
컴파일:
make
실행:
./exploit
정리:
make clean
이 취약점은 2022년 1월에 패치되었습니다.
패치되지 않은 버전의 policykit-1을 실행 중인 경우 시스템이 취약할 수 있습니다. 임시 완화 조치로 pkexec에서 SUID 비트를 제거할 수 있습니다:
chmod -s /bin/pkexec