Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2017-8291 — Laborat?rio baseado em Docker demonstrando explora??o de CVE-2017-8291 (GhostButt) via processamento de imagens EPS em Python PIL/Pillow, com uma aplica??o web vulnerável e exploit de prova de conceito. | Kitploit
Ferramentas/GitHubGitHub/shun1403/cve-2017-8291
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebCTFAprendizado e EducaçãoLabs e Prática
GitHubshun1403/cve-2017-8291

CVE-2017-8291

Laborat?rio baseado em Docker demonstrando explora??o de CVE-2017-8291 (GhostButt) via processamento de imagens EPS em Python PIL/Pillow, com uma aplica??o web vulnerável e exploit de prova de conceito.

Ver Repositório
2há 1 anoAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Execução Remota de Comandos no Python PIL/Pillow (GhostButt / CVE-2017-8291)

中文版本(Chinese version)

O Python PIL (Pillow) é uma biblioteca popular de processamento de imagens para Python. Ela suporta vários formatos de imagem e fornece recursos poderosos de manipulação de imagens.

O módulo de processamento de imagens Python PIL (Pillow) é afetado pela vulnerabilidade GhostButt (CVE-2017-8291) porque ele chama internamente o GhostScript para processar imagens EPS. Essa vulnerabilidade permite que atacantes executem comandos arbitrários no sistema alvo.

Quando o PIL processa uma imagem, ele determina o tipo da imagem com base no cabeçalho do arquivo (Magic Bytes). Se identificar um arquivo EPS (cabeçalho começando com %!PS), ele passa o arquivo para PIL/EpsImagePlugin.py para processamento.

Neste módulo, o PIL chama o comando GhostScript do sistema (gs) para processar o arquivo de imagem:

root@kitploit:~
command = ["gs",
            "-q",                         # modo silencioso
            "-g%dx%d" % size,             # definir geometria de saída (pixels)
            "-r%fx%f" % res,              # definir DPI de entrada (pontos por polegada)
            "-dBATCH",                    # sair após o processamento
            "-dNOPAUSE",                  # não pausar entre páginas,
            "-dSAFER",                    # modo seguro
            "-sDEVICE=ppmraw",            # driver ppm
            "-sOutputFile=%s" % outfile,  # arquivo de saída
            "-c", "%d %d translate" % (-bbox[0], -bbox[1]),
                                            # ajustar para a origem da imagem
            "-f", infile,                 # arquivo de entrada
            ]

# O código para verificar se o GhostScript está instalado foi omitido
try:
    with open(os.devnull, 'w+b') as devnull:
        subprocess.check_call(command, stdin=devnull, stdout=devnull)
    im = Image.open(outfile)

Embora a flag -dSAFER esteja definida (modo seguro), uma vulnerabilidade de bypass de sandbox no GhostScript (GhostButt CVE-2017-8291) permite que esse mecanismo de segurança seja contornado, possibilitando a execução arbitrária de comandos.

Até o momento desta escrita, mesmo a versão mais recente oficial do GhostScript, a 9.21, ainda é afetada por essa vulnerabilidade. Portanto, desde que o GhostScript esteja instalado no sistema operacional, o PIL está vulnerável à execução de comandos.

Referências:

  • Exploiting Python PIL Module Command Execution Vulnerability
  • Detalhes do CVE-2017-8291
  • Aviso de Segurança do GhostScript

Configuração do Ambiente

Execute o seguinte comando para iniciar uma aplicação web vulnerável à vulnerabilidade CVE-2017-8291:

root@kitploit:~
docker compose up -d

Após iniciar, visite http://your-ip:8000/ para acessar a página de upload.

Exploração da Vulnerabilidade

A funcionalidade normal desta aplicação permite que os usuários carreguem um arquivo PNG. O backend usa o PIL para carregar a imagem e exibir suas dimensões. No entanto, podemos explorar isso alterando a extensão de um arquivo EPS executável para PNG e carregando-o. Como o backend determina o tipo da imagem com base no cabeçalho do arquivo, e não na extensão, a verificação da extensão do arquivo pode ser contornada.

Por exemplo, podemos carregar poc.png, que executará o comando touch /tmp/aaaaa no servidor. Modificando o comando no POC para um comando de reverse shell, podemos obter acesso shell ao servidor:

Exploração da Vulnerabilidade

Baixar ferramenta