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
PIL-CVE-2017-8291 — PoC educacional para CVE-2017-8291 (GhostButt) demonstrando execução remota de comandos via processamento de imagens EPS com Python PIL/Pillow e bypass da sandbox do GhostScript. | Kitploit
Ferramentas/GitHubGitHub/daniilorchikov/pil-cve-2017-8291
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebAprendizado e EducaçãoExploração de BináriosLabs e Prática
GitHubdaniilorchikov/pil-cve-2017-8291

PIL-CVE-2017-8291

PoC educacional para CVE-2017-8291 (GhostButt) demonstrando execução remota de comandos via processamento de imagens EPS com Python PIL/Pillow e bypass da sandbox do GhostScript.

Ver Repositório
10há 9 mesesAinda 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)

中文版本(Versão chinesa)

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

O módulo de processamento de imagens do 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 de imagem com base no cabeçalho do arquivo (Magic Bytes). Se ele identificar um arquivo EPS (cabeçalho iniciando com %!PS), ele passa o arquivo para o PIL/EpsImagePlugin.py para processamento.

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

root@kitploit:~
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)

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 de comandos arbitrários.

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

Referências:

  • Explorando a Vulnerabilidade de Execução de Comandos no Módulo PIL do Python
  • 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 à CVE-2017-8291:

root@kitploit:~
docker compose up -d

Após a inicialização, 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 fazendo o upload. Como o backend determina o tipo de 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 fazer o upload de poc.png, que executará o comando touch /tmp/aaaaa no servidor. Ao modificar o comando no POC para um comando de reverse shell, podemos obter acesso ao shell do servidor:

Exploração da Vulnerabilidade

Baixar ferramenta