حمله تزریق کد (Cross Site Scripting) یا XSS چیست؟ :: پارس دانلود

كد ساعت و تاريخ

تور دبی

پارس دانلود

امنیت ، شبکه ، بازی های رایانه ای ، اخبار سایبری ...

پارس دانلود

امنیت ، شبکه ، بازی های رایانه ای ، اخبار سایبری ...

پارس دانلود

امام علی (ع) می فرماید:
هیچ گناهکاری را نا امید مکن، چه بسیار گناهکاری که عاقبت به خیر گشته
و چه بسیار خوش کرداری که در پایان عمر تباه شده و جهنمی گشته است.

Dear friends, it's best to look at the history of these 50 years We rebelled when there was no better ally than the United States for America Once we resurrected, we did not even know how to handle an old tank We rebelled when even the food in Iran was not enough for all people Once we resurrected, we did not even know what the real meaning of war was When we rose, everyone said that Iran was the most stable country in the region and now... We are the strongest regional power in terms of political stability We are the strongest country in the region in the military field We are the strongest region in the field of new science We are the strongest country in the field of manufacturing all types of missiles We are the strongest country in the region in terms of national, local, regional and family security We are the strongest cyberwar region in the region We are the strongest country in the field of domestic production (of course, our present president is an animal in all respects destroying the country, I love tramp) We are the strongest country in the region for the use of nuclear technology (and the region's poorest country in the field of nuclear weapons production (because our religious scholars consider this as equal to the war on God) We are the best in the world in the field of science production We are a member of the best countries in the field of medicine and family health We are a member of the best nations in the field of nanotechnology And... But before the revolution, we were only the military power of the region But before the revolution, we were the largest producer of crude oil But before the revolution, people were dying from the lack of science, food, lost culture, and so on .... But before the revolution, we were the only importer But before the revolution we had no private science But before the revolution, we had no scientist inside Iran But before our revolution our doctors were Indian But before the revolution, we did not know how to build a tower And... Please tell me which one is better? Before the revolution or after the revolution

لوگو روشنگری
طبقه بندی موضوعی
مهدویت امام زمان (عج)

حمله تزریق کد (Cross Site Scripting) یا XSS چیست؟

Simple Guy | جمعه, ۱۹ آذر ۱۳۹۵، ۰۵:۳۲ ب.ظ


حمله تزریق کد (XSS) چیست؟

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

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

 

چگونه از باگ XSS جلوگیری کنیم؟

نحوه جلوگیری از باگ XSS نیاز به آگاهی برنامه نویس تحت وب از سناریوهای گوناگونی است که ممکن است طی آن‌ها، حمله کننده باگ XSS را شناسایی کرده و اقدام به اکسپلویت کردن آن نماید. به همین دلیل یک پست جداگانه با عنوان نحوه جلوگیری از باگ Cross Site Scripting یا همان XSS منتشر کرده ایم که در آن موارد حساس به باگ XSS را بررسی کرده ایم. برای جلوگیری از باگ، به پست زیر مراجعه کنید:

 

چرا حملات XSS خطرناک هستند؟

حملات تزریق کد یا جاوا اسکریپت (Javascript)، به دلایل مختلفی خطرناک هستند. ازجمله:

دزدیدن کوکی‌ها:

هکر می‌تواند بسیار ساده، کوکی‌های مرورگر کاربر را بدزدد. از آن‌جایی که در کوکی‌ها اطلاعاتی نظیر شناساگر نشست (Session) فعالِ مثلاً حساب کاربری فرد نوشته شده است، هکر می‌تواند با استفاده از این کوکی‌ها و بدون وارد کردن حتی یک کاراکتر رمز، وارد حساب شما شود. البته اگر کوکی‌های حساس از طرف سایت اصلی به عنوان امن به مرورگر معرفی شوند، این کوکی‌ها به دست هکر نخواهد افتاد (حداقل با روش‌های عادی).

دزدیدن اطلاعاتی مثل رمز عبور:

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

ارسال درخواست‌های جعلی:

هکر می‌تواند با تزریق کدی، درخواست‌های تقلبی را از مرورگر کاربر رد و بدل کند. در این صورت مرورگر کاربر را مانند یک سرور پراکسی در دست گرفته و به راحتی می‌تواند خود را پشت آن مخفی کند. همچنین می‌تواند از این طریق اقدام به DDoS کردن سرویس‌های گوناگون کند.

مدیریت کل محتوای HTML صفحه:

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

 

حملات XSS چگونه انجام می‌پذیرند؟

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

مثلاً فرض کنید یک سایت قابلیت اضافه نموند محتوایی توسط کاربران را به یک صفحه می‌دهد، مثل قسمت نظرات یا کامنت‌های یک مطلب. در سمت سرور، نحوه نمایش کامنت‌ها مثلاً به صورت زیر است (کدها در زبان PHP هستند):

