مقال : شرح أداة SQLninja
تعد ثغرات SQL Injection من أخطر الثغرات المعرضة لها تطبيقات الويب بالوقت الحالي. هذا المقال هو تعريف بأداة Sqlninja التي تهدف لمساعدة الـ Penetration Tester في استغلال ثغرات SQL Injection في المواقع التي تستعمل Microsoft SQL Server مما يمكنهم بالنهاية من اختراق السيرفر المصاب عن بعد والحصول على تحكم كامل به.
مميزات الأداة:
- عمل Remote Fingerprint ومشاهدة المعلومات الخاصة بالـ SQL Server: لتنفبذ هجوم فعال نحتاج الى بعض المعلومات التي ستساعدنا في تنفيذ الهجوم كاصدار سيرفر SQL, معرفة اسم المستخدم للخادم وصلاحياته ومعرفة اذا كانت xp_cmdshell مفعلة ام لا.
- تنفيذ هجوم Bruteforce لكلمة مرور مستخدم sa.
- عمل Privilege escalation الذي يمكننا من تحويل صلاحيات المستخدم الى Sysadmin Group في حالة الحصول على كلمة مرور sa.
- تفعيل xp_cmdshell لنتمكن من تنفيذ اوامر النظام على السيرفر. (هذا الخيار يعد من أهم الخيارات نظراً لخطورة هذه الدالة و ما تتيحه للمهاجم. لنجاح هذه التقنية يجب ان نملك صلاحيات sa وهناك طريقتين لتفعيل xp_cmdshell:
- استخدام استعلام sp_addextendedproc في SQL Server 2000 او sp_configure في خوادم SQL Server 2005 حيث تتطلب هذه التقنية وجود ملف xplog70.dll على السيرفر.
- تكوين استعلام خاص باستخدام sp_oacreate , sp_oamethod و sp_oadestroy وهذه التقنية لا تتطلب وجود الملف xplog70.dll.
- امكانية رفع اي ملف تنفيذي باستخدام طلبات HTTP فقط دون الحاجة الى استخدام بروتكول FTP.
- عمل TCP/UDP port scanning: لمعرفة المنافذ المفتوحة و الغير مفلترة من قبل الجدار الناري من أجل ستخدامها للحصول على remote shell على السيرفر.
- امكانية استخدام اتصال مباشر او عكسي للحصول على shell على السيرفر الهدف.
- تنفيذ DNS-tunneled shell اذا لم تتوفر منافذ TCP/UDP.
- استعمال مشروع Metasploit لاستخدام Meterpreter كباك دور او استخدام VNC Server للحصول على VNC Access للسيرفر المستهدف.
- وجود عدة تقنيات لتخطي الـ IDS أو IPS و هي:
- Query hex-encoding: حيث يتم تشفير كل استعلام بالـHEX قبل تنفيذه (هذه التقنية مفيدة جدا في حالة وجود فلترة لعلامة التنصيص ‘ و حقن الصفحات التي تسمح باستخدام الارقام فقط).
- Comments as separators: حيث يتم استخدام اشارة التعليق /**/ بدلا من المسافة في الاستعلامات.
- Random case
- Random URL encoding: حيث يتم تشفير الاستعلامات باستخدام url encoding.
اعدادت البرنامج:
يتم تخزين البيانات في ملف اعدادات خاص بالاداة. في حالة تحديد ملف اعدادت غير موجود فسيتم تكوين الملف بشكل اوتماتيكي و سيقوم البرنامج بأخذ الاعدادات الأساسية مثل الطريقة المشروحة في الفيديو الاول في الأسفل.
سأقوم بشرح كيفية تغيير أهم الاعدادات بشكل يدوي لأننا لن نتمكن من تعديل كل ما نريد من الطريقة السابقة. لتفرض أن لدينا صفحة مصابة بثغرة SQL Injection على هذا الرابط ولنفرض ان الباراميتر id هو المصاب بالثغرة:
http://www.example.com/index.asp?=id=1&nid=2نفتح ملف sqlninja.conf الموجود في مجلد البرنامج ونعدّل على الخيارات:
host: اي بي الخاص بالهدف مثال:
host = 192.168.1.3method: لاختيار طريقة الطلب طبعا بالنسبة لمثالي ستكون GET. نستخدم POST في حالة وجود الحقنة في ملف ادخال مثل مربع بحث.
method = GETVulnerable page: هنا نقوم بوضع مسار الصفحة المصابة بالثغيرة:
page = /index.aspStart of the exploit string: هنا نضع الباراميتر المصاب بالثغرة و نضع بعده ‘;’ حسب الحقنة.
stringstart = param=1;stringend: في حالة وجود براميتر اضافي بعد الباراميتر المصاب (اتركها فارغة في حالة عدم وجود اي باراميتر بعد الباراميتر المصاب).في حالتي:
stringend = &nid = 2Local Host: اي بي جهازنا اذا اردنا استخدام اتصال عكسي للحصول على شيل.
lhost = 192.168.1.2Evasion: لاختيار تقنيات التشفير التي تم شرحها في الاعلى. بالامكان اختيار استخدام جميع التقنيات في وقت واحد عن طريق وضع
evasion = 1234بالنسبة لي سأقوم بوضع الخيار 1 ليتم التشفير باستخدام الهيكس لاتمكن من حقن numrical parameter و اتخطى الفلترة.
evasion = 1Path to metasploit: مسار مجلد الميتاسبلويت.
msfpath = /opt/metasploit3/msf3/Name of the procedure: اسم الاستعلام الذي سيتم تكوينه ليقوم محل xp_cmdshell اذا كان الاخير معطل في السيرفر. فائدة هذا الخيار هو تخطي الفلاتر التي قد تمنعتا من استخدام هذا الاستعلام حتى بعد تفعيله , فما سنقوم به هنا هو تغيير اسم هذا الاستعلام الى اي اسم اخر حتى لا تتم فلترته. مثال:
xp_name = sp_sqlbackupطبعا أنا اردت عمل شرح فيديو للأداة في البداية و لكني وجد أن مبرمجها قام بشرحها بشكل كامل في الموقع لذلك قمت بشرح ما لم يقم بشرحه و سأضع شروحاته هنا.
1. الاستخدامات الاساسية للاداة:
- اعداد الاداة حسب الطريقة الاولى.
- جمع بعض المعلومات عن السيرفر.
- عمل brute force لكلمة مرور حساب sa.
- رفع ملف تنفيذي و الحصول على شيل.
2. الحصول على GUI ACCESS: شرح البداية من ثغرة sql injection و حتى الاتصال بالسيرفر بعد حقن VNC Server للحصول على GUI Access فيه باستخدام الميتاسبلويت.
الأداة مبرمجة باستخدام لغة Perl وتستخدم رخصة GPLv2 و تعمل على كل من Linux, FreeBSD و MAC OS X.
لمزيد من المعلومات: موقع sqlninja – صفحة التحميل
عن الكاتب:
زيد القريشي, Ethical Hacker مهتم في مجال الحماية والـ Penetration Testing. يملك خبرة في اختراق شبكات الوايرلس والبرمجة بلغة Python.
السلام عليكم ، بارك الله فيكـ زيد علىـ شرح هذه اداة مهمة لكـ Pentest وايضا اصحاب windows
يستعملوا اداة SqlHelper وهي بالفعل اداة فعالة وقمت بتجربتها …جزاك الله خيرا فيما تحبه وترضى ، اخوكـ H4kr3m اكرمــ
السلام عليكم اخي زيد القريشي
مشكور على شرح جميل وبرنامج رائع في هذا مجال دائما مبدع واصل إبداعك
في باك تراك 4 الاداة منصبة و جاهزة و ستجدها في قائمة الbacktrack ثم Vulnerability Identification
توزيعة اللينكس الي عندي هي باااك ترااك 4
كيف ممكن اتأكد من تنصيب دول؟؟
عندما اطبق الامر perl sqlninja
بيعطيني
dude, the filename MUST be “sqlninja”. Use the proper name and try again
و عندما اطبق ./sqlninja
بيعطيني
Seems that some module is missing…:
Can’t locate NetPacket/UDP.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at (eval 11) line 2.
BEGIN failed–compilation aborted at (eval 11) line 2.
شو الحل برأيك
كيف ممكن نعالج هذه الحالة؟؟
مشكورين اخوان على المرور
بزل معوشي: ماهي نسخة اللنكس التي تستخدمها
و تأكد من تنصيب هذه الموديولات
NetPacket
Net-Pcap
Net-DNS
Net-RawIP
IO-Socket-SSL
ياليت يا استاذنا …تكمل في الايام القادمه شرح متوصل للاده لي يكون مثل الدوره
وفقك الله…يا الغالي
يعطيك العافية اخوي زيد القريشي
مواضيعك دايم مميزة
السلام عليكم ورحمة الله وبركاته
مشكوور على الشرح الجميل
لكن تنصيب هذه الموديلات كيف؟؟
NetPacket
Net-Pcap
Net-DNS
Net-RawIP
IO-Socket-SSL
بسم الله
السلام عليكم
هل لا يوجد رد؟؟
اقرأ التعليقات وستجد رد الأخ زيد.
اذا كنت تستخدم توزيعة غير باك تراك ابحث عن الموديولات في مدير الحزم أو استخدم CPAN
http://perl.about.com/od/packagesmodules/qt/perlcpan.htm
السلام عليكم
شكرا لك اخ عبد المهيمن لكن اني استخدم توزيعة اوبتنو 10
وقد بحثت في
Applications==>Logithéque Ubuntu
وكتبت اسماء الموديلات او البرامج التي يجب تنصيبها لكن لم يجدها
ارجوا المساعدة والرد لاني لم افهم كيفية CPAN???
ملاحظة:: اني جديد في عالم اللينكس ولقد قررت الدخول والعمل به كنظام اساسي مند شهر,
مشكور اداءة جميلة وواصل ابداعكـ.
بالتوفيق للجميع يارب.
بسم الله الرحمن الرحيم
—-
يا أيها الناس قولوا لا إله إلا الله تفلحوا
۞ قُلْ يَا عِبَادِيَ الَّذِينَ أَسْرَفُوا عَلَى أَنفُسِهِمْ لَا تَقْنَطُوا مِن رَّحْمَةِ اللَّهِ إِنَّ اللَّهَ يَغْفِرُ الذُّنُوبَ جَمِيعاً إِنَّهُ هُوَ الْغَفُورُ الرَّحِيمُ{53} وَأَنِيبُوا إِلَى رَبِّكُمْ وَأَسْلِمُوا لَهُ مِن قَبْلِ أَن يَأْتِيَكُمُ الْعَذَابُ ثُمَّ لَا تُنصَرُونَ{54} وَاتَّبِعُوا أَحْسَنَ مَا أُنزِلَ إِلَيْكُم مِّن رَّبِّكُم مِّن قَبْلِ أَن يَأْتِيَكُمُ العَذَابُ بَغْتَةً وَأَنتُمْ لَا تَشْعُرُونَ{55} أَن تَقُولَ نَفْسٌ يَا حَسْرَتَى علَى مَا فَرَّطتُ فِي جَنبِ اللَّهِ وَإِن كُنتُ لَمِنَ السَّاخِرِينَ{56}
اتشرف بزيارتكم الى مدونتي
http://alaslam-ahmd.blogspot.com/
مقطع مترجم مؤثر جدا للداعية يوسف استس الأمريكي وهو يقنع شابا بالإسلام
http://www.youtube.com/v/5J-9dn3_hpY&rel=0&autoplay=0&color1=bdbdbd&color2=bdbdbd&border=0
الله خلق الكون من العدم
http://allah-created-the-universe.blogspot.com/
انهيار نظرية التطور في 20 سؤال
http://newaninvitationtothetruth.blogspot.com/
—————-
ايها الراجي عفو ربه
لا تقل :من اين أبدأ ؟ طاعة الله البداية..
لا تقل :أين طريقي ؟ شرع الله الهدية..
لا تقل :كيف نجاتي ؟ سنة الهادي وقاية ..
لا تقل :أين نعيمي ؟ جنة الله كفاية..
لا تقل :في الغد أبدأ .. ربما تأتي النهاية!
-0-0-
عندما اطبقـ أمر
./sqlninja -m test
يطلعـ لي
Sqlninja rel. 0.2.6-r1
Copyright (C) 2006-2011 icesurfer
[-] sqlninja.conf does not exist. Exiting…