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-2025-68147-OSPOS-Stored-XSS — Repositorio PoC para CVE-2025-68147: Cross-Site Scripting (XSS) Almacenado en OpenSourcePOS. La vulnerabilidad permite escalada de privilegios mediante inyección de JavaScript malicioso en el módulo Store Config. Incluye detalles del payload y verificación del parche (v3.4.0). Investigador de Seguridad: Aditya Singh (Nixon-H). | Kitploit
Herramientas/GitHubGitHub/nixon-h/cve-2025-68147-ospos-stored-xss
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubnixon-h/cve-2025-68147-ospos-stored-xss

CVE-2025-68147-OSPOS-Stored-XSS

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 →

Acerca de

Ver Repositorio
21hace 2 mesesAún no revisado

Repositorio PoC para CVE-2025-68147: Cross-Site Scripting (XSS) Almacenado en OpenSourcePOS. La vulnerabilidad permite escalada de privilegios mediante inyección de JavaScript malicioso en el módulo Store Config. Incluye detalles del payload y verificación del parche (v3.4.0). Investigador de Seguridad: Aditya Singh (Nixon-H).

Compartir

CVE-2025-68147: Cross-Site Scripting (XSS) Almacenado en OpenSourcePOS

MetadatosDetalles
ID CVECVE-2025-68147
GravedadAlta CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Tipo de VulnerabilidadCross-Site Scripting Almacenado (CWE-79)
Versiones AfectadasOpenSourcePOS v3.4.0, v3.4.1
Versión Parcheadav3.4.2
Componente VulnerableMódulo de Configuración de Tienda (campo Política de Devolución)
Reportado porAditya Singh (Nixon-H)

📝 Resumen Ejecutivo

Se descubrió una vulnerabilidad de Cross-Site Scripting (XSS) Almacenado en el módulo de Configuración de Tienda de OpenSourcePOS. La aplicación no sanitizaba adecuadamente la entrada proporcionada por el usuario en el campo "Política de Devolución" antes de almacenarla en la tabla de base de datos ospos_app_config.

Esta falla permitía que un atacante autenticado con privilegios de configuración (o un atacante que explotara una cadena CSRF separada) inyectara cargas útiles arbitrarias de JavaScript. Debido a que la "Política de Devolución" se renderiza dinámicamente en cada recibo de venta, la carga útil inyectada se ejecuta automáticamente en el navegador de cualquier usuario —incluyendo cajeros con pocos privilegios, otros administradores o clientes— cada vez que se genera o visualiza un recibo.


🕵️‍♂️ Análisis Técnico de Causa Raíz

1. La Lógica Vulnerable

La vulnerabilidad reside en la plantilla de vista de recibo: app/Views/sales/receipt_default.php.

La aplicación recupera la cadena "Política de Devolución" del arreglo de configuración global ($this->config['return_policy']) y la prepara para mostrarla.

  • El Error: Los desarrolladores usaron la función nativa de PHP nl2br() para convertir saltos de línea en etiquetas HTML <br>.
  • La Fallo: nl2br() no sanitiza los caracteres especiales HTML. Deja intactas etiquetas como <script>, `` y atributos onload.

Código Vulnerable (Antes del Parche):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br($this->config['return_policy']); ?>
</div>

2. Persistencia en Base de Datos

Cuando un administrador guarda la configuración, la carga útil se almacena en crudo en la base de datos.

  • Tabla: ospos_app_config
  • Clave: return_policy
  • Valor: Policy Text... <script>alert('XSS')</script>

Debido a que no hay sanitización de entrada en el lado del controlador (Config.php) ni escapado de salida en el lado de la vista (receipt_default.php), la aplicación es vulnerable a XSS Almacenado.


💥 Prueba de Concepto (PoC)

Vector de Ataque

El ataque apunta al panel de Configuración de Tienda pero impacta en el módulo de Ventas/Recibos.

  1. Punto de Entrada: http://[TARGET]/config (solicitud POST para guardar configuración)
  2. Punto de Ejecución: http://[TARGET]/sales/receipt/[SALE_ID]

Explotación Paso a Paso

Paso 1: La Inyección Iniciamos sesión como Administrador y navegamos a Configuración de Tienda -> General. En el área de texto "Política de Devolución", inyectamos la siguiente carga útil específica:

root@kitploit:~
Standard Return Policy: No Refunds.
<script>alert('XSS_BY_NIXON_SUCCESSFUL')</script>

