أفضل برنامج حقن المواقع بثغرة SQL-Injection مع الشرح

أفضل برنامج حقن المواقع بثغرة SQL-Injection مع الشرح 

برنامج حقن المواقع SQL-Injection

jSQL Injection هو تطبيق خفيف وصغير الحجم (اقل من 3 ميجا) يستخدم لحقن المواقع واستخراج  معلومات قاعدة البيانات من السرفر. هو برنامج مجاني ومفتوح المصدر ومتعدد المنصات يعمل على نظام ويندوز و لينكس و  Mac OS X.

برنامج jSQL Injection أصبح جزءا من التوزيعة الرسمية لاختبار الاختراق Kali Linux ويتم تضمينه في توزيعات أخرى مثل Pentest Box و  parrotsec و  ArchStrike أو BlackArch Linux.

تم تطوير برنامج اختراق المواقع jSQL Injection باستخدام مكتبات مفتوحة المصدر رائعة مثل Spring، spockframework و hibernate، ويستخدم منصة Travis CI للتكامل المستمر.

يتم اختبار كل تحديث للبرنامج باستخدام Java من الإصدار 8 إلى 13 في السحابة ، مقابل قواعد بيانات MySQL و PostgreSQL و H2 المختلفة.

كود المصدر مفتوح لأي مساهمة في اختبارات التحسين المتعددة و مؤشرات الترابط ، والتطوير ، والوحدة والتكامل.

ماهو SQL Injection

حقن SQL هو أسلوب إدخال رمز قد يؤدي إلى تدمير قاعدة البيانات الخاصة بك. يعد حقن SQL أحد أكثر تقنيات اختراق الويب شيوعًا. حقن SQL هو وضع التعليمات البرمجية الضارة في عبارات SQL ، عبر إدخال صفحة الويب.

شرح SQL Injection attack

يحدث حقن SQL عادةً عندما تطلب من مستخدم إدخال ، مثل اسم المستخدم / معرف المستخدم الخاص به ، وبدلاً من الاسم / المعرف ، يمنحك المستخدم عبارة SQL التي ستقوم بتشغيلها على قاعدة البيانات الخاصة بك دون قصد .

انظر إلى المثال التالي الذي ينشئ عبارة SELECT عن طريق إضافة متغير (txtUserId) إلى سلسلة select. يتم جلب المتغير من إدخال المستخدم (getRequestString):

مثال

txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

أنواع SQL injection

الحقن المستند إلى الخطأ Error based Injection

يرسل المهاجم بعض الاستعلام الضار إلى قاعدة البيانات مما يؤدي إلى حدوث أخطاء. يجب أن تكون الأخطاء عامة جدًا ، و تعطي تلميحات مفيدة للمهاجم.

سطر التعليق : استخدام سطر التعليق لجعل قاعدة البيانات تتجاهل جزءًا من استعلام صالح.
على سبيل المثال
Select * from stores where product_id = blah’ or 1=1--

هناك الكثير من السلاسل التي يتم تقييمها دائمًا على أنها صحيحة ، مثل '1' = '1' 'a' = 'a' ، وما إلى ذلك ، وتستخدمها في الاستعلام لإنشاء شروط صحيحة باستمرار.

على سبيل المثال
Select * from users where username=’blah’ or ‘a’=’a’ -- and password=’pass’

إدخال SQL المستند إلى الاتحاد Union Based SQL injection

استخدام أمر الاتحاد في استعلام SQL لتنفيذ استعلامات إضافية ؛ وبالتالي ، تعديل / إدراج / حذف أو إسقاط محتويات الجدول.

على سبيل المثال
Select * from stores where product_id=1 union select 1,database(),user(),4#
الاستعلامات غير الصحيحة: الخروج باستعلامات غير صحيحة منطقيًا لرؤية رسائل الخطأ للحصول على مزيد من المعلومات حول قاعدة البيانات الهدف.
Select * from stores where id=1’ 
سيؤدي الاستعلام أعلاه إلى خطأ في بناء الجملة وقد يكشف عن نوع قاعدة البيانات الخلفية.

