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-2024-34312 — ☣️ Ce dépôt contient la description et une preuve de concept pour CVE-2024-34312 | Kitploit
Outils/GitHubGitHub/vincentscode/cve-2024-34312
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebArticles et RechercheApprentissage et Éducation
GitHubvincentscode/cve-2024-34312

CVE-2024-34312

☣️ Ce dépôt contient la description et une preuve de concept pour CVE-2024-34312

Voir le dépôt
14il y a 2 ansPas encore vérifié
Site web

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-2024-34312

Product CWE

Description

Virtual Programming Lab for Moodle jusqu'à la version 4.2.3 s'est avéré contenir une vulnérabilité de type Cross-Site Scripting (XSS) via son composant IDE.

Détails supplémentaires

Le navigateur se connecte directement à un websocket exécuté sur le serveur jail. Via ce websocket, le serveur jail peut envoyer des messages directement au navigateur. Ces messages sont analysés par le navigateur et traités par « executionActions ». L'action « run:browser » est vulnérable aux XSS en raison de la concaténation de HTML avec des entrées non fiables et de leur injection dans le corps de la page. Cela peut être exploité par un serveur jail compromis pour obtenir un accès administratif sur l'instance Moodle via XSS.

Exploitation

Un attaquant contrôlant le serveur jail non fiable peut installer un serveur jail malveillant qui envoie une charge utile malveillante à tout utilisateur utilisant le Virtual Programming Lab, déclenchant une XSS.

Un exemple de charge utile ressemblerait à ceci : run:browser:test\">test</a><script>alert(1)</script><a href=\"test\". Cela entraînerait l'inclusion de <script>alert(1)</script> dans le DOM, provoquant l'exécution de alert(1).

image

Le code vulnérable dans vplide.js interprète cela comme une commande et ajoute son deuxième argument (les arguments sont séparés par :) directement au DOM :

root@kitploit:~
executionActions = {
    // ...
    'run': function(content, coninfo, ws) {
        var parsed = /^([^:]*):?(.*)/i.exec(content);
        var type = parsed[1];
        if (type == 'terminal' || type == 'webterminal') {
            // ...
        } else if (type == 'vnc') {
            // ...
        } else if (type == "browser") {
            var URL = (coninfo.secure ? "https" : "http") + "://" + coninfo.server + ":" + coninfo.portToUse + "/";
            URL += parsed[2] + "/httpPassthrough";
            if (isTeacher) {
                URL += "?private";
            }
            var message = '<a href="' + URL + '" target="_blank">';
            message += VPLUtil.str('open') + '</a>';
            var options = {
                width: 200,
                icon: 'run',
                title: VPLUtil.str('run'),
            };
            showMessage(message, options);
        } else {
            // ...
        }
    },
    // ...
}

Correctif

root@kitploit:~
diff --git a/amd/src/vplide.js b/amd/src/vplide.js
index 586b5ff5..d1f88f47 100644
--- a/amd/src/vplide.js
+++ b/amd/src/vplide.js
@@ -2024,8 +2024,8 @@ define(
                 'setResult': self.setResult,
                 'ajaxurl': options.ajaxurl,
                 'run': function(content, coninfo, ws) {
-                    var parsed = /^([^:]*):?(.*)/i.exec(content);
-                    var type = parsed[1];
+                    var parsed = /^([^:]*):?(.*)/.exec(content);
+                    var type = VPLUtil.sanitizeText(parsed[1]);
                     if (type == 'terminal' || type == 'webterminal') {
                         if (lastConsole && lastConsole.isOpen()) {
                             lastConsole.close();
@@ -2055,7 +2055,7 @@ define(
                                 });
                     } else if (type == "browser") {
                         var URL = (coninfo.secure ? "https" : "http") + "://" + coninfo.server + ":" + coninfo.portToUse + "/";
-                        URL += parsed[2] + "/httpPassthrough";
+                        URL += VPLUtil.sanitizeText(parsed[2]) + "/httpPassthrough";
                         if (isTeacher) {
                             URL += "?private";
                         }
diff --git a/amd/src/vplui.js b/amd/src/vplui.js
index 36504a33..648472d6 100644
--- a/amd/src/vplui.js
+++ b/amd/src/vplui.js
@@ -582,8 +582,8 @@ define(
             var messageActions = {
                 'message': function(content) {
                     var parsed = /^([^:]*):?([^]*)/.exec(content);
-                    var state = parsed[1];
-                    var detail = parsed[2];
+                    var state = VPLUtil.sanitizeText(parsed[1]);
+                    var detail = VPLUtil.sanitizeText(parsed[2]);
                     if (state == 'running') {
                         state = running;
                     }
@@ -607,7 +607,7 @@ define(
                     }
                 },
                 'retrieve': function() {
-                    var data = {"processid": VPLUtil.getProcessId()};
+                    var data = {"processid": coninfo.processid};
                     pb.close();
                     delegated = true;
                     VPLUI.requestAction('retrieve', '', data, externalActions.ajaxurl)
@@ -627,7 +627,7 @@ define(
                 'close': function() {
                     VPLUtil.log('ws close message from jail');
                     ws.close();
-                    var data = {"processid": VPLUtil.getProcessId()};
+                    var data = {"processid": coninfo.processid};
                     VPLUI.requestAction('cancel', '', data, externalActions.ajaxurl, true);
                 }
             };

Références

  • Enregistrement CVE : https://www.cve.org/CVERecord?id=CVE-2024-34312
  • URL du fournisseur : https://vpl.dis.ulpgc.es/
  • Version corrigée : https://github.com/jcrodriguez-dis/moodle-mod_vpl/releases/tag/V4.2.4
  • Commit : https://github.com/jcrodriguez-dis/moodle-mod_vpl/commit/5faaaf1d01c4088d7c8e3b170dd57c84341cf695
  • CWE : https://cwe.mitre.org/data/definitions/80.html
Télécharger l’outil