echo '<div class="comment">' . $commentBody . '</div>';

 

با فرض اینکه در متغیر commentBody، کامنتی که کاربران گذاشته اند قرار گرفته، درصورتی که یک کاربر نظری مثل متن زیر را بگذارد:

با تشکر از مطالب مفیدتون

کد تغییر یافته اینچنین خواهد شد:

echo '<div class="comment">' . "با تشکر از مطالب مفیدتون" . '</div>';

 

در نتیجه کدهای HTML زیر به مرورگر کاربر تحویل داده خواهد شد:

<div class="comment">با تشکر از مطالب مفیدتون</div>

و کاربرانی که آن مطلب را مشاهده می‌کنند، قادر خواهند بود تا کامنتی با محتوای "با تشکر از مطالب مفیدتون" را ببینند.

حال فرض کنید کاربر دیگر (در اینجا، حمله کننده) کامنتی با محتوای زیر را ارسال کند:

عالی بود <script>alert("You Are Hacked")</script>

چون در کدهای PHP گذاشته شده، هیچ فیلتری بر روی خروجی اعمال نمی‌شود، در سمت سرور پردازش به این صورت خواهد بود:

echo '<div class="comment">' . 'عالی بود <script>alert("XSS Bug Found")</script>' . '</div>';

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

<div class="comment">عالی بود <script>alert("XSS Bug Found")</script></div>

و کاربر محتوای "عالی بود" را مشاهده خواهد کرد با این تفاوت که چون یک تگ <script> استفاده شده، مرورگر مقادیر داخل آن را با استفاده از موتور جاوا اسکریپت خود execute خواهد کرد و در نتیجه کاربر یک پیغام به صورت پاپ آپ حاوی مقدار "XSS Bug Found" را خواهد دید!

حال اگر از سمت سرور خروجی به درستی فیلتر شود، عبارت زیر فقط و فقط به عنوان یک نوشته چاپ می‌گردد و در نتیجه <script> نیز به عنوان تگ توسط مرورگر شناسایی نخواهد شد:

<div class="comment">عالی بود <script>alert("XSS Bug Found")</script></div>

ممکن است بگوئید که خب می‌شود با فیلتر کردن تگ <script> جلوی این باگ را گرفت اما به این سادگی‌ها نیست. محتوای زیر را به عنوان Payload حمله در نظر بگیرید:

<div style="background-image: url(javascript:alert('XSS Bug Found'))">

در پی لود بالا از هیچ تگ <script> ای استفاده نکرده ایم با این حال با تزریق کردن آن، باز هم متن "XSS Bug Found" را خواهیم دید.

 

یک مثال دیگر:

سایتی را فرض کنید که با جستجو کردن مثلا عبارتی "cpu چیست" شما را به مسیری مانند زیر هدایت می‌کند (چون معمولاً از متد GET استفاده می‌کنند):

http://example.com/vul/?q=cpu+چیست

و از طرفی کدهای قسمت نتایج جستجوی آن به این صورت نوشته شده است (کد در زبان PHP است):

echo "متن جستجوی شما: " . $_GET["q"];

در کد بالا همراه با رشته "متن جستجوی شما: " چیزی که در پارامتر q (در آدرس سایت مثال بالا) نوشته ایم، به مرورگر تحویل داده می‌شود.

با جسنجوی عبارت "cpu چیست" کد نوشته شده، متن زیر را تحویل ما خواهد داد:

متن جستجوی شما: cpu چیست

حال فرض کنید که یک کاربر دیگر (در اینجا، حمله کننده) بجای عبارت "cpu چیست"، کد دلخواه خود را اجرا کند که معمولاً کدهای جاوا اسکریپت هم شامل آن‌ها می‌شود:

http://example.com/vul/?q=<script>alert("XSS Found Here")</script>

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

متن جستجوی شما: <script>alert("XSS Found Here")</script>

با اینحال چون خروجی توسط کدهای سایت فیلتر نشده است و <script> یک تگ استاندارد برای مرورگر است، مقدار داخل آن توسط انجین جاوا اسکریپت مرورگر پردازش شده و از دید کاربر پنهان می‌شود. در نتیجه چیزی که کاربر می‌بیند به این صورت خواهد بود:

متن جستجوی شما:

به همراه یک پاپ آپ حاوی عبارت "XSS Found Here".

حال اگر آن قسمت به درستی فیلتر شود، دقیقاً عین مقدار زیر برای کاربر نشان داده خواهد شد و چون فیلتر شده، <script> به عنوان یک تگ برای مرورگر شناخته نخواهد شد بلکه تنها یک نوشته خواهد بود:

متن جستجوی شما: <script>alert("XSS Found Here")</script>


منبع : بایت گیت

  • Simple Guy

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی