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-study | Kitploit
Ferramentas/GitHubGitHub/shun1403/pil-cve-2017-8291-study
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebAprendizado e EducaçãoLabs e Prática
GitHubshun1403/pil-cve-2017-8291-study

PIL-CVE-2017-8291-study

Ver Repositório
há 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

PIL-CVE-2017-8291

  • Baek Seung-hoon(@shun1403), 3ª turma, 13ª classe da White Hat School https://github.com/shun1403/PIL-CVE-2017-8291.git
  • Ambiente: Ubuntu Linux

Configuração do ambiente

  • Atualize para a V2 por meio de sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • Se houver erros na execução, redefina o docker com os seguintes comandos:
  • 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 verificar a versão, se aparecer corretamente, está pronto.

git clone

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

  • Após o clone, entre no diretório da vulnerabilidade que deseja explorar

  • Aqui, /vulhub/python/PIL-CVE-2017-8291

  • Siga a prática consultando o arquivo yml a seguir

  • docker compose up -d: comando que cria os contêineres e os executa em segundo plano

  • Em seguida, acesse localhost:8000/ e verifique a página web com upload de arquivos image

  • Proceda com o upload do poc.png manipulado localizado no mesmo diretório

  • Ao realizar o upload, você pode ver que a seguinte mensagem é exibida

  • image

  • Em condições normais, após o upload de um arquivo png, as dimensões de largura e altura da imagem são exibidas. No entanto, como o backend classifica o tipo de imagem pelo cabeçalho do arquivo, é possível ignorar a extensão e enviar um arquivo EPS contendo comandos executáveis renomeado com a extensão PNG.

  • Usando isso, ao fazer upload do arquivo poc.png, será possível executar o comando 'tocuh /tmp/aaaaa', e se você alterar o comando dentro do arquivo POC para um comando de reverse shell, será possível obter uma shell.

  • Após fazer o upload do arquivo, acesse o docker e verifique em /tmp; é possível confirmar que o arquivo aaaaa foi criado pelo 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,                  # 입력 파일 지정
          ]

GhostScript 설치 여부 판단 코드 생략

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

Resultado

image

Conclusão

Essa vulnerabilidade ocorre na Python Imaging Library (PIL) e foi explorada utilizando o CVE-2017-8291.

A vulnerabilidade ocorre porque o PIL identifica o tipo de imagem com base no cabeçalho do arquivo, e não na extensão. Com isso, mesmo que o arquivo seja realmente do formato EPS, basta alterar a extensão para PNG e fazer o upload: ao chamar o GhostScript no lado do servidor, comandos arbitrários inseridos no arquivo podem ser executados.

Durante o projeto, ao enviar o arquivo poc.png manipulado e confirmar a criação do arquivo /tmp/aaaaa dentro do servidor, foi reproduzido que a vulnerabilidade pode, de fato, levar à execução remota de comandos (RCE, Remote Code Execution). Além disso, foi possível verificar que essa vulnerabilidade tem potencial para ser estendida a ataques avançados, como reverse shell, abusando da funcionalidade legítima de processamento de imagens.

Baixar ferramenta