Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-34312 — ☣️ このリポジトリには、CVE-2024-34312の説明と概念実証(PoC)が含まれています。 | Kitploit
ツール/GitHubGitHub/vincentscode/cve-2024-34312
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ論文と研究学習と教育
GitHubvincentscode/cve-2024-34312

CVE-2024-34312

☣️ このリポジトリには、CVE-2024-34312の説明と概念実証(PoC)が含まれています。

リポジトリを見る
12年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

CVE-2024-34312

Product CWE

説明

Virtual Programming Lab for Moodle v4.2.3までに、IDEコンポーネントを介した**クロスサイトスクリプティング(XSS)**の脆弱性が存在することが判明しました。

追加詳細

ブラウザはjailサーバー上で動作するwebsocketに直接接続します。 websocketを介して、jailサーバーはブラウザに直接メッセージを送信できます。これらのメッセージはブラウザによって解析され、"executionActions"によって処理されます。 "run:browser" アクションは、信頼できない入力とHTMLを連結してページ本文に注入するため、XSSに対して脆弱です。 これは、侵害されたjailサーバーによって悪用され、XSSを介してMoodleインスタンスの管理者アクセスを取得される可能性があります。

悪用

信頼できないjailサーバーを制御する攻撃者は、悪意のあるjailサーバーをインストールし、Virtual Programming Labを使用している任意のユーザーに悪意のあるペイロードを送信して、XSSを誘発させることができます。

ペイロードの例は次のようになります: run:browser:test\">test</a><script>alert(1)</script><a href=\"test\"。これにより、<script>alert(1)</script> がDOMに含まれ、alert(1) が実行されます。

image

vplide.js 内の脆弱なコードは、これをコマンドとして解釈し、その2番目の引数(引数は : で区切られます)を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 {
            // ...
        }
    },
    // ...
}

パッチ

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

参照

  • CVEレコード: https://www.cve.org/CVERecord?id=CVE-2024-34312
  • ベンダーURL: https://vpl.dis.ulpgc.es/
  • 修正リリース: https://github.com/jcrodriguez-dis/moodle-mod_vpl/releases/tag/V4.2.4
  • コミット: https://github.com/jcrodriguez-dis/moodle-mod_vpl/commit/5faaaf1d01c4088d7c8e3b170dd57c84341cf695
  • CWE: https://cwe.mitre.org/data/definitions/80.html
ツールをダウンロード