Paso 2: Persistencia Al hacer clic en "Enviar", la aplicación envió una solicitud POST a /config/save. La carga útil se almacenó exitosamente en la base de datos.

Paso 3: La Activación Para verificar el impacto en otros usuarios:

  1. Cerramos sesión y volvimos a iniciar sesión como Cajero (cuenta con pocos privilegios).
  2. Navegamos al módulo de Ventas.
  3. Agregamos un artículo de prueba al carrito e hicimos clic en "Completar Venta".
  4. Resultado: La aplicación redirige a la vista de recibo (ej. http://localhost/sales/receipt/1). El navegador analiza el div return_policy, encuentra la etiqueta <script> e inmediatamente ejecuta el JavaScript.

Resultado Observado: Apareció una ventana de alerta en el navegador con el mensaje: XSS_BY_NIXON_SUCCESSFUL.

📷 Prueba Multimedia

Captura de pantalla 1: La Alerta Activada

Captura de pantalla 2: Carga Útil en la Configuración

🎥 Demostración en Video: Haga clic para Descargar / Ver el Video de la PoC


⚠️ Escenarios de Impacto

Esta es una vulnerabilidad de Cambio de Ámbito (S:C) porque el ataque se almacena en el servidor pero se ejecuta en el contexto del navegador de la víctima.

  1. Escalada de Privilegios y Toma de Cuentas:
  • Escenario: Un atacante inyecta una carga útil de JavaScript diseñada para robar cookies de sesión.
  • Ejecución: Un Super Administrador ve un recibo anterior (ej. /sales/receipt/105). El script se ejecuta silenciosamente, enviando document.cookie (que contiene el ID de sesión ospos_session) al servidor del atacante.
  • Impacto: El atacante secuestra la sesión del Super Admin, obteniendo control total del sistema sin necesidad de contraseña.
  1. Creación de Administrador Automatizada (Tipo Gusano):
  • Escenario: La carga útil es un script que usa AJAX (XMLHttpRequest) para realizar acciones administrativas.
  • Ejecución: Cuando un Administrador con sesión activa ve el recibo, el script fuerza a su navegador a enviar una solicitud POST oculta a /employees/save.
  • Impacto: Se crea instantáneamente en segundo plano una nueva cuenta de Administrador (ej. hacker / password123). La víctima no ve nada más que el recibo, mientras el atacante obtiene una puerta trasera permanente.
  1. Desfiguración y Phishing:
  • Escenario: El atacante modifica el DOM para alterar la información financiera del recibo.
  • Ejecución: El script de la "Política de Devolución" reescribe el pie de página o las instrucciones de pago.
  • Impacto: Los recibos muestran datos bancarios fraudulentos o direcciones de criptomonedas ("Por favor transfiera el pago a..."), lo que conduce a fraude financiero contra clientes o la empresa.

🛡️ Remedio

La vulnerabilidad se corrigió en OpenSourcePOS v3.4.2.

El mantenedor aplicó un parche que implementa Codificación de Salida Sensible al Contexto. El valor de configuración ahora está envuelto en la función auxiliar global esc() de CodeIgniter antes de pasarse a nl2br().

El Parche (Commit 22297a):

root@kitploit:~
<div id="sale_return_policy">
    <?php echo nl2br(esc($this->config['return_policy'])); ?>
</div>

Verificación: Después de actualizar a v3.4.2, la misma carga útil se renderiza como texto inofensivo:

Standard Return Policy: No Refunds. &lt;script&gt;alert('XSS_BY_NIXON_SUCCESSFUL')&lt;/script&gt;


📅 Cronograma de Divulgación

  • 2025-12-12: Vulnerabilidad descubierta por Aditya Singh (Nixon-H) durante una auditoría de seguridad manual.
  • 2025-12-13: Informe de divulgación responsable enviado al mantenedor (Jeroen Peelaerts) por correo electrónico/GitHub.
  • 2025-12-14: Vulnerabilidad confirmada por el mantenedor. CVE-2025-68147 reservado.
  • 2025-12-14: Parche desarrollado (Commit 22297a) y verificado por el investigador.
  • 2025-12-19: Parche lanzado en la versión 3.4.2.
  • 2025-12-19: Divulgación pública mediante Aviso de Seguridad de GitHub.

🔗 Referencias

  • Aviso: GHSA-xgr7-7pvw-fpmh
  • Parche: Commit 22297a
  • Reportado por: Aditya Singh (Nixon-H)
Descargar herramienta