العودة   منتديات أصول > أصول التقنية > أصول برمجة
 
 

أصول برمجة دروس ومشاريع برمجية php - c - asp - perl - python - java script - ajax - bash

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
 
قديم 05-03-2009, 07:33 AM   #1 (permalink)
عضو جديد
 
تاريخ التسجيل: Sep 2004
العمر: 29
المشاركات: 2
رايق
معدل تقييم المستوى: 0
فارس المستقبل is a glorious beacon of lightفارس المستقبل is a glorious beacon of lightفارس المستقبل is a glorious beacon of lightفارس المستقبل is a glorious beacon of lightفارس المستقبل is a glorious beacon of lightفارس المستقبل is a glorious beacon of light
افتراضي خطورة register_globals

السلام عليكم ورحمة الله وبركاته

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين



يعلم اي مبرمج أن استخدامه لخاصية register_globals يُعد شيئا محفوفا بالمخاطر للكود الذي يكتبه في برنامجه ..



ولكن في الحقيقة من يستخدمون ال register_globals او بمعني ادق من يعتمدون عليها في برمجياتهم هم نوعين :

الأول مبتدئ أو هاوي للبرمجة

والثاني محترف يستطيع استخدامها ولكن مع تفادي خطورتها .



ملحوظة ( معظم مدراء السيرفرات يقومون بتعطيلها register_globals علي سيرفراتهم ) .



أين يكمن الخطر .؟

في وضع متغير ( عام ) في دالة أو في السكريبت عموماً دون وجود شروط أو عمليات تحقق من صحة القيمة المعطاة له ..

دون الدخول في تفاصيل معقدة ولتبسيط الأمر تماماً دعنا ننظر لهذا المثال وهو من الصفحة الخاصة بالـ register_globals بموقع php.net الرسمي لهذه اللغة .



كود PHP:

<?php
// define $authorized = true only if user is authenticated
if (authenticated_user()) {
    
$authorized true;
}

// Because we didn't first initialize $authorized as false, this might be
// defined through register_globals, like from GET auth.php?authorized=1
// So, anyone can be seen as authenticated!
if ($authorized) {
    include 
"/highly/sensitive/data.php";
}
?>
بالنظر للمثال بأعلي نجد أننا اعطينا المتغير $authorized القيمة True بمجرد استدعاء الدالة ..
وبعداغلاق جملة الشرط if
تم استدعاء المتغير وهو متغير عام global في جملة if الثانية
ومعطي القيمة (؟؟؟)
أي أنك لو لاحظت أنه لم يأخذ اية قيمة في الجملة الثانية ومن هنا يمكن اي مخترق ان يعتمد علي الـ register_globals إن كانت مفعلة علي السيرفر ويحقق اختراق بتنفيذ الطلب مثلا علي هذه الصورة
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات . إضغط هنا للتسجيل]
هنا سيتم تنفيذ باقي الكود الموجود في جملة الشرط if الثانية وهو :
كود PHP:
include "/highly/sensitive/data.php"
بالتالي سيتم تضمين الملف data.php وعرضه في الصفحة file.php
وقد يكون هذا الملف هام ويحتوي معلومات مهمة ..

وهنا يكمن الخطر في تفعيلregister_globals علي السيرفرات او في الاعتماد علي استخدامها من قبل المبرمجين .

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

ارجو ان يكون الموضوع مفيداً علي الرغم من بساطته ..

ولكم اغلي تحياتي


التعديل الأخير تم بواسطة فارس المستقبل ; 05-03-2009 الساعة 07:35 AM
فارس المستقبل غير متواجد حالياً   رد مع اقتباس
 
 
 
قديم 05-03-2009, 07:33 AM   #2 (permalink)
أصــــول
 
تاريخ التسجيل: Feb 2007
المشاركات: 1,687
رايق
معدل تقييم المستوى: 10
osowl.cOm is a glorious beacon of lightosowl.cOm is a glorious beacon of lightosowl.cOm is a glorious beacon of lightosowl.cOm is a glorious beacon of lightosowl.cOm is a glorious beacon of lightosowl.cOm is a glorious beacon of light
افتراضي

شكرا لهذا الموضوع الرائع ومن رائع لأروع إن شاء الله
__________________
عالم من الإبداع osowl.com
الأقوي والأفضل Aldwlya.com
Servers Administration
Security & Devlopement

osowl.cOm غير متواجد حالياً   رد مع اقتباس
 
 
 
قديم 05-03-2009, 08:27 AM   #3 (permalink)
رجل أقـل معـرفـة

اوسمتي

 
الصورة الرمزية المحترف
 
تاريخ التسجيل: Jun 2004
الدولة: مــصـــــر
العمر: 29
المشاركات: 1,184
رايق
معدل تقييم المستوى: 10
المحترف is a name known to allالمحترف is a name known to allالمحترف is a name known to allالمحترف is a name known to allالمحترف is a name known to allالمحترف is a name known to all
افتراضي رد: خطورة register_globals

وعليكم السلام ورحمة الله وبركاته

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

اسمح لي باضافة مثال اخر لخطورة تفعيلها ووباستخدام دالة include

انظر لهذا المثال :

كود PHP:
<?php
include "$path/file.php";

?>
ان كانت register_globals = On علي السيرفر .. فممكن لأي هاكر تنفيذ اختراق سريع بتضمين شيل مثلا كالتالي :
[فقط الأعضاء المسجلين والمفعلين يمكنهم رؤية الوصلات . إضغط هنا للتسجيل]

وهذه ايضا تشترط أن تكون قيمة allow_url_fopen أن تكون on وهي غالبا كذلك في معظم السيرفرات .
وهكذا ,,,,,,,,,,

أما عن تفادي مخاطرها :
فعلي المستوي السيرفر يجب تعطيلها .. في ملف php.ini
ويمكن تفعيلها لموقع منفرد في حال طلب شخص او عميل لها لتشغيل سكريبت خاص به علي موقعه مع تحمله المسئولية منفردا.
أيضا علي مستوي البرمجة واضافة علي ما ذكرته انت اخي .. يستطيع المبرمج استدعاء المتغيرات باستخدام :
$_GET أو $_POST أو بالنسبة للجلسات باستخدام
$_SESSION['var']
وهكذا بدلا من استخدام المتغير مباشرة علي الصورة $var=any


سعدت بحضورك وأتمني أن أراك هنا كثيراً
أخوك
المحترف ,
__________________

قيل : الدنيا كلها ظلمات إلا موضع العلم …
والعلم كله هباء إلا موضع العمل …
والعمل كله هباء إلا موضع الإخلاص …
وقيل .. قيّدوا العلم بالكتب .. وقيدوا النعم بالشكر .
المحترف غير متواجد حالياً   رد مع اقتباس
 
 
 
قديم 05-04-2009, 06:08 AM   #4 (permalink)
عضو نشيط

اوسمتي

 
تاريخ التسجيل: Apr 2009
العمر: 24
المشاركات: 104
مشكوك فيه
معدل تقييم المستوى: 7
NabeeliumAttack is a glorious beacon of lightNabeeliumAttack is a glorious beacon of lightNabeeliumAttack is a glorious beacon of lightNabeeliumAttack is a glorious beacon of lightNabeeliumAttack is a glorious beacon of lightNabeeliumAttack is a glorious beacon of light
افتراضي رد: خطورة register_globals

قبل اي شيء نورت منتدانا اخي الكريم : فارس المستقبل وأهلا بك بين اخوانك ،،،

اريد اضافة بعض الأمور بعد اذن الجميع طبعاً واعتقد انها في صميم الموضوع :

بخصوص allow_url_fopen التي تم الحديث عنها منذ قليل فعند السماح لها بالتشغيل وسنعلم الطريقه بعد قليل بكده احنا سمحنا لبعض الدوال مثل file_get_contents() انه يسحب ملف من سيرفر تاني او ينسخه او ينشاه

