
CVE-2022-0847 "Dirty Pipe" 취약점에 대한 스크립트 기반 Linux 권한 상승

CVE-2022-0847 Linux "Dirty Pipe" 취약점을 확인하고 악용하는 Bash 스크립트
이 스크립트는 취약한 시스템의 권한이 없는 사용자가 다음을 수행할 수 있게 합니다:
이 저장소에는 2개의 익스플로잇이 포함되어 있습니다:
root 비밀번호를 "piped"로 바꾸고 원래 /etc/passwd 파일을 /tmp/passwd.bak에 백업합니다. 그런 다음 익스플로잇은 상승된 root 셸에 대한 접근을 제공하고 셸을 종료하면 원래 passwd 파일을 복원합니다.

root로 실행되는 읽기 전용 SUID 프로세스 메모리에 데이터를 주입하고 덮어씁니다.

이 저장소를 클론하고 작업 디렉토리로 이동합니다
git clone https://github.com/rexpository/linux-privilege-escalation.git
cd linux-privilege-escalation
현재 대상 시스템이 취약한지 확인합니다
./check.sh
익스플로잇을 컴파일하기 위해 GCC를 설치합니다
sudo apt-get install gcc
bash 스크립트를 실행 가능하게 설정하고 실행하여 두 익스플로잇의 컴파일을 자동화합니다
chmod +x compile.sh
./compile.sh
원하는 익스플로잇 바이너리를 실행합니다
./exploit-1
또는
./exploit-2 /usr/bin/sudo
이 취약점은 프로세스 간 단방향 통신에 사용되는 pipe 도구에 존재하므로 *"Dirty Pipe"*라는 이름이 붙었습니다.
권한이 없는 로컬 사용자가 이 취약점을 악용하여 Linux 커널에서 읽기 전용으로 간주되는 파일을 덮어쓸 수 있으며, 이를 통해 시스템에서 권한을 상승시킬 수 있습니다.
이 취약점은 pipe 버퍼 구조를 생성하는 동안 부분적으로 초기화되지 않은 메모리를 사용하기 때문에 발생합니다. 새 구조의 멤버를 0으로 초기화하지 않으면 flags 값이 오래된 값으로 남게 되며, 공격자는 이를 악용하여 원래 읽기 전용 속성으로 표시된 캐시의 페이지에도 쓰기 액세스를 얻을 수 있습니다.
인프라가 이 위협 및 유사한 위협으로부터 보호되도록 하려면 다음을 수행하십시오: