الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سلسلة:كيف تحمي موقعك *2*

بدأه Digital lion في 29 أبريل 2009 · 6 رد · 890 مشاهدة · في قسم أمن المعلومات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

بســم الله الـرحمــن الرحيــم

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

ولقد تعمدت ترك كثير من الثغرات فيه لكي يمكننا سدها سويا ولمعرفة الأخطر المتوقعة

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

حاول أن تكتب في المتصفح عنوان الصفحة المحمية مباشرة

http://127.0.0.1/exemple/premierpage.php

لقد تم اختراق موقعنا وهذا لسبب بسيط وهو أننا لم نتأكد عند هذه الصفحة انه تم فعلا المرور عبر صفحة التحقق

الحل يجب إضافة متغير في session نعتمده كشاهد مرور يتم إنشائه عند التحقق من هوية المستخدم وبالتالي سوف يتغير كود Control.php ولكن بشكل بسيط بإضافة متغير ل session

كود صفحة Control.php

<?php
session_start();
session_destroy();
session_start();
// Connexion au serveur
            include_once("connexion.php");

            $login= $_POST['login']    ;
            $password= $_POST['password']    ;        
            $query = " SELECT * FROM user where login_user= '$login' and password_user= '$password'  ";
            $result = mysql_query($query);

                 if ($f=mysql_fetch_array($result)) {
                header('Location: premierpage.php');
                $_SESSION['email'] =$f['email_user'];
                $_SESSION['name'] =$f['name_user'];
                exit;
                }else {
                header('Location: index.html');
                exit;
                }
?>

،

ونضيف أيضا تحقق عند صفحة premierpage.php من وجود المتغير وفي حالة عدم وجوده يتم تحويله إلى الصفحة الأولى

كود صفحة

premierpage.php

<?php 
session_start();
if(empty($_SESSION['name'])){
    header('Location: index.html');
    exit;
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>premierpage</title>
</head>
 <?php echo $_SESSION['name']  ?>
<body>
</body>
</html>

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

وجد ملف مرفق يحتوي على مواد هذا الدرس

exemple2.rar،

مجرد إحساس...نحن جيل التغير بإذن الله

#2

استخدام الـ session أمر هام جداً، على الرغم من أنه يصبح تقريباً عديم الجدوى في حال توفر XSS على أقل تقدير في الموقع حيث يسمح بتنفيذ session hijacking ويصبح للمهاجم نفس الصلاحيات الموجودة للزائر أو المستخدم.

لذلك من المهم جداً أن تغلق النوافذ بعد إغلاق الأبواب.

نفذت هذا الهجوم سابقاً على موقع refriendz.com - قمت بكتابة كود JS استخدمت فيه AJAX ووضعته في صفحة البروفايل الرئيسية، كل زائر لصفحتي يقوم الكود بالاستفادة من AJAX بتنفذ تعديلات في صفحة أخرى غير التي يستعرضها المستخدم (AJAX لديها القدرة على نقل الـ credentials أو الـ session ضمن نفس الـ domain في صفحات أ×رى بخلاف JS وحدها) - التعديلات كانت تقوم بإصابة ملفه الشخصي أيضاً وتعطب الكود الخاص بزر التحرير فلا يعود بإمكانه تعديلها إلا لو قام بتحميل الصفحة وإزالة الجزء الملغوم فيها ومن ثم تغيير مسار الفورم وحفظها من جديد.

لو كان الموقع أكبر كـ myspace.com لأصبح لدينا worm أخرى كـ samy's worm :)

لن أخرج عن الموضوع كثيراً، تابع يا رعاك الله.

تم تعديل هذه المشاركة بواسطة Xacker في 4 مايو 2009 في 12:51 — السبب: changing sami into samy

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

ربما يصبح الموقع بمواصفات قليله عند محاولة إغلاق النوافذ XSS خصوصا إذا كان الموقع مثل موقع ماي سبيس , موقع فيس بوك قام بهذه الخطوه لذلك أرى التفاعل قل والمطورين زاد عملهم (هذا رأي الخاص :) ) فكلما كان المشترك في الموقع له مزايا كوضع كود جافاسكريبت وهتمل كلما كان الموقع ذا شعبيه ومرونه ... حتى في المنتديات .

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

هناك عملية أخرى غير السيشن يتم إستخدامها رأيتها في ملفات الورد بريس ولم أدرسها أو أبحث عنها مثل

defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

ياريت تشرحولي شو قصتها :) لآني من زمان حابب أستخدمها لزيادة الأمان في مواقعي

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#4

اولا تعديل بسيط اسمها samy worm

بالنسبة لما ذكرته اخي bastr3 اعتقد هذا لمنع دخول الصفحة بشكل مباشر... مثلا ملف مثل inc.dbconnection.php تضيف له هذا الكود

بعد كذا تضيف

define('_VALID_MOS',true);

الى index.php

على اي حال xss exploits تشكل مشكلة لايمكن تجاوزها ابدا خاصة اذا كانت persistent مثل اللي تتكلمون عنه هنا. بشكل عام فريق عمل myspace سيء وبطيء جدا. وفريق عمل facebook يقفل الثغرات خلال ساعات. (قد تكون هذي المعلومة مهمة؟)

php5-zce-logo-new.gif

CCNA, CCNA Security, CCNP

#5

شكراً على التذكرة أخ Ryn، تم تصحيح الاسم.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

أستخدام

defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

كما قال أخىRyn أو ما شابه فهى لمنع الوصول لأى موديول تكتبها داخل برنامجك إلا من خلال برنامجك

تم تعديل هذه المشاركة بواسطة net_code في 5 مايو 2009 في 19:58

لا تراجع و لا إستسلام

#7

تم فهم عمل الدالة :)

شكرا أخ ريان وكل المشاركين

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

مواضيع مشابهة