Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
PIL-CVE-2017-8291-study | Kitploit
Strumenti/GitHubGitHub/shun1403/pil-cve-2017-8291-study
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebApprendimento e FormazioneLab e Pratica
GitHubshun1403/pil-cve-2017-8291-study

PIL-CVE-2017-8291-study

Vedi Repository
1 anno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

PIL-CVE-2017-8291

  • Scuola White Hat, 3ª edizione, classe 13, Baek Seunghun(@shun1403) https://github.com/shun1403/PIL-CVE-2017-8291.git
  • Ambiente: Ubuntu Linux

Configurazione dell'ambiente

  • Aggiorna alla V2 tramite sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • In caso di errori durante l'esecuzione, reimposta docker con i seguenti comandi
  • sudo apt remove docker docker-engine docker.io containerd runc -y
  • sudo apt update
  • sudo apt install -y ca-certificates curl gnupg lsb-release
  • sudo mkdir -p /etc/apt/keyrings
  • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  • echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • sudo apt update
  • sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • docker compose version
  • Quando controlli la versione, se compare correttamente, è tutto a posto.

git clone

git clone https://github.com/vulhub/vulhub.git

  • Dopo il clone, entra nel percorso della vulnerabilità che intendi sfruttare

  • Qui: /vulhub/python/PIL-CVE-2017-8291

  • Procedi con l'esercitazione facendo riferimento al seguente file yml

  • docker compose up -d: comando per creare il container ed eseguirlo in background

  • Successivamente, accedi a localhost:8000/ e verifica la pagina web che consente il caricamento dei file image

  • Carica il file poc.png manipolato presente nello stesso percorso

  • Una volta completato il caricamento, si può notare che appare quanto segue

  • image

  • In condizioni normali, dopo il caricamento di un file PNG vengono stampate le dimensioni (larghezza e altezza) dell'immagine, ma poiché il backend classifica il tipo di immagine tramite l'header del file, ignorando l'estensione, è possibile rinominare un file EPS contenente comandi eseguibili con estensione PNG e caricarlo.

  • Sfruttando questo, caricando il file poc.png sarà possibile eseguire il comando 'tocuh /tmp/aaaaa'; se si sostituisce il comando all'interno del file POC con un comando di reverse shell, è possibile ottenere una shell.

  • Dopo aver caricato il file, accedendo al container docker e andando in /tmp, è possibile verificare che il file aaaaa è stato creato dal comando.

root@kitploit:~
command = ["gs",
            "-q",                         # 조용한 모드(출력 최소화)
            "-g%dx%d" % size,             # 출력 이미지 크기 설정 (픽셀 단위)
            "-r%fx%f" % res,              # 입력 이미지 해상도(DPI) 설정
            "-dBATCH",                    # 작업 완료 후 자동 종료
            "-dNOPAUSE",                  # 페이지 간 일시 정지 없이 연속 실행
            "-dSAFER",                    # 안전 모드 활성화
            "-sDEVICE=ppmraw",             # 출력 디바이스를 ppmraw로 설정
            "-sOutputFile=%s" % outfile,   # 출력 파일 경로 지정
            "-c", "%d %d translate" % (-bbox[0], -bbox[1]), 
                                            # 이미지 원점을 보정 (이동)
            "-f", infile,                  # 입력 파일 지정
          ]

Codice per la verifica dell'installazione di GhostScript omesso

root@kitploit:~
try:
    with open(os.devnull, 'w+b') as devnull:
        subprocess.check_call(command, stdin=devnull, stdout=devnull)
    im = Image.open(outfile)

Risultato

image

Conclusione

La vulnerabilità in questione si manifesta in Python Imaging Library (PIL) ed è stata analizzata in riferimento a CVE-2017-8291. La vulnerabilità si verifica perché PIL determina il tipo di immagine basandosi sull'header del file e non sull'estensione. Di conseguenza, caricando un file che in realtà è in formato EPS semplicemente rinominandolo con estensione PNG, il server chiama GhostScript e si è potuto constatare che è possibile eseguire comandi arbitrari inseriti nel file.

Durante lo svolgimento del progetto, caricando il file poc.png manipolato e verificando la creazione del file /tmp/aaaaa all'interno del server, è stato riprodotto che la vulnerabilità può effettivamente condurre all'esecuzione di comandi (RCE, Remote Code Execution). Inoltre, è stato possibile constatare che questa vulnerabilità può essere estesa ad attacchi avanzati come la reverse shell, sfruttando la funzionalità di elaborazione delle immagini originariamente prevista.

Scarica lo strumento