طبعاً بواسطة انه ينسخ ملف من الممكن طبعاً انه يكون شيل وبكده هيعمل الواجب مع الموقع اللي عنده المشكله دي طبعاً لو كان السيرفر بيسمح بالتخطي من مستخدم لآخر لو كان مثلاً php handler متظبط على انه dso هيظبط الناس اللي عالسيرفر واحد ورا التاني

اما لو كان fcgi مثلاً او suphp من المؤكد انه يمنع التخطي لأنه بيستخدم اسلوب chroot وبذلك لو حاول التخطي آخره المجلد الخاص به وهو الهوم الخاص باليومزر اللي قدر يوصله

اما بخصوص انك تسمحله او عايز تمنعه vi /usr/local/lib/php.ini

بعد كده ابحث عن

كود:
allow_url_fopen = 'off'
خد بالك : اعملها off لو عايز يغلقها لو عايز تفتحها اعملها on

ولو حبيت تشغلها يفضل جداً تشغلها على مستخدم واحد بس من خلال ملف الأباتشي :

كود:
vi /usr/local/apache/conf/httpd.conf
او من المسار

كود:
vi /etc/httpd/conf/httpd.conf
بعد كده روح على ال virtual host اللي خاصه بالموقع اللي عايز تسمح له ب allow_url_fopen وإكتب تحت سطر DocumentRoot

كود:
php_admin_flag allow_url_fopen on
كده فعلتها على مستخدم بس بعد ما تعمل ريستارت للأباتشي

كود:
service httpd restart
او

كود:
httpd restart
اما بخصوص allow_url_include فلا يختلف كثيراً عن سابقه فهو يعمل انكلود اعتقد بالعربي يعني يشمل ملف معين او يقرأ منه يعني المهم نفس الفكره انه بيقرأ من ملف خارج السيرفر

وبكده ممكن طبعاً يعمل انكلود لحاجه عندك بملف بره السيرفر بكده ممكن يعمل انكلود لحاجه تضرك فمن الأفضل نغلقها او استعمل Suhosin عشان تحمي نفسك من المشاكل دي .

طبعاً كيفية اغلاقه او تشغيله نفس السابق بالظبط مع تغيير allow_url_include بدل allow_url_fopen

تحياتي لكم وآسف على الإطاله ،،،
NabeeliumAttack غير متواجد حالياً   رد مع اقتباس
 
 
 
قديم 05-04-2009, 08:10 AM   #5 (permalink)
أصـ(قلب)ــول

اوسمتي

 
الصورة الرمزية paradis
 
تاريخ التسجيل: Jul 2004
المشاركات: 1,939
وحيدة
معدل تقييم المستوى: 13
paradis is a glorious beacon of lightparadis is a glorious beacon of lightparadis is a glorious beacon of lightparadis is a glorious beacon of lightparadis is a glorious beacon of lightparadis is a glorious beacon of light
افتراضي مشاركة: خطورة register_globals

فارس المستقبل نورت بيتك

شـكــ وبارك الله فيك ـــرا لك

. موفق بإذن الله ... لك مني أجمل تحية .
__________________

بحبك يالبنان
paradis غير متواجد حالياً   رد مع اقتباس
 
 
إضافة رد

مواقع النشر (المفضلة)

 
الكلمات الدلالية (Tags)
php security, register_globals, sensitive


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

إخفاء / عرض قائمة من شاهد الموضوع عدد الأعضاء الذين شاهدوا هذا الموضوع : 11
ahmeds_link, المحترف, احمد رمضان, بنت يافا, درة القلوب, linux security, NabeeliumAttack, paradis, فارس المستقبل, همس الورود
أدوات الموضوع
انواع عرض الموضوع

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

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
خطورة النوم لأكثر من 9 ساعات أبو العبد أصول الطبي 12 03-09-2007 09:32 AM


الساعة الآن 10:31 PM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
منتديات أصول , الدولية , الدولية للحاسبات والانظمة