برای سالهای متمادی، خطرناکترین ضعف امنیتی که در تعداد بسیار زیادی از سایتها دیده میشد، تزریق کد اسکیوال یا SQL Injection بود اما به نظر میرسه این روزها، رتبهبندی تغییر کرده و xss داره جای خودش رو در صدر جدول به دست میاره. به صورت خلاصه اگر بخوام بگم، xss مشکلیه که به هکر اجازه میده تا کدهای جاوا اسکریپت ناخواسته رو در مرورگر مراجعهکنندههای سایت اجرا کنه. نتیجه اجرای این کدهای ناخواسته میتونه از دزدیدن دسترسی کاربر به سایت باشه تا توزیع بدافزار و هک کاربرهایی که به اون سایت خاص اطمینان دارند. این شیوه هک، به صورت غیر مستقیم میتونه منجر به نفوذ هکر به سایت هم بشه چون نباید فراموش کنیم که ادمین سایت هم مراجعهکننده با سایته اما با دسترسی بالاتر.
با شروع مسابقه خوانندگی شیکه منوتو و امکان ثبت رای از طریق وبسایت، انتظار میره که بازدید این وبسایت رشد زیادی داشته باشه. نکتهای که میتونه هکرها رو به خودش جلب کنه. با یک نگاه گذرا به سایت manototv.com متوجه شدم که بخش جستحوی این سایت به خوبی بررسی نمیشه و امکان تزریق کد جاوا اسکریپت وجود داره. در تست نفوذهای اخیرم، تقریبا نیمی از سایتها این نقص امنیتی رو داشتند و بسیاریشون، مشکل رو در فیلد جستحو داشتند. نمیدونم چرا اما به نظر میرسه که توسعهدهندهها اهمیت چندانی برای این بخش قائل نیستند.
متاسفانه تجریه خوبی در گزارش ضعف امنیتی xss به مدیر سایتهای پیشین نداشتم و اونها مشکل رو مربوط به کاربران میدونستند و فکر میکردند چون مستقیم باعث هک سایت نمیشه پس مهم نیست. در مورد سایت منوتو اینجوری نبود. من در تاریخ ۴ فوریه ۲۰۱۶ متوجه مشکل شدم و به مدیر سایت اطلاع اولیه رو دادم. ۵ فوریه فیلم نمونه سو استفاده رو فرستادم و تا ۶ فوریه مشکل برطرف شد.
در مورد فیلم شبیهسازی، گفتن دو نکته ضروریه:
۱. این فیلم اثبات، یک xss کلاسیک نیست بلکه من با استفاده از امکان تزریق کد، یک iframe رو به فیلد جستجو تزریق کردم و عملا تبدیلش کردم به یک حمله ترکیبی فیشینگ. iframe یک بازسازی از فرم لاگین به وبسایت منوتو بود با این فرق که اطلاعات وارد شده رو به سرور من میفرستاد. به این ترتیب من نام کاربری و پسورد هر کسی که فریب میخورد رو میتونستم بهدست بیارم. این فیشینگ به این دلیل که در دامنه اصلی سایت و با حفظ https انجام میشه، امکان موفقیت هکر رو بسیار بالا میبره.
۲. شبیهسازی در مدت زمانی حدود ۱۰ دقیقه انجام شده و مسلما با وقت بیشتر، میتونست کیفیت بهتری داشته باشه اما از آنجاییکه هدف واقعا فریب کسی نبود و فقط قصد نشون دادن میزان خطر رو داشتم، وقت بیشتری صرفش نکردم.
جلوگیری از xss
سمت سایت:
- اصل اول در جلوگیری از تزریق کد و دستور، اعتبارسنجی و پاکسازی اطلاعات وارد شده است. برای مثال در بخش جستجو، نیازی به کاراکترهای < و یا > نیست معمولا.
- همه ورودیها مهمند، حتی referrer و یا متغیر انتخاب زیان سایت.
- به فریمورکها اطمینان کامل نداشته یاشید. مستندات فریمورک رو بخونید و ببینید کدام بخش از نکات امنیتی رو بر عهده توسعهدهنده گذاشته.
- امنیت کاربر به اندازه امنیت سایت مهمه. نیابد بین ضعفی مثل xss با نمونههایی مانند SQL Injection و یا Code Injection که مستقیما باعث هک سایت میشن، فرق بگذارید.
سمت کاربر:
- از مرورگرهای امنتر مانند firefox و یا google chrome استفاده کنید. مرورگرها رو بهروز نگه دارید.
- استفاده از افزونههایی که کار ذخیره و وارد کردن پسورد رو انجام میدن، میتونه در این زمانها مفید باشه. lastpass میتونه گزینه خوبی باشه.
- در زمان ارسال اطلاعات کاربری، به ظاهر سایت اکتفا نکنید و آدرس فرم رو چک کنید. هرچند در نمونهای که فیلمش رو گذاشتم، این بررسی راه به جایی نمیبره اما همهجا اینجور نیست.
- استفاده از افزونهای مثل noscript میتونه مفید باشه، هرچند گاهی کاربری سایت رو سخت میکنه.
- ضدویروس و ضد بدافزار نصب کنید و همیشه بهروز نگهش دارید. یک کد جاوا اسکریپت مخرب، میتونه حتی از طریق سایتهای معتبر نیز توزیع بشه و عواقب گاها جبرانناپذیری داشته باشه.
پینوشت
- این پست پس از اطمینان از حل مشکل و با اطلاع مدیر سایت منوتو منتشر شده.
- برای نمونهای از توزیع بدافزار از طریق جاوا اسکریپت، این لینک رو مطالعه کنید.
https://www.sophos.com/en-us/security-news-trends/security-trends/malicious-javascript.aspx
damet garm.
بسیار سپاگزارم از شما
به نظرتون از فایرفاکس با افزونه NoScript استفاده کنیم یا از گوگل کروم بدون افزونه مشابه؟
حکم کلی دادن در مورد مرورگرها کار سختیه.
من در مواردی گوگل کروم رو ترجیح میدم و زمانی هم از فایرفاکس استفاده میکنم
فقظ خاطرت باشه اگر NoScript نصب کردی، ممکنه در عملکرد برخی سایتها تاثیر بگذاره
من از NoScript استفاده میکنم بعضی اوقات چند بار باید سایت ریلود بشه تا ببینم کدوم اسکریپت رو در وایت لیست بذارم تا سایت درست نمایش داده بشه ولی به نظرم کلا استفاده از کروم به خاطر سندباکسش و عکسالعمل سریعتر تیمش در رفع باگهاش بهتر باشه. تو توییتر درباره ضعف XSS در سایت یا بلاگ تور هم یه چیزی گفته بودی من یادم رفت بخونمش درباره اونم مینوشتی
در مورد سندباکس گوگل کروم حق داری
اون باگ xss در سایت torproject.org هم بعد از اینکه این پست رو نوشتم دیدم.
لینک توییت کسی که باگ xss سایت تور رو گزارش کرده بود:
https://twitter.com/RoyJansen_01/status/695887428599595008
Pingback: ضعف امنیتی خطرناک از نوع xss در سایت منوتو – Filtercut
Pingback: ضعف امنیتی خطرناک از نوع xss در سایت جشنواره وب و موبایل ایران
خخخخ