SpareNet Servers Advertising & Link Exchange

اطلاعیه

بستن
هیچ اطلاعیه ای هنوز ایجاد نشده است .

Bypass Referer Check In PHP

بستن
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
نوشته‌های جدید

  • Bypass Referer Check In PHP

    عرض سلام و احترام خدمت دوستان ایران هکی
    با آرزوی قبولی طاعات و عبادات دوستان و با کمی تاخیر تبریک پیروزی مقتدرانه تیم ملی والیبال ایران در مقابل آمریکا در تهران


    در این مبحث با آموزش دور زدن رفرر در پی اچ پی (Bypass Referer Check  In PHP) در خدمتتون هستیم.


    همان طور که مطلع هستید در پی اچ پی آرایه ای بنام $_SERVER وجود دارد که به ما قابلیت هایی رو ارائه میکند که یکی از آنها HTTP_REFERER میباشد. که به توضیح برخی از دوستان ، کاربردهای زیادی دارد از جمله:

     مشاهده صفحه ارجاع
    پیشگیری از حملات CSRF
    بررسی تبلیغات یا سئو


    که میتوانید برای مشاهده صفحه ارجاع دهنده بدین صورت عمل کنید:[php]<?php

    if(!empty($_SERVER['HTTP_REFERER'])){
             echo $_SERVER['HTTP_REFERER'];
    }else{
             echo "Not Found Referer";
    }

    ?>[/php]


    همچنین میتوان از HTTP_REFRER برای موقع اینکلود کردن فایل  ها و یا اجرای دستورات و ... نیز استفاده کرد:[php]<?php

    error_reporting(0);


    function clean_url($url)
    {
           if($url == '') return;
           $url = str_replace('http://', null, strtolower($url));
           $url = str_replace('https://', null, $url );
           if(substr($url, 0, 4) == 'www.') $url = substr($url, 4);
           $url = explode('/', $url); 
           $url = reset($url); 
           $url = explode(':', $url);
           $url = reset($url);
           return $url;
    }


    if(clean_url($_SERVER['HTTP_REFERER']) == clean_url($_SERVER['HTTP_HOST']) ){
            echo "ok";
    }else{
            die("Access Denied");
    }

    ?>[/php]

    در ابتدا فانکشنی جهت پاکسازی آدرس استفاده میکنیم که خروجی آدرس ها بدین شکل میشود:
    اگر آدرس ارجاع دهنده http://www.mysite.ir/irh باشد خروجی mysite.ir میشود.
    و بصورت خلاصه کار فانکشن clean_url پاک کردن http و https و www و ادرس اضافه است.

    وظیفه مورد HTTP_HOST  نیز برگردان آدرس سایت است. مثلا اگر آدرس فایل php مورد نظری که دستور چاپ HTTP_HOST را در آن داده باشیم http://mysite.ir/mypage.php باشد ، خروجی برابر است با : mysite.ir

    پس در نتیجه مقادیر ما برای بررسی شرط :
    HTTP_REFERER = mysite.ir 
    HTTP_HOST  = mysite.ir

    سپس در مرحله دوم بررسی شده است که اگر HTTP_HOST با HTTP_REFERER برابر بود ، پیام ok چاپ شود در غیر این صورت توقف دستورات و نمایش پیام Access Denied.

    :: خب اما مرحله دور زدن Referer :

    بر فرض که بروی سایتی فایلی به ادرس http://mysite.ir/irh.php وجود دارد که اگر شرط referer اوکی باشه اطلاعاتی رو چاپ میکند.

    خب در چنین شرایطی ما میتوانیم از CURL استفاده کنیم که در اون این قابلیت وجود داره که بتونیم Referer رو نیز ست کنیم.
    که کد ما عبارت میشود از :[php]<?php
             $ch = curl_init("http://localhost/irh_test/referer_bypass.php");
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
             curl_setopt($ch, CURLOPT_REFERER, "http://localhost/");
             $page = curl_exec($ch);
             echo $page;
             curl_close($ch);
    ?>[/php]

    که در ابتدا باید آدرس فایلی که قصد داریم referer اون رو دور بزنیم را وارد میکنیم. و سپس در خط چهارم مقدار referer رو ست میکنیم.
    که با اجرای فایل میبینید که referer بای پس شد....

    که البته در بالا برای شرط referer و هم برای بای پس از مثال ساده ای استفاده شده است و ممکن است برنامه نویس آن را سخت تر کرده باشد.

    اگر دوستان جهت امن تر کردن بررسی Referer ها روشی مد نظر دارند ممنون میشم که به اشتراک بزارند.
    امیدوارم که به کار دوستان بیاد
    ارادتمند - A3is
    [align=center][/align]
    [align=center]

    ما زنـ-ـ-ـده به آنیـــم که آرام نگیریم
    موجیم که آسودگی ما عدم ماست

    [/align]
صبر کنید ..
X