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

الموضوع: [درس] الترقيع النهائي لثغرة البيرل Perl

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

    [درس] الترقيع النهائي لثغرة البيرل Perl



    السلام عليكم ورحمة الله وبركاته
    لا شك أن الجميع يشتكي من مشكلة الهاكرز الذي يقوم بدعس (أن صح اللفظ ) المواقع الموجود على السيرفر كلها بسحب الكونفيق لاخذ بيانات قاعدة بيانات المنتدى لتغير الفورم هوم أو التمبليت أو زرع Index الى غير ذلك من أنواع الدعس خخخ
    حان الوقت لشرح طريقة التخلص من هذه المشكلة إن شاء الله الى الأبد.
    نقول بسم الله وبالله التوفيق
    نرجع المسأله للأصل وكيف يستغل الهاكرز هذه الثغرة ، عموما الهاكرز يعتمد على 3 أمور مهمة في تشغيل البيرل أولها تصريح البيرل باعطاء ملف المترجم (/user/bin/perl)تصريح 700 هذه مسألة لها سلبياتها على السيرفر فكثير من سكريبتات السيبنال لا تشتغل وتعيد خطأ 500 في الأباتشي من جهة ومن جهة اخرى ان الهاكر بكل سهولة يقدر يتجاوز هذه المرحلة برفع ملف مترجم محلي وتغيير الباث التكملة .... لن اذكرها مخافة استغلالها من طرف اطفال النت هذه المسألة أظن أنه لا خلاف حولها .

    ثانيا : الهاكرز يعتمد على تغيير امتداد تشغيل البيرل لو أن الأباتشي مضبوط أو اعدادات الموقع مضبوطة على RemoveHandler لإمتدادات CGI Scripts أو حذف امتداد البيرل نهائي من ملف الإعداد فهذه يتم تجاوزها بالتبليغ عن امتداد جديد عن طريق Addhandler في htaccess وتشغيل البيرل بكل سهولة .

    ثالثا : تفعيل CGI scripts عن طريق عمل Override بتفعيل ExecCGI في htaccess (Options +ExecCGI) ولو كانت في الملف الرئيسي ملغية (Options –ExecCGI) هذه بالإضافة الى تطبيق الأمر الأول والثاني يشتغل البرل بكل بساطة.

    هذه الأمور كلها مرتبطة بعضها الببعض ولا يمكن معالجة أمر دون معالجة الأخر ، لدينا هنا الأمر الأول لا يمكن معالجته لحاله الا اذا الغينا البيرل من السيرفر بصفة نهائية وهذا لا يمكن
    الأمر الثاني الغاء FileInfo من AllowOverride لتمنع عمل Override لـتعليمات mod_mim منها addtype و addhandler و setHandler ما فيها أي اي خطر من الغائها ان شاء الله لكن المشكلة لو الغيناها يبقى منعنا العملاء من التحكم في mod_rewrite عن طريق التعليمات RewriteEngine و RewriteOptions و RewriteBase و RewriteCond و RewriteRule وفيها كذلك RedirectMuch دون ان ننسى صفحات الخطأ عن طريق التعليمة ErrorDocument وغيرها من التعليمات المهمة التي يحتاجها العميل وهي الأكثر استخداما في الاستضافات بنسبة 90% لان الغالبية العظمى يعتمدون على mod_rewrite في vbseo وتحويل الصفحات وتغيير الإمتدادات والكثير من الأمور مما يجعل أمر الغائها مضرة .


    الأمر الثالث هو الأمر الذي سنسلط عليه الأضواء لشرحه لانه هو الأمر المتحكم في الامرين السابقين لو قمنا بمنع التحكم في ExecCGI ومنعنا العملاء من التحكم فيها عن طريق Htaccess يبقى حسمنا المسالة وانتيهنا .

    ناخذ الأمر وشرحه بمنطقية اكثر ما دام نحن عطلنا عمل Override لتعليمات Options عن طريق htaccess وأننا ضبطنا الخيار الرئيسي في httpd.conf لالغاء ExecCGI هذا يعني أننا الغينا CGI scripts نهائيا كيف ذلك :
    نعلم أنه في أخر نسخة الأباتشي تم تصحيح خلل فني Bug الذي كان يسمح بعمل تجاوز لكل تعليمات Options عن طريق htaccess والأن اصبح بالإمكان تخصيص التعليمات التي يسمح للعميل بتجاوزها عن طريق htaccess هذا يتيح لنا الغاء التحكم في ExecCGI وحده دون الغاء كافة تعليمات Options لانها في بعض الأحيان تكون ضرورية ولا يمكن الاستغناء عنها كمثال منع استعارض ملفات المجلدات التي لا تحتوي على ملف index أو أي ملف من ملفات المسمات ب DirectoryIndex بواسطة (Options -Indexes) وغيرها من الأمثلة كثيرة .
    واليكم طريقة الغاء البيرل في هذا الجزء :
    ملا حظة : التطبيق على apache 2.2.x فقط لذلك يفضل الترقية إلى اخر اصدار من الجيل 2.2 وهو apache2.2.9
    أولا قم بتسجيل الدخول الى الشيل ثم قم بفتح ملف httpd.conf عن طريق الامر :
    Nano /etc/httpd/conf/httpd.conf

    ابحث عن :
    <Directory "/">
    ضع فوقه التالي :
    كود PHP:

    <Directory "/home">
        
    Options -ExecCGI  -FollowSymLinks
        AllowOverride AuthConfig Indexes Limit FileInfo Options
    =IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
    </Directory
    احفظ الملف
    تم قم باعادة تشغيل الأباتشي بالأمر
    كود PHP:
     service httpd restart 
    ماذا تعني هذه السطور :
    بالنسبة للسطر الأول :
    كود PHP:
        Options -ExecCGI  -FollowSymLinks 
    هذا يعني أن كل التعليمات المتبقية مفعلة وهي IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch وهذا السطر يعادل :
    كود PHP:
    Options -ExecCGI IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch 
    لاحظ هنا نقدر نكتفي بالغاء –ExecCGI فقط عن طريق
    كود PHP:
    Options –ExecCGI 
    يبقى أننا فعلنا كل التعليمات ماعدا ExecCGI لكن هناك تعليمة خطيرة لا نريد تفعيلها التحكم فيها وهي FollowSymLinks فاضطررنا اننا نفعل كل التعليمات باسثناء FollowSymLinks و الغينا –ExecCGI كما يمكن كتابة السطر كالتالي :

    كود PHP:
        Options IncludesNOEXEC Indexes MultiViews SymLinksIfOwnerMatch 
    كل هذه الأكواد معناها واحد ولو قمنا مثلا بتفعيل تعليمة مثلا
    Options IncludesNOEXEC Indexes
    يبقى التعليمات المتبقية اللي هي MultiViews SymLinksIfOwnerMatch ملغية لذا وجب علينا أن نفعلها كلها باستثناء التعليمات التي نراها الخطيرة
    وبالنسبة للسطر الثاني :
    كود PHP:
    AllowOverride AuthConfig Indexes Limit FileInfo Options=IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch 
    هذا السطر يعادل منطقيا
    كود PHP:
    AllowOverride All
    Option –FlowSymLinks –ExecCGI 
    لكن AllowOverride All
    يسمح بتجاوز
    Option –FlowSymLinks –ExecCGI

    عن طريق htacess
    فبالتالي السطر يمنحنا التحكم اكثر ومن الغاء وتفعيل تعليمات Options و التحكم بها عبر htaccess

    أمل أن يكون هذا الجزء واضح ولا اشكال فيه

    الطريقة الثانية لالغاء البيرل : وهي منع exec في بارتشن الهوم
    نظرا لعدم وجود سكربتات سيبنال سواء sh أو python او perl والغات برمجة أخرى التي ليس لها محركات نظامها نفس نظام php التي لا تشتغل الا اذا تم تركيب محركات في apache كموديول في هذه الحالة يمكن ان نستفيذ بجعل بارتشن الهوم Noexec ومنع exec يمنع تنفيذ أي سكريبت من الأنواع التي سبق ذكرها وبالتالي نحن لم نعد بحاجة إلى حماية الأباتشي شرط ما يكون mod_perl مركب .

    واليكم الطريقة :
    اولا لا بد أن يكون الهوم بارتشن لحاله فلا يمكن تطبيقها والهوم جزء من بارتشن /
    لذلك أنصح بتقسيم السيرفر تقسيمة السي بنال وهي :
    كود PHP:
    /=10GB
    /usr=10GB
    /var=على حسب  حجم قواعد البيانات ولو تخصص له هارد ديسك لحاله كان افضل 
    /tmp =1GB
    /home =ماتبقى من المساحة 
    /boot=0.5GB
    /swap=من 2 جيغا إلى ضعف حجم الرام 
    هذه هي التقسيمة السليمة للسيرفرات السي بنال

    نقوم بفتح ملف fstab عن طريق الأمر :
    Nano /etc/fstab

    ننزل عند السطر :
    كود PHP:
    LABEL=/home             /home                   ext3    defaults,usrquota        1 2 
    تم نقوم باضافة noexec ليصبح بهذا الشكل :

    كود PHP:
    LABEL=/home             /home                   ext3    defaults,usrquota,noexec        1 2 
    بعدها نقوم باعادة فصل واعادة تركيب /home لياخذ الخصائص الجديدة بالأمر :
    كود PHP:
    mount –o  remount /home 
    تذكر أنها عند عمل تحديث للاباشي يجب ازالة noexec من البارتشن وتنفيذ هذا الأمر :
    كود PHP:
    mount -o remount,exec /home 
    بعد الإنتهاء من التحديث رجع البارتشن noexec
    كود PHP:
    mount -o remount /home 
    وهكذا قمنا بمنع البيرل من التنفيذ داخل بارتشن الهوم
    كما يمكن كذلك حماية tmp و ذاكرة المشاركة /dev/shm بنفس الطريقة منع تنفيذ الملفات الخبيثة منها

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

    أخوكم سامي
    السلام عليكم





    __________________
    للمراسلة
    support@layerset.com


  2. #2
    عضو فعال
    تاريخ التسجيل
    Nov 2005
    المشاركات
    1,765


    الطريقه قديمه وكانت معروفه عام 2005 عند الهاكرز الخبراء ولكن للأسف انتشرت بكثره عام 2006 \ 2007 عند اطفال الشهره ، والآن بعد ماستهلكت استهلاك كامل لا اعتقد انه مفيده بعد ،، بالمواقع العربيه خصوصاً بعد ماتم اخذ الحيطه من قبل 99,98% من السيرفرات العربيه والأجنبيه طبعاً ،،
    فـائق تحياتي ، مناف





    __________________
    افضل مافي الايام الماضية انها مضت





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

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

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