Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-34312 — ☣️ Questo repository contiene la descrizione e una proof of concept per CVE-2024-34312 | Kitploit
Strumenti/GitHubGitHub/vincentscode/cve-2024-34312
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPaper e RicercaApprendimento e Formazione
GitHubvincentscode/cve-2024-34312

CVE-2024-34312

☣️ Questo repository contiene la descrizione e una proof of concept per CVE-2024-34312

Vedi Repository
12 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

CVE-2024-34312

Product CWE

Descrizione

È stato scoperto che Virtual Programming Lab for Moodle fino alla v4.2.3 contiene una vulnerabilità Cross-Site Scripting (XSS) tramite il suo componente IDE.

Dettagli aggiuntivi

Il browser si connette direttamente a un websocket in esecuzione sul server jail. Attraverso il websocket, il server jail può inviare messaggi direttamente al browser. Questi messaggi vengono analizzati dal browser e gestiti da "executionActions". L'azione "run:browser" è vulnerabile a XSS perché concatena HTML con input non attendibile e lo inietta nel body della pagina. Ciò può essere sfruttato da un server jail compromesso per ottenere accesso amministrativo sull'istanza Moodle tramite XSS.

Sfruttamento

Un attaccante che controlla il server jail non attendibile può installare un server jail malevolo che invia un payload malevolo a qualsiasi utente che utilizza Virtual Programming Lab, innescando XSS.

Un payload di esempio potrebbe essere: run:browser:test\">test</a><script>alert(1)</script><a href=\"test\". Ciò comporterebbe l'inclusione di <script>alert(1)</script> nel DOM, causando l'esecuzione di alert(1).

image

Il codice vulnerabile in vplide.js interpreta questo come un comando e aggiunge il suo secondo argomento (gli argomenti sono separati da :) direttamente al 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 {
            // ...
        }
    },
    // ...
}

Patch

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);
                 }
             };

Riferimenti

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2024-34312
  • URL del fornitore: https://vpl.dis.ulpgc.es/
  • Release corretta: 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
Scarica lo strumento