Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
PIL-CVE-2017-8291 — CVE-2017-8291 (GhostButt)에 대한 교육용 PoC로, Python PIL/Pillow EPS 이미지 처리 시 GhostScript 샌드박스 우회를 통한 원격 명령 실행을 시연합니다. | Kitploit
도구/GitHubGitHub/daniilorchikov/pil-cve-2017-8291
Vulnerability AnalysisExploitationWeb Application ExploitationLearning & EducationBinary ExploitationLabs & Practice
GitHubdaniilorchikov/pil-cve-2017-8291

PIL-CVE-2017-8291

CVE-2017-8291 (GhostButt)에 대한 교육용 PoC로, Python PIL/Pillow EPS 이미지 처리 시 GhostScript 샌드박스 우회를 통한 원격 명령 실행을 시연합니다.

저장소 보기
1710개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Python PIL/Pillow Remote Command Execution (GhostButt / CVE-2017-8291)

中文版本(Chinese version)

Python PIL (Pillow)는 Python에서 널리 사용되는 이미지 처리 라이브러리입니다. 다양한 이미지 포맷을 지원하며 강력한 이미지 조작 기능을 제공합니다.

Python 이미지 처리 모듈 PIL (Pillow)은 GhostButt 취약점(CVE-2017-8291)의 영향을 받습니다. 이는 내부적으로 EPS 이미지를 처리하기 위해 GhostScript를 호출하기 때문입니다. 이 취약점으로 인해 공격자는 대상 시스템에서 임의의 명령을 실행할 수 있습니다.

PIL이 이미지를 처리할 때, 파일 헤더(매직 바이트)를 기반으로 이미지 유형을 결정합니다. EPS 파일(헤더가 %!PS로 시작)로 식별되면, 해당 파일을 PIL/EpsImagePlugin.py로 전달하여 처리합니다.

이 모듈에서 PIL은 시스템의 GhostScript 명령(gs)을 호출하여 이미지 파일을 처리합니다:

command = ["gs",
            "-q",                         # quiet mode
            "-g%dx%d" % size,             # set output geometry (pixels)
            "-r%fx%f" % res,              # set input DPI (dots per inch)
            "-dBATCH",                    # exit after processing
            "-dNOPAUSE",                  # don't pause between pages,
            "-dSAFER",                    # safe mode
            "-sDEVICE=ppmraw",            # ppm driver
            "-sOutputFile=%s" % outfile,  # output file
            "-c", "%d %d translate" % (-bbox[0], -bbox[1]),
                                            # adjust for image origin
            "-f", infile,                 # input file
            ]

# Code to check if GhostScript is installed is omitted
try:
    with open(os.devnull, 'w+b') as devnull:
        subprocess.check_call(command, stdin=devnull, stdout=devnull)
    im = Image.open(outfile)

-dSAFER 플래그(안전 모드)가 설정되어 있지만, GhostScript의 샌드박스 우회 취약점(GhostButt CVE-2017-8291)으로 인해 이 안전 메커니즘을 우회하여 임의 명령 실행이 가능합니다.

현재 작성 시점에서도 최신 공식 GhostScript 버전 9.21은 이 취약점에 여전히 영향을 받습니다. 따라서 운영 체제에 GhostScript가 설치되어 있는 한, PIL은 명령 실행에 취약합니다.

참고 자료:

  • Exploiting Python PIL Module Command Execution Vulnerability
  • CVE-2017-8291 Details
  • GhostScript Security Advisory

환경 설정

CVE-2017-8291 취약점에 영향을 받는 웹 애플리케이션을 시작하려면 다음 명령을 실행하세요:

docker compose up -d

시작 후, http://your-ip:8000/에 접속하여 업로드 페이지에 접근합니다.

취약점 공격

이 애플리케이션의 정상 기능은 사용자가 PNG 파일을 업로드할 수 있도록 하는 것입니다. 백엔드는 PIL을 사용하여 이미지를 로드하고 크기를 출력합니다. 그러나 실행 가능한 EPS 파일의 확장자를 PNG로 변경하여 업로드함으로써 이를 악용할 수 있습니다. 백엔드는 확장자가 아닌 파일 헤더를 기반으로 이미지 유형을 결정하므로 파일 확장자 검사를 우회할 수 있습니다.

예를 들어, poc.png를 업로드하면 서버에서 touch /tmp/aaaaa 명령이 실행됩니다. POC의 명령을 리버스 셸 명령으로 수정하면 서버에 셸 접근 권한을 얻을 수 있습니다:

취약점 공격

도구 다운로드