الحقن الأعمى Blind SQL injection

هذا نوع من حقن SQL حيث ليس لدينا دليل على ما إذا كان تطبيق الويب عرضة لهجوم الحقن أم لا.

ميزات برنامج jSQL-Injection
  1. الحقن التلقائي لـ 23 نوعًا من قواعد البيانات: Access و CockroachDB و CUBRID و DB2 و Derby و Firebird و H2 و Hana و HSQLDB و Informix و Ingres و MaxDB و Mckoi و MySQL و Neo4j و NuoDB و Oracle و PostgreSQL و SQLite و SQL Server و Sybase و Teradata و Vertica
  2. إستراتيجيات الحقن المتعددة: الحقن العادي ، حقن الخطأ ، الحقن الأعمى و الوقت  Normal, Error, Blind and Time
  3. SQL والتلاعب بالرمل
  4. حقن قائمة الأهداف
  5. قراءة وكتابة الملفات على المضيف باستخدام الحقن
  6. إنشاء وتصور هيكل الويب وقشرة SQL
  7. القوة الغاشمة لتجزئة كلمة المرور
  8. ابحث عن صفحات الإدارة
  9. تجزئة النص وترميزه وفك تشفيره
  10. المصادقة الأساسية ، الملخص ، NTLM ، Kerberos
  11. اتصال الوكيل HTTP و SOCKS4 و SOCKS5
  12. دعم اللغة العربية ومختلف اللغات الاخرى.

تحميل برنامج حقن المواقع SQL-Injection

كيفية تثبيت برنامج JSQL-Injection

في ويندوز والماكنتوش

قم بتثبيت Java 8، ثم قم بتنزيل أحدث إصدار jSQL Injection وانقر نقرًا مزدوجًا على الملف لبدء تشغيل البرنامج.

في النظامين Kali Linux و ParrotSec 

إذا كنت تستخدم Kali Linux ، فاحصل على أحدث إصدار باستخدام أوامر

apt update 
apt-get install jsql-injection

يمكنك أيضًا كتابة الامر في الطرفية لبدء البرنامج.

java -jar jsql-injection-v0.81.jar

شرح حقن موقع مصاب بثغرة إس كيو إل انجكشن SQL-Injection

الخطوة الاولى

قم بالبحث عن المواقع المصابة بثغرة حقن إس كيو إل عن طريق الدورك

سأستعمل هذا الدورك في الشرح

view_items.php?id=

بعض الدوركات الموجودة بالملف
view_items.php?id=
home.php?cat=
item_book.php?CAT=
www/index.php?page=
schule/termine.php?view=
goods_detail.php?data=
storemanager/contents/item.php?page_code=
view_items.php?id=
customer/board.htm?mode=
help/com_view.html?code=
n_replyboard.php?typeboard=
eng_board/view.php?T****=
prev_results.php?prodID=
bbs/view.php?no=
gnu/?doc=
zb/view.php?uid=
global/product/product.php?gubun=
m_view.php?ps_db=
productlist.php?tid=
product-list.php?id=
onlinesales/product.php?product_id=
garden_equipment/Fruit-Cage/product.php?pr=
product.php?shopprodid=
product_info.php?products_id=
productlist.php?tid=

عند ادخال الدورك بموقع البحث جوجل وفتح موقع معين قم باضافة علامة التنصيص ( ' ) في اخر الرابط. اذا ظهر اي خطأ أو تغيير بالموقع فالموقع مصاب بثغرة الحقن . بعد ان تعثر على مواقع مصابة بثغرة الحقن انتقل للخطوة التالية

الخطوة الثانية

افتح برنامج ثم ادخل رابط URL الموقع المصاب في الاعلى كما بالصورة بجانب GET واضغط أنتر

لاحظ أنه نجح الحقن وتم استخراج قاعدة البيانات تتضمن 43 جدول
كليك على اسم القاعدة حتى تظهر بعرض ما بداخلها Tree

نبحث عن جدول الخاص بمعلومات المستخدم الادمن (اسم المستخدم وكلمة المرور)

قم بوضع علامة الصح على الصفوف التي تريد استخراجها
ID هو رقم تعريف خاص اذا كان 0 فهو حساب ادمن الموقع وفي بعض الاحيان يكون هناك أكثر من أدمين
user و pass هي اسم المستخدم وكلمة المرور تكون مشفرة

اضغط load حتى يتم استخراج البيانات تسمى هذه العملية Dump

ظهر لنا حساب المستخدم الخاص بالموقع

كيفية البحث عن لوحة المتحكم Admin page

قم باختيار Admin Page
قم بتحديد جميع لوحات التحكم الموجودة بالبرنامج
ثم اختر Find Admin Pages
ظهرت لنا ثلاث صفحات خاصة بتسجيل الدخول في الأسفل
يمكنك استعمال ادوات اخرى لاستخراج لوحة التحكم اذا لم تنجح في استخراجها
يمكنك الاستعانة بأدة hashid في Kali Linux لمعرفة نوع الهاش
بعد تحديد نوع الهاش قم بكسره بأداة هاش كات أو عبر المواقع اونلاين

الحماية من SQL Injection

هناك عدة طرق فعالة لمنع هجمات SQLI من الحدوث ، بالإضافة إلى الحماية منها في حالة حدوثها.

الخطوة الأولى هي التحقق من صحة الإدخال (المعروف أيضًا باسم التطهير) ، وهو ممارسة كتابة التعليمات البرمجية التي يمكنها تحديد مدخلات المستخدم غير المشروعة.

بينما يجب دائمًا اعتبار التحقق من صحة الإدخال من أفضل الممارسات ، إلا أنه نادرًا ما يكون حلاً مضمونًا. الحقيقة هي أنه في معظم الحالات ، ليس من المجدي ببساطة تحديد جميع المدخلات القانونية وغير القانونية - على الأقل ليس دون التسبب في عدد كبير من الإيجابيات الخاطئة ، والتي تتداخل مع تجربة المستخدم ووظائف التطبيق.

لهذا السبب ، يتم استخدام جدار حماية تطبيق الويب (WAF) بشكل شائع لتصفية SQLI ، بالإضافة إلى التهديدات الأخرى عبر الإنترنت. للقيام بذلك ، تعتمد WAF عادةً على قائمة كبيرة ومحدثة باستمرار من التوقيعات المصممة بدقة والتي تسمح لها بالتخلص من استعلامات SQL الضارة. 

عادةً ما تحتفظ مثل هذه القائمة بالتوقيعات للتعامل مع نواقل هجوم محددة ويتم تصحيحها بانتظام لإدخال قواعد حظر للثغرات الأمنية المكتشفة حديثًا.

غالبًا ما يتم أيضًا دمج جدران الحماية الحديثة لتطبيقات الويب مع حلول الأمان الأخرى. من هذه ، يمكن أن تتلقى WAF معلومات إضافية تزيد من قدراتها الأمنية.

على سبيل المثال ، قد يقوم جدار حماية تطبيق الويب الذي يواجه إدخالًا مشبوهًا ولكن ليس ضارًا بالتحقق منه مع بيانات IP قبل اتخاذ قرار بحظر الطلب. إنه يحظر الإدخال فقط إذا كان عنوان IP نفسه له سجل سمعة سيئ.

يستخدم WAF أيضًا تقنيات التعهيد الجماعي التي تضمن نشر التهديدات الجديدة التي تستهدف أي مستخدم على الفور عبر قاعدة المستخدمين بأكملها. يتيح ذلك الاستجابة السريعة للثغرات الأمنية التي تم الكشف عنها حديثًا وتهديدات zeroday .

إخلاء المسؤولية

اختراق المواقع دون موافقة متبادلة مسبقة غير قانوني . المستخدم النهائي مسؤول ويلتزم بجميع القوانين المعمول بها. لا نتحمل في مدونة ويكي كالي لينكس و المطورون أي مسؤولية ولا يتحملون أي مسؤولية عن أي سوء استخدام أو ضرر ناتج عن هذا البرنامج.