عرض سلام و احترام خدمت دوستان ایران هکی
با آرزوی قبولی طاعات و عبادات دوستان و با کمی تاخیر تبریک پیروزی مقتدرانه تیم ملی والیبال ایران در مقابل آمریکا در تهران
در این مبحث با آموزش دور زدن رفرر در پی اچ پی (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
با آرزوی قبولی طاعات و عبادات دوستان و با کمی تاخیر تبریک پیروزی مقتدرانه تیم ملی والیبال ایران در مقابل آمریکا در تهران
در این مبحث با آموزش دور زدن رفرر در پی اچ پی (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