meisamrce
meisamrce
خواندن ۲ دقیقه·۵ سال پیش

آسیب پذیری XSS Reflected​ در وب سایت حسن روحانی

لا نِعْمَةَ اَهْنَاءُ مِنَ الاَْمْنِ
هيچ نعمتى گواراتر از امنيت نيست
امام علی (ع)
تیم امنیتی درسا
@dorsateam

صبح که از خواب بیدار شدم دیدم وب سایت آقای حسن روحانی رئیس جمهور کشور عزیزمان ایران داری باگ XSS Reflected هست . البته من بیشتر از یک سالی هست که به پشتیبانی وب سایت هم خبر دادم گفتم این مشکل امنیتی را برطرف کنند اما نمیدونم چرا برطرف نکردند !

خوب من از گوگل سرچ میزنم که اشتباهی سایت شخص دیگری را تست نکرده باشم .

خوب درست بود سایت روی یکی از منو ها (رویداد ها) کلیک میکنم .

یه فیلد جستجو دیدم مقدار salam”> را داخلش وارد میکنم بعد روی آیکون جستجو کلیک میکنم .

خوب نتیجه به شکل زیر شد .

دقیقا عبارتی که تزریق کردم تو خروجی نمایش داده شد فکر کنم آسیب پذیر نیست . خوب برای بهتر متوجه شدن موضوع میریم یه view source از صفحه میگیرم و عبارت را جستجو میکنیم. همانطور که در تصاویر زیر میبینید همه جاها را امن کرده .

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

این بدرد نیمخوره میریم بعدی !

همانطور که در تصویر بالا می بینید یه فیلد hidden با نام event هست من سعی میکنم آن را به url اضافه کنم و مقداری رو داخلش تزریق میکنم .

یه اتفاق های افتاد گویا مقدار من داخل صفحه تاثیر گذاشت. حالا سعی میکنم یه کد html تزریق کنم .

بله ما به آسیب پذیری HTML Injection رسیدیم حالا ببینیم میتونیم به xss تبدیل کنیم . من یه کد xss ساده تزریق میکنم .

متاسفانه WAF جلوی ما را گرفت خوب همینطور که دیدید WAF باعث شد که کد xss ما اجرا نشه و من سعی کردم با حالات های مختلف WAF را Bypass کنم خوب سخت بود اما شد در ادامه توضیح میدم .

من میخوام یه alert را اجرا کنم.

این WAF خیلی گیر میداد من برای بای پس کد XSS را به معادل HTML Entities تبدیل میکنم .

خوب شاید براتون سوال باشه که اعداد بالا چه معنی دارند خیلی ساده است اعداد بالا معادل کد ASCII تابع alert میباشد .

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

#&ASCII_number;

من هم تمامی حرف های تابع alert را به کد اسکی تبدیل کردم . اما باز یه مشکلی هست اینکه کد های که نوشتیم در url کار نمیکند چون کاراکتر های خاص دارد باید آنها را url encode کنیم .

خوب درست شد میشه این رو تزریق کرد اما باز مشکل بعدی! این کد به تنهای قابل اجرا نیستند! من از کد زیر استفاده کردم متاسفانه waf تمامی event ها مربوط به javascript رو بسته بود تنها رویداد باز بود پس در نهایت پایلود نهایی به شکل زیر در آمد .

یه فیلد textarea ایجاد کردیم با صفت autofocus فیلد را فوکس کردیم با رویداد کاربر با تکان دادن غلطک ماوس یا غلتک ماوس کد xss ما اجرا میشود .

موفق و سربلند باشید


هکامنیتتست نفوذروحانیباگ
برنامه نویس و کارشناس امنیت
شاید از این پست‌ها خوشتان بیاید