وبلاگ شخصی رامین بازقندی

طبقه بندی موضوعی
آخرین مطالب

User Agent XSS: Stored | Reflected

دوشنبه, ۱۶ ارديبهشت ۱۳۹۲، ۰۳:۰۹ ب.ظ

یک مطلب کوتاه و توضیح مختصر راجع این نوع XSS که با کمی خلاقیت سمت و برنامه نویسی میتونید روی سایت هایی که از UserAgent استفاده میکنند کار های بسیاری انجام داد


توضیح مختصر : خوب دوستان عزیز بدون فلسفه میریم سر اصل مطلب ، همان طور که میدوننید User Agent در واقع اطلاعاتی هستن که مرورگر ( در 90% مواقع واقعی است ) در سرآیند های هدر برای سروری که درخواست صفحه و یا فایلی رو داره ارسال میکند و جواب های رو از طرف سرور ( وب سرور ) دریافت میکنه ! قسمتی از اطلاعات ارسالی و دریافتی مرورگر رو میتونید در درخواست سایت بیان ببنید ( با کمی تغییر و خلاصه )

توضیح مختصر : خوب دوستان عزیز بدون فلسفه میریم سر اصل مطلب ، همان طور که میدوننید User Agent در واقع اطلاعاتی هستن که مرورگر ( در 90% مواقع واقعی است ) در سرآیند های هدر برای سروری که درخواست صفحه و یا فایلی رو داره ارسال میکند و جواب های رو از طرف سرور ( وب سرور ) دریافت میکنه ! قسمتی از اطلاعات ارسالی و دریافتی مرورگر رو میتونید در درخواست سایت بیان ببنید ( با کمی تغییر و خلاصه )


http://blog.ir/ GET / HTTP/1.1 Host: blog.ir User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Cookie: bb_sessionhash=; bb_lastvisit=; bb_lastactivity=; bb_thread_lastview=; bb_forum_view=; editor_height=fe%23466px HTTP/1.1 200 OK Date: Fri, 21 Dec 2012 23:00:45 GMT Server: Apache/2 X-Powered-By: PHP/5.3.10-1ubuntu3.4 X-Pingback: http://blog.ir/base/xmlrpc.php Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 5904 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8
با این خط توجه کنید تا بریم سر بحث اصلی :

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0
مبحث اصلی : خوب دوستان عزیز همونطور که در جریان هستید User Agent ها قابل دستکاری و تغییر هستند ! بزارید کار حدمون رو با یک مثال شروع کنیم . به این سایت مراجعه کنید ! یک نمونه که اطلاعاتی که به User Agent معروف هستند را در اختیار شما قرار میده . یک ابزار افزونه برای این کار در فایرفاکس معرفی میکنم تا بعد بریم سراق ابزار های ابتدایی خودمون . User Agent Switcher ابزاریست که میتونید User Agent های مرورگرتون را تغییر یا ویرایش کنید ! ابزاری بسیار جالب است . خوب میریم سره بحث اصلی ، ببنید دوستان عزیز حالا با تغییر User Agent دقیقا تونستیم یک فیلد اطلاعاتی که به صورت Reflected در XSS ظاهر میشند رو شبیه سازی کنیم ، یعنی چی ؟ یعنی حالا ما هر اطلاعات و یا کدی ( مجدد روی کد تاکید میکنم ) که برای نوع مرورگر ، سیستم عامل و ... هست رو میتونیم در User Agent قرار بدیم ، کد بالا رو که User Agent من در باز کردن بیان بود رو که یادتون هست ( یادتون نباشه 100% رمتون زیر 10 MB هست ) دور از شوخی من میام User Agent خودم رو با یک کد Script XSS ترکیب میکنم و حاصل رو براتون قرار میدم :

http://blog.ir/ GET / HTTP/1.1 Host: blog.ir User-Agent: Mozilla/4.0 (compatible; MS<script>alert("XSS Ajab !");</script>IE 8.0; Windows NT 6.1) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Cookie: bb_sessionhash=; bb_lastvisit=; bb_lastactivity=; bb_thread_lastview=; bb_forum_view=; editor_height=fe%23466px HTTP/1.1 200 OK Date: Sat, 22 Dec 2012 00:59:18 GMT Server: Apache/2 X-Powered-By: PHP/5.3.10-1ubuntu3.4 X-Pingback: http://blog.ir/base/xmlrpc.php Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 5904 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8
این خط بسیار جالبه دقت کنید :

User-Agent: Mozilla/4.0 (compatible; MS<script>alert("XSS Ajab !");</script>IE 8.0; Windows NT 6.1)
درسته که این روش در سایتی مثل بیان که در ایندکسش هیچ بازتابی از User AGent ندازیم مشکل خاصی رو به مجود نمیاره اما در سایت مثال یک تست انجام بدید ، به این سایت مراجعه کنید ! .
تکته : اگر شما از سایتی به سایت مثال منتقل بشید و این عمل رو انجام بدید با Forbidden مواجه میشید !!! دلیلش رو اطلاعی ندارم . یکی از دوستان توضیح بدن ممنون میشم . ( پس لینک سایت رو مستقیم باز کنید )

چند نکته جالب در مورد این روش :

جالبه که وقتی خواستم روی phpinfo(); آزمایش کنم (البته دور از انتظار هم نبود ) کاراکتر های ویژه فیلتر بود ! اما من نتونستم اخطاری مبنی بر وجود رخ دادن XSS در User Agent رو در رفرنس سایت php.net پیدا کنم ( از دوستانی که با یه همچین اخطار و یا توضیحی در این مورد در سایت php.net آشنا یا برخورد داشتند ممنون میشم لینک رو قرار بدند )

جالب بود که در این روش میشه حملات bling SQL Injection و یا در مواردی خاص خود SQL Injection رو طرح ریزی و پیاده سازی کرد ! ( چون ما داریم یک ورودی رو به سایت اعمال میکنیم ناخواسته اما کجاست فیلتر ورودی !!! )

جالب تر از همه این بود که در برخی از افزونه های جوملا که برای آمار بازدید کنندگان بود این متد به راحتی کار میکنه ( مثال نزنم بهتره ! ) و جالبیش اینجاست که اومدن از فیلتر کاراکتر های خاص استفاده کردن اما اومدن زرنگ بازی در بیاردن و ورژن مرورگر رو هم بدن ولی با کد زیر میشه بایپس کرد چرا ؟ چون برنامه نویسش نمیتونه بشینه دستی ورژن ها رو آماده بزاره یعنی مثل ویندوز ، لینوکس نیست که بیاد یگه اگه اگه .... باید جدا کنه ، به مثال زیر دقت کنید :


Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0

Windows 7 64 Bit , Firefox 17.0
و حالا من اینتوری تغییر بدم :

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/1<script>alert('Working!');</script>.0

Windows 7 64 Bit , Firefox 17.0
امیدوارم با این متد آشنا شده باشده و تونسته باشم یک مقدار دیدگاه دوستان رو تغییر بدم ، البته بگم متد خصوصی نیست اما تو ایران در کمتر انجمنی دیدم که در موردش بحث کنند . بالا تر گفتم که یک ابزار هم که خدمون مینویسیم رو هم در اختیار دوستان قرار میدم ، حتما ولی اول بزارید دوستان و مخصوص حسین و شاهین عزیز اگه افتخار بدند نظری بدند و قبلش یک سناریو بزارم وسط تا بیشتر با قدرت این روش آشنا بشیم ( البته من بشم ، شما همه استاد ما هستید ) بعد ابزار هم در همین پست قرار میدم ( البته ابزار که زیاده ولی خب خودمون بسازیم یه چیزه دیگست )

سناریو : فرض کنید یک وب سایت فقط آمار بازدیدگنندگان رو در پنل ادمین داره ! خوب پس 100% User Agent هارو هم واسه آمارش ذخیره میکنه ، ما اگه بیام تمام روش هایی که برای رد شدن از فیلتر ها وجود داره رو در User agent خودمون ست کنیم و بعد بیام با تلفیقی از روش های Ajax , Comet , XSS بیام آمده بشیم اگه ادمین رفت آمار رو دید بیام از حملات مختلف XSS استفاده کینم ( البته اگه فیلتر نشده باشده ) فکر کنم خیلی باحال بشه :دی راستش من عاشقه این روش های فضایی هستم + حلاقیت و سرعت و برنامه نویسی میشه روش های بسیار جالبی رو پیاده سازی کرد /

منبع : سیمرغ

  • R4M1N

نظرات  (۰)

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

ارسال نظر

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