Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-34312 — ☣️ Este repositório contém a descrição e uma prova de conceito da CVE-2024-34312 | Kitploit
Ferramentas/GitHubGitHub/vincentscode/cve-2024-34312
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebPapers e PesquisaAprendizado e Educação
GitHubvincentscode/cve-2024-34312

CVE-2024-34312

☣️ Este repositório contém a descrição e uma prova de conceito da CVE-2024-34312

Ver Repositório
1há 2 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

CVE-2024-34312

Product CWE

Descrição

O Virtual Programming Lab for Moodle até a v4.2.3 foi identificado como contendo uma vulnerabilidade de Cross-Site Scripting (XSS) por meio de seu componente IDE.

Detalhes adicionais

O navegador conecta-se diretamente a um websocket em execução no servidor jail. Por meio do websocket, o servidor jail pode enviar mensagens diretamente ao navegador. Essas mensagens são analisadas pelo navegador e tratadas por "executionActions". A ação "run:browser" é vulnerável a XSS devido à concatenação de HTML com entrada não confiável e sua injeção no corpo da página. Isso pode ser explorado por um servidor jail comprometido para obter acesso administrativo na instância do Moodle por meio de XSS.

Exploração

Um atacante que controla o servidor jail não confiável pode instalar um servidor jail malicioso que envia uma carga maliciosa a qualquer usuário, que esteja usando o Virtual Programming Lab, disparando XSS.

Um exemplo de payload seria assim: run:browser:test\">test</a><script>alert(1)</script><a href=\"test\". Isso resultaria em <script>alert(1)</script> sendo incluído no DOM, fazendo com que alert(1) seja executado.

image

O código vulnerável em vplide.js interpreta isso como um comando e anexa seu segundo argumento (os argumentos são separados por :) ao DOM diretamente:

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 {
            // ...
        }
    },
    // ...
}

Correção

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

Referências

  • Registro CVE: https://www.cve.org/CVERecord?id=CVE-2024-34312
  • URL do fornecedor: https://vpl.dis.ulpgc.es/
  • Versão corrigida: 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
Baixar ferramenta