Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
PIL-CVE-2017-8291-study | Kitploit
Outils/GitHubGitHub/shun1403/pil-cve-2017-8291-study
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebApprentissage et ÉducationLabs et Pratique
GitHubshun1403/pil-cve-2017-8291-study

PIL-CVE-2017-8291-study

Voir le dépôt
il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

PIL-CVE-2017-8291

  • École White Hat, 3e promotion, classe 13, 백승훈(@shun1403) https://github.com/shun1403/PIL-CVE-2017-8291.git
  • Environnement : Ubuntu Linux

Configuration de l'environnement

  • Mettez à niveau vers V2 via sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • En cas d'erreur lors de l'exécution, réinitialisez docker avec les commandes suivantes
  • 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
  • Si la version s'affiche correctement lors de la vérification, tout est en ordre

git clone

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

  • Après le clone, accédez au chemin de la vulnérabilité que vous souhaitez traiter

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

  • Réalisez l'exercice en vous référant au fichier yml suivant

  • docker compose up -d : commande qui crée les conteneurs et les exécute en arrière-plan

  • Ensuite, accédez à localhost:8000/ et vérifiez la page web permettant le téléversement de fichiers image

  • Téléversez le fichier poc.png falsifié situé dans le même répertoire

  • Après le téléversement, vous pouvez observer le résultat suivant

  • image

  • En fonctionnement normal, après le téléversement d'un fichier PNG, la largeur et la hauteur de l'image sont affichées. Cependant, comme le backend classe le type d'image en fonction de l'en-tête du fichier, un fichier EPS contenant des commandes exécutables peut être renommé avec l'extension PNG et téléversé, en ignorant l'extension.

  • Grâce à cela, lors du téléversement du fichier poc.png, l'exécution de la commande 'tocuh /tmp/aaaaa' devient possible. En remplaçant la commande contenue dans le fichier POC par une commande de reverse shell, il est possible d'obtenir un shell.

  • Après avoir téléversé ce fichier, connectez-vous au conteneur docker et allez dans /tmp : vous constaterez que le fichier aaaaa a été créé par la commande.

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,                  # 입력 파일 지정
          ]

Omission du code de vérification de l'installation de GhostScript

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

Résultats

image

Conclusion

Cette vulnérabilité, survenue dans la Python Imaging Library (PIL), a été exploitée dans le cadre de la CVE-2017-8291. La vulnérabilité provient du fait que PIL détermine le type d'image en se basant sur l'en-tête du fichier et non sur son extension. Ainsi, même si le fichier est en réalité au format EPS, il suffit de n'en modifier que l'extension en PNG et de le téléverser : le serveur appelle alors GhostScript, ce qui entraîne l'exécution de commandes arbitraires insérées dans le fichier.

Au cours du projet, en téléversant le fichier poc.png falsifié et en confirmant la création du fichier /tmp/aaaaa sur le serveur, nous avons reproduit le fait que cette vulnérabilité peut réellement conduire à une exécution de commandes (RCE, Remote Code Execution). De plus, nous avons constaté que cette vulnérabilité comporte la possibilité d'être étendue à des attaques avancées telles que le reverse shell, en détournant la fonctionnalité de traitement d'images prévue à l'origine.

Télécharger l’outil