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-2019-19576 — Este é um exploit de bypass de filtro que resulta em upload arbitrário de arquivos e execução remota de código no class.upload.php <= 2.0.3 | Kitploit
Ferramentas/GitHubGitHub/jra89/cve-2019-19576
Geração de PayloadsAnálise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de Penetração
GitHubjra89/cve-2019-19576

CVE-2019-19576

Este é um exploit de bypass de filtro que resulta em upload arbitrário de arquivos e execução remota de código no class.upload.php <= 2.0.3

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

class.upload.php <= 2.0.3 Upload arbitrário de arquivos

  • Autor - Jinny Ramsmark
  • Fornecedor afetado - Verot.net
  • Produto afetado - class.upload.php <= 2.0.3
  • Testado em Ubuntu 19.10 recém-instalado com PHP7.3 e Apache/2.4.38
  • Especificamente, Debian/Ubuntu foi considerado vulnerável, pois adicionam as extensões php, phar e phtml aos manipuladores PHP disponíveis. Neste caso, o class.upload.php não colocou a extensão phar na lista negra.

Descrição

Este é um exploit de bypass de filtro que resulta em upload arbitrário de arquivos e execução remota de código. O script class.upload.php filtra "arquivos e conteúdo perigosos" e os renomeia para a extensão de arquivo txt. Ele também realiza diferentes tipos de transformação na imagem enviada, o que normalmente destruiria qualquer payload injetado, mesmo que o filtro de extensão de arquivo pudesse ser contornado.

O filtro de extensão de arquivo é uma lista negra, portanto, sempre que uma nova extensão é introduzida (neste caso, phar), ou qualquer uma foi esquecida, um arquivo PHP pode ser enviado. No entanto, o conteúdo ainda deve ser uma imagem válida e ainda passará pelas funções imagecreatefromjpeg e similares. Para este fim, escrevi o script inject.php que essencialmente percorrerá diferentes imagens por força bruta até encontrar uma onde o payload não será destruído pelo processo realizado no class.upload.php. Isso efetivamente nos dá um upload arbitrário de arquivos e uma execução de código muito furtiva, pois ainda é uma imagem válida e será exibida como tal nas páginas onde for enviada.

Cronograma (prazo padrão de 90 dias)

  • 2019-12-03 - Reportado ao desenvolvedor e K2
  • 2019-12-03 - K2 respondeu
  • 2019-12-04 - Verot respondeu com uma correção
  • 2019-12-04 - K2 respondeu com uma correção própria preparada
  • 2019-12-04 - Verot lançou a referida correção (v2.0.4)
  • 2019-12-05 - Ambas as partes responderam e concordaram com a publicação das informações

Arquivos incluídos neste PoC

  • composer.json
  • upload.php
  • inject.php

Uso

O script upload.php é o código de exemplo do github do verot.net. Pensei que seria melhor demonstrar esta vulnerabilidade usando o próprio código de exemplo deles.

  • Execute "php inject.php" em um terminal; ele gerará uma imagem de amostra com um payload simples no arquivo.
  • Quando o script terminar, ele produzirá um arquivo chamado "image.jpg.phar".
  • Navegue até o arquivo upload.php e envie image.jpg.phar; ele passará e você terá um shell.

Exemplo

root@kitploit:~
user@ayu:/var/www/html# php inject.php 
-=Imagejpeg injector 1.7=-
[+] Fetching image (100 X 100) from http://lorempixel.com/100/100/
[+] Jumping to end byte
[+] Searching for valid injection point
[!] Temp solution, if you get a 'recoverable parse error' here, it means it probably failed
[+] It seems like it worked!
[+] Result file: image.jpg.phar
root@kitploit:~
user@ayu:/var/www/html# curl -v -o - http://localhost/images/image_resized.phar?c=uname%20-a | grep -aPo "(Linux.*GNU)"
Linux ayu 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 UTC 2019 x86_64 x86_64 x86_64 GNU

Solução proposta

  • Não use lista negra de extensões de arquivo.
  • Em vez disso, use uma lista branca das permitidas por padrão.
  • Ou simplesmente não tenha nenhuma extensão nos arquivos enviados e armazene o nome original em outro lugar.

Referência

  • https://github.com/verot/class.upload.php/blob/2.0.3/src/class.upload.php#L3068

Exemplo de ataque na extensão Joomla K2

Upload arbitrário de arquivos levando à execução remota de código em JoomlaWorks K2 <= 2.10.1 devido à versão não corrigida do class.upload.php

Site

  • https://getk2.org/

Imagens de exemplo

Um usuário comum envia a imagem gerada pelo inject.php, contendo um payload simples. Ela contornará o filtro de extensão no class.upload.php e não será destruída pelo tratamento de imagem realizado na biblioteca. Ela será renderizada como uma imagem normal, o que é mais sutil.



O arquivo será enviado e pode ser acessado como uma backdoor e executar comandos.

Baixar ferramenta