المؤلف: BIBI
عندما نفكر في المتسللين، غالبًا ما يكون المتسلل على هذا النحو: شخص وحيد يدخل بهدوء إلى خوادم الآخرين لتدمير أو سرقة المعلومات السرية لأشخاص آخرين. ربما يقوم بتغيير صفحتنا الرئيسية، أو حتى يسرق أرقام بطاقات الائتمان وكلمات المرور الخاصة بالعملاء. بالإضافة إلى ذلك، يمكن للمتسللين مهاجمة العملاء الذين يزورون موقعنا. وفي الوقت نفسه، أصبح خادمنا أيضًا شريكًا له. تطلق Microsoft على هذا الهجوم اسم هجوم "البرمجة النصية عبر المواقع". تحدث معظم هذه الهجمات عندما يقوم موقع الويب بإنشاء صفحات ويب ديناميكيًا، ولكن هدف المتسلل ليس موقع الويب الخاص بك، بل العملاء الذين يتصفحون موقع الويب.
وصف هجمات البرامج النصية عبر المواقع
في مجلة تسمى <<ADVISORY CA--2000-02>>، يحذر CERT الجميع: إذا لم يتحقق الخادم بشكل فعال من مدخلات العميل، فسيقوم المتسلل بإدخال بعض تعليمات HTML البرمجية الضارة، عندما تكون HTML هذه يتم استخدام إدخال التعليمات البرمجية في برامج SCRIPT، ويمكن استخدامها لإحداث ضرر، مثل إدراج بعض الصور أو الأصوات المثيرة للاشمئزاز، وما إلى ذلك، وفي الوقت نفسه، يمكن أن تتداخل أيضًا مع التصفح الصحيح للعملاء لصفحة الويب.
نحن نعلم أنه تم تحريض بعض الأصدقاء على بعض مواقع الويب المجانية المشبوهة، وكل ما حصلوا عليه هو 10 إلى 20 نافذة صغيرة غالبًا ما تكون مصحوبة بأزرار غير صالحة تم إنشاؤها بواسطة JAVA أو JAVASCRIPT، وهذا ما يسمى مصيدة الفئران. إغلاق هذه النوافذ لا جدوى منه، ففي كل مرة نغلق فيها نافذة، ستظهر 10 نوافذ أخرى. يحدث هذا الموقف غالبًا عندما لا يكون المسؤول متاحًا. تعد حوادث الماوس مثالًا نموذجيًا للمتسللين الذين يستخدمون أساليب SCRIPT عبر المواقع لمهاجمة العملاء.
العلامات والبرامج النصية الضارة ليست مجرد مزحات، بل يمكنها أيضًا سرقة البيانات وإفساد الأنظمة. يمكن للمتسلل الذكي أو حتى غير الذكي استخدام SCRIPT للتدخل في إدخال البيانات إلى الخادم أو تغييره. يمكن أيضًا استخدام رموز SCRIPT لمهاجمة أنظمة العملاء وإتلاف محرك الأقراص الثابتة لديك بالكامل. وعليك أن تعلم أنه أثناء استخدامك للخادم، فإن البرنامج النصي للهاكر يعمل أيضًا في مكان آمن على الخادم الخاص بك! إذا كان العملاء يثقون بخادمك، فسوف يثقون أيضًا في تعليمات برمجية نصية ضارة. حتى هذا الرمز يأتي من خادم المتسلل في شكل <SCRIPT> أو <OBJECT>.
حتى استخدام جدار الحماية (SSL) لا يمكنه منع هجمات SCRIPT عبر المواقع. وذلك لأنه إذا كان الجهاز الذي أنشأ رمز SCRIPT الضار يستخدم SSL أيضًا، فلن يتمكن SSL الخاص بخادمنا من التعرف على الرمز. هل سنقوم فقط بتسليم موقع الويب الذي كان عملاؤنا يثقون به كثيرًا للمتسللين؟ ووجود هذا النوع من التدمير سيضر تمامًا بسمعة موقع الويب الخاص بك.
1. مثال على هجوم SCRIPT عبر المواقع:
وفقًا لمعلومات CERT، يحتوي الإدخال الديناميكي بشكل عام على النماذج التالية: معلمات URL وعناصر الجدول وCOOKISE وطلبات البيانات. دعونا نحلل هذا الموقع بصفحتين فقط، اسم الموقع هو: MYNICESITE.COM. تستخدم الصفحة الأولى نموذجًا أو ملف تعريف الارتباط للحصول على اسم المستخدم:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" ثم
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com الصفحة الرئيسية</TITLE>
</HEAD>
<BODY>
<H2>MyNiceSite .com</H2>
<FORMmethod="post" action="page2.asp">
أدخل اسم مستخدم MyNiceSite.com الخاص بك:
<INPUT type="text" name="userName">
<INPUT type="submit" name= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
الصفحة الثانية ترجع اسم المستخدم للترحيب:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" ثم
strUserName = Request.QueryString("userName")
Else
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
نهاية إذا %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Hello: <%= strUserName %> </H3>
</BODY>
</HTML>
عندما تكون عادةً عندما كتابة النص، كل شيء يعمل بشكل جيد. إذا قمت بإدخال رمز البرنامج النصي: <SCRIPT>alert('Hello.';</script>، فسوف تظهر علامة تحذير JavaScript:
في المرة التالية التي تقوم فيها بالزيارة، ستظهر علامة التحذير هذه أيضًا؛ وذلك لأن رمز البرنامج النصي إنه موجود بالفعل في ملف تعريف الارتباط عند زيارتك لأول مرة. وهذا مثال بسيط على الهجوم عبر المواقع.
إذا كنت تعتقد أن هذه حالة خاصة، فيمكنك أيضًا البحث في مكان آخر على الإنترنت وتجربتها بنفسك المواقع الحكومية الكبيرة، والمواقع التعليمية، والمواقع التجارية، وبعضها لديه الوضع المذكور أعلاه، حتى أنني وجدت أن موقع الويب الذي أستخدم فيه بطاقات الائتمان غالبًا لا يقوم بتصفية المدخلات، إنه أمر مخيف حقًا أن نفكر
فيه بالنسبة للمتسللين، غالبًا ما يكون المتسلل على هذا النحو: شخص وحيد يدخل بهدوء إلى خوادم الآخرين لتدمير أو سرقة المعلومات السرية للأشخاص الآخرين، وربما يقوم بتغيير صفحتنا الرئيسية، أو حتى سرقة أرقام بطاقات الائتمان وكلمات المرور الخاصة بالعملاء. يهاجم المتسللون أيضًا العملاء الذين يزورون موقعنا على الويب، وتطلق شركة Microsoft على هذا الهجوم اسم هجوم "البرنامج النصي عبر المواقع"، وتحدث معظم هذه الهجمات عندما يقوم موقع الويب بإنشاء صفحات ويب ديناميكيًا، ولكن هدف المتسلل ليس موقع الويب الخاص بك، بل العملاء. من يتصفح موقع الويب،
يوجدوصف لهجمات البرامج النصية عبر المواقع
في كتاب يسمى <<ADVISORY CA --2000-02 >> في المجلة، حذر CERT الجميع: إذا لم يتحقق الخادم بشكل فعال من مدخلات العميل، فسيقوم المتسللون بذلك. سيتم إدخال بعض أكواد HTML الضارة. عند استخدام مدخلات أكواد HTML هذه في برامج SCRIPT، يمكنهم استخدامها لإحداث ضرر، مثل إدراج بعض الصور أو الأصوات المثيرة للاشمئزاز، وما إلى ذلك، وفي الوقت نفسه، يمكن أن تتداخل أيضًا مع العملاء. ' التصفح الصحيح للويب
نحن نعلم أنه تم حث بعض الأصدقاء على زيارة بعض مواقع الويب المجانية المشبوهة، ولم يحصلوا إلا على 10. إلى 20 نافذة صغيرة، غالبًا ما تكون هذه النوافذ مصحوبة بأزرار غير صالحة تم إنشاؤها بواسطة JAVA أو JAVASCRIPT يُطلق عليها اسم مصيدة الفئران، ولا جدوى من ذلك. في كل مرة نغلق فيها نافذة، ستظهر 10 نوافذ منبثقة. غالبًا ما يحدث هذا الموقف عندما لا يكون المسؤول موجودًا، وهي مثال نموذجي لاستخدام المتسللين إن أساليب SCRIPT عبر المواقع لمهاجمة العملاء
ليست مجرد مزحة بسيطة، بل يمكنها حتى سرقة البيانات وتدمير النظام. يمكن للمتسلل الذكي أو حتى غير الذكي استخدام SCRIPT للتدخل في إدخال بيانات الخادم يمكن أن يؤدي استخدام رمز SCRIPT أيضًا إلى مهاجمة نظام العميل، ويجب أن تعرف أنه أثناء استخدامك للخادم، فإن البرنامج النصي الخاص بالمتسلل يعمل أيضًا في مكان آمن على خادمك ثق في رموز SCRIPT الضارة هذه، حتى لو كان الرمز يبدأ بـ <SCRIPT> أو <OBJECT>، ويأتي النموذج من خادم المتسلل.
حتى استخدام جدار الحماية (SSL) لا يمنع هجمات SCRIPT عبر المواقع. وذلك لأنه إذا كان الجهاز الذي أنشأ رمز SCRIPT الضار يستخدم SSL أيضًا، فلن يتمكن SSL الخاص بخادمنا من التعرف على الرمز. هل سنقوم فقط بتسليم موقع الويب الذي كان عملاؤنا يثقون به كثيرًا للمتسللين؟ ووجود هذا النوع من التدمير سيضر تمامًا بسمعة موقع الويب الخاص بك.
1. مثال على هجوم SCRIPT عبر المواقع:
وفقًا لمعلومات CERT، يحتوي الإدخال الديناميكي بشكل عام على النماذج التالية: معلمات URL وعناصر الجدول وCOOKISE وطلبات البيانات. دعونا نحلل هذا الموقع بصفحتين فقط، اسم الموقع هو: MYNICESITE.COM. تستخدم الصفحة الأولى نموذجًا أو ملف تعريف الارتباط للحصول على اسم المستخدم:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" ثم
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com الصفحة الرئيسية</TITLE>
</HEAD>
<BODY>
<H2>MyNiceSite .com</H2>
<FORMmethod="post" action="page2.asp">
أدخل اسم مستخدم MyNiceSite.com الخاص بك:
<INPUT type="text" name="userName">
<INPUT type="submit" name= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
الصفحة الثانية ترجع اسم المستخدم للترحيب:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" ثم
strUserName = Request.QueryString("userName")
Else
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
نهاية إذا %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Hello: <%= strUserName %> </H3>
</BODY>
</HTML>
عندما تكون عادةً عندما كتابة النص، كل شيء يعمل بشكل جيد. إذا قمت بإدخال رمز البرنامج النصي: <SCRIPT>alert('Hello.';</script>، فسوف تظهر علامة تحذير JavaScript:
في المرة التالية التي تقوم فيها بالزيارة، ستظهر علامة التحذير هذه أيضًا؛ وذلك لأن رمز البرنامج النصي إنه موجود بالفعل في ملف تعريف الارتباط عند زيارتك لأول مرة. وهذا مثال بسيط على الهجوم عبر المواقع.
إذا كنت تعتقد أن هذه حالة خاصة، فيمكنك أيضًا البحث في مكان آخر على الإنترنت وتجربتها بنفسك المواقع الحكومية الكبيرة، والمواقع التعليمية، والمواقع التجارية، وبعضها لديه الوضع المذكور أعلاه، حتى أنني وجدت أن موقع الويب الذي أستخدم فيه غالبًا بطاقات الائتمان لا يقوم بتصفية الإدخال، إنه أمر مخيف حقًا أن أفكر في
ذلك : منع هجمات البرامج النصية عبر المواقع.
1. كيفية منع تعرض الخوادم للهجوم من خلال البرامج النصية عبر المواقع،
ولحسن الحظ، أصبحت تقنية منع هجمات البرامج النصية عبر المواقع مثالية أكثر فأكثر. حاليًا، يمكن اعتماد عدة طرق لمنع هجمات البرامج النصية عبر المواقع:
1. تشفير أحرف الصفحة التي تم إنشاؤها ديناميكيًا،
أول شيء عليك القيام به هو تشفير أحرف الصفحة التي تم إنشاؤها ديناميكيًا، وإلا سيكون المتسللون عرضة للخطر للغاية. من الممكن تغيير إعدادات شخصيتك لتجاوز دفاعاتك بسهولة. إذا كان موقعنا الإلكتروني موقعًا باللغة الإنجليزية، فنحن نحتاج فقط إلى ضبط ترميز الأحرف على الحرف اللاتيني ISO-8859-1، ويكون الوضع المحدد كما يلي:
<META http-equiv="Content-Type" content="text/html ;charset= ISO-8859-1">
2. قم بتصفية جميع بيانات الإدخال وتقييدها.
هذه هي الطريقة الثانية لمنع هجمات البرامج النصية عبر المواقع. عند تسجيل الدخول، لا تسمح بإدخال هذه الأحرف الخاصة. لذلك يمكننا إضافة برنامج JAVASCRIPT إلى طريقة ONSUBMIT لإكمال هذه الوظيفة. في هذا المثال، نحدد الإدخال بـ 15 حرفًا. وهذا يمنع إدخال البرامج النصية الأطول.
في الكتاب <<مقالة قاعدة المعرفة QA252985>>توفر Microsoft برنامج Javascript قصيرًا لإكمال تصفية بيانات الإدخال. لقد قدمنا أيضًا هذا الكود لمثالنا وفقًا للموقف المحدد، مثل:
function checkForm() {
document.forms[0].userName.value = _
RemoveBad(document.forms[0].userName.value
return true
);}
// كود MICROSOFT
function RemoveBad(strTemp) {
strTemp = strTemp.replace(
/</>/"/'/%/;/(/)/&/+/- /g ; "");
return strTemp;
}
باستخدام هذه الطريقة، يمكنك تصفية هذه الأحرف الموجودة في الإدخال:
% < > [ ] { } ; " '( )
3. استخدم تشفير HTML وURL
على الرغم من استخدام ما ورد أعلاه تعد الطريقة المذكورة أعلاه لتصفية وتقييد المدخلات طريقة دفاعية مهمة جدًا، لكنها لا تزال عاجزة ضد الهجوم القائم على البريد الإلكتروني. لأنني أضع معلمات URL مباشرة في البريد الإلكتروني. وردا على هذا الوضع علينا أن نتخذ إجراء أمنيا أكثر قوة. إذا استخدمنا ASP، فسيكون حلها أسهل نسبيًا. فقط HTML وURL يقومان بتشفير صفحات الويب التي تم إنشاؤها ديناميكيًا. بالنسبة للموقف في مثالنا، أجرينا التغييرات التالية على عنوان URL لإعادة التوجيه في صفحة الإدخال الأولى:
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Response.Cookies("userName"))
في صفحة التنفيذ، أضفنا:
strUserName = server .HTMLEncode(Request.QueryString("userName"))
and
strUserName =server.HTMLEncode(Request.Form("userName"))
توصي Microsoft بتشفير كافة المدخلات والمخرجات للصفحات الديناميكية. يجب أن يكون هذا صحيحًا حتى عند تخزين البيانات واسترجاعها من قاعدة البيانات. بهذه الطريقة يمكنك تجنب هجمات البرامج النصية عبر المواقع إلى حد كبير.
للقيام بذلك، قم بإضافة Page1.asp:
<%@ اللغة=VBScript %>
<% إذا كان Request.Cookies("اسم المستخدم") <> "" إذن
'إعادة التوجيه إذا تم اكتشاف ملف تعريف الارتباط
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Request.Cookies("userName"))
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<META http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">
<TITLE> الصفحة الرئيسية لموقع MyNiceSite.com</TITLE>
</ HEAD>
<script LANGUAGE="javascript">
<!--
function checkForm() {
document.forms[0].userName.value =
RemoveBad(document.forms[0].userName.value
return true
}
);
//*************************************************** ******
//المبرمج: رمز غير أصلي - يأتي من MICROSOFT
// مصدر الكود: مقالة قاعدة معارف Microsoft Q25z985
// الوصف: يزيل الأحرف السيئة
//*************
.***** ********************************************
وظيفة RemoveBad(strTemp) {
strTemp =strTemp.replace(/</>/"/'/%/;/(/)/&/+/-/g, "");
return strTemp
}
//-->
</SCRIPT>
<BODY>
<BR>
<H2>MyNiceSite.com</H2>
<BR>
<FORM Method="post"action="page2.asp" onsubmit="return checkForm; ();">
أدخل اسم مستخدم MyNiceSite.com الخاص بك:
<INPUT type = "text"name = "userName" width = "10" maxwidth = "10">
<INPUT type = "submit"name = "submit" value = " إرسال">
</FORM>
</BODY>
</HTML>
<% end if %>
أضف ما يلي إلى Page2.asp:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<>"" ثم
strUserName =server.HTMLEncode(Request.QueryString("userName"))
Else
Response.Cookies("userName") =Request.Form("userName")
strUserName = server.HTMLEncode(Request.Form("userName"))
End If %>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/ html;charset=ISO-8859-1">
</HEAD>
<BODY>
<H3 align="center">مرحبًا: <%= strUserName %></H3>
</BODY>
</HTML>
الآن بسبب هذا تم منع الهجوم بشكل فعال. بعد تشفير هذه العلامات والبرامج النصية الضارة، يتم عرضها في شكل نص، كما هو موضح أدناه:
يمكننا أيضًا إضافة مكون IIS لتصفية كافة الأحرف الخاصة من الإدخال الديناميكي. بالنسبة لمواقع الويب التي تم تطويرها بالفعل، من السهل جدًا استخدام هذه الطريقة لمنع هجمات البرامج النصية عبر المواقع. يمكن لعنصر التحكم الخاص بنا اعتراض هدف الطلب من صفحة ASP، ويمكنه اكتشاف محتويات الجداول وملفات تعريف الارتباط وسلاسل الطلبات والبرامج:
يمكننا أيضًا إضافة بيانات إحصائية إلى هذا المكون عن طريق كتابة ملفات السجل. عندما يقوم العميل بإدخال حرف غير قانوني، يقوم هذا المكون بتسجيل عنوان IP الخاص به والوقت. لمزيد من التفاصيل، يرجى الاطلاع على مقالة دوج دين <<قم بإصدار تطبيق IIS الخاص بك على ASPToday>>.
نحتاج فقط إلى اتخاذ بعض الخطوات البسيطة لمنع هجمات البرامج النصية عبر المواقع بشكل فعال. بالإضافة إلى الطرق الثلاث المذكورة أعلاه، توصي Microsoft وCERT أيضًا بشدة باستخدام طريقة يسمونها "الفحص العقلي". على سبيل المثال، إذا كانت هناك نافذة إدخال تسمح فقط بإدخال الأرقام، فسنقتصر على السماح فقط بإدخال الأرقام من 0 إلى 9. الطريقة التي تستخدمها Microsoft وCERT للحد من أحرف الإدخال أفضل بكثير من تصفية الأحرف الخاصة وحدها. من خلال اتخاذ هذه الخطوات، يمكنك حماية العملاء الذين يزورون موقع الويب الخاص بك أثناء تواجدهم هناك.
2. كيف تحمي متصفحك من هجمات القراصنة:
كيف تتجنب التعرض للهجوم أثناء تجوالك على الإنترنت؟ تنصح Microsoft وCERT بعدم العبث عبر الإنترنت. ردًا على هذا الموقف، قدم مؤلف عمود في مجلة PC Magazine يُدعى جون دفوراك إجابة مثيرة للاهتمام. إنه يعتقد أن هذا عمل متعمد من قبل Microsoft: لإخافة متصفحي الإنترنت ودفعهم إلى تصفح المواقع الآمنة مثل America Online وMSN.com.
في مثالنا، حتى إذا كنت لا تتجول على الإنترنت، فلن تتمكن من تجنب التعرض لهجوم المتسللين عبر الإنترنت. ومن المفارقات أن معظم المخاطر تأتي من المواقع التي نثق بها كثيرًا. إذا كنت تريد أن يكون موقع الويب الخاص بك خاليًا من المشاكل، فيجب عليك عدم تنزيل أي محتوى ديناميكي أو أي ملفات تعريف ارتباط. للحصول على التفاصيل، يرجى الرجوع إلى المعلومات ذات الصلة بالمتصفح الخاص بك.
تحذرك Microsoft أيضًا من ضبط البرنامج النصي النشط للمتصفح الخاص بك على حالة تقييد شديد وبريدك الإلكتروني على وضع الاستلام المقيد بشدة. كن حذرًا عند النقر على الروابط الموجودة في رسائل البريد الإلكتروني. لمزيد من المعلومات، يرجى الرجوع إلى كتاب يسمى <<مقالة قاعدة معارف Microsoft Q253117>>. تحسبًا لذلك، من الأفضل أن تتمتع بمزيد من الخبرة عبر الإنترنت وأن تكون حذرًا في جميع الأوقات.
الخلاصة
إذا كنت مبرمجًا سابقًا في UNIX، فقد لا تعرف معنى البرمجة النصية عبر المواقع. أنت تعلم أن اسم المستخدم وكلمة المرور لمسؤولي العديد من المواقع لتسجيل الدخول هما الجذر والجذر على التوالي، وبالمثل، فإن اسم وكلمة المرور للعديد من مسؤولي قواعد البيانات هما sa وكلمة المرور على التوالي. أنت تعرف أيضًا Webzine (مثل Phrack وAlt2600)، حيث يمكن للطرق التي يقدمونها أن تتيح لك معرفة نقاط الضعف في خادم معين خطوة بخطوة. في هذا النوع من الأجهزة، تعلم أيضًا أن العديد من خوادم قاعدة بيانات مواقع الويب وخوادم الويب لا تحمي نفسها. بمجرد أن يواجه القراصنة، سيتم شل الجهاز.
على الرغم من أنه من السهل اتخاذ خطوات لحماية أنظمتنا من المتسللين، إلا أن أنظمتنا معرضة دائمًا للمتسللين. هناك كل الأسباب التي تجعلنا نعتقد أن بعض الثغرات الأمنية الجديدة ستظهر خلال العام المقبل. ذكرت ورقة بحثية تم إعدادها بتوجيه من السيد جون هوارد من شركة CERT: "وفقًا للبحث الحالي، فإن كل موقع ويب له اسم مجال على الإنترنت يتعرض للهجوم من قبل المتسللين مرة واحدة على الأقل سنويًا في المتوسط
بالنسبة للخوادم حتى واحد فقط من هذا القبيل
."الهجوم لا يطاق. تعد هجمات البرمجة النصية عبر المواقع طريقة أخرى يمكن للمتسللين استخدامها. لكن يمكننا منع حدوث هذا النوع من الهجوم طالما أننا نقوم ببعض المعالجة البسيطة المذكورة أعلاه.