
در این Write up، تست نفوذگر با حدس پارامتر در یک برنامه پیام رسان، آسیبپذیری XSS در سایت را شناسایی مینماید.
شناسایی
تست نفوذگر مدتی است که تحقیقات خود را در زمینه مشکلات مربوط به صفحات لاگین انجام میدهد و در همین راستا به درخواست و پاسخ جالب توجه زیر برخورد میکند:


در ادامه تست نفوذگر پارامترهای GET را مورد بررسی بیشتری قرار میدهد. از آنجا که وی با استفاده از پارامترهای موجود هیچ چیز جالب توجهی مشاهده نمیکند، نگاه دقیق تری به پاسخ میاندازد.
آیا امکان تغییر در مقادیر نسبت داده شده به window.QRLogin.code یا window.QRLogin.uuid وجود دارد؟
با اضافه نمودن یک پارامتر uuid، تست نفوذگر شگفت زده میشود زیرا مقدار این پارامتر در پاسخ برنامه، بازگشت داده میشود.
تست نفوذگر در ابتدا ترجیح میدهد تا کد جاوا اسکریپت دلخواه خود را تزریق نماید. روش زیر بلافاصله کار میکند:


اما این به احتمال زیاد به هیچ چیز مفیدی منجر نمیشود، زیرا برای انجام یک حمله XSS، باید اسکریپت صحیح با یک پارامتر مخرب تعبیه شده در پارامتر GET به قربانی ارسال شود.
آیا متوجه شده اید که دو عنوان Content-Type در پاسخ برنامه وجود دارد؟
از آنجایی که Content-Type دوم از نوع text/html MIME type استفاده میکند، اگر به جای HTML، جاوا اسکریپت را تزریق کنیم، چه اتفاقی میافتد؟
آزمایش بعدی که تست نفوذگر انجام میدهد به صورت زیر است:


و اگر این وب سایت با استفاده از Chrome فعلی باز شود، JavaScript تزریق شده، اجرا میشود:

Recommendation
برای رفع این مشکل، پیشنهاد میگردد تا ورودیهایی که توسط کاربر وارد میشوند کنترل شوند(Sanitize/encode).
ابزارها
تست نفوذگر متذکر میشود که ابزارهایی وجود دارند که فرآیند شناسایی پارامترهای مخفی را به صورت خودکار انجام میدهند. افزونه Param Miner مربوط به ابزار Burp Suite یکی از این ابزارها میباشد. این افزونه توسط James Kettle ایجاد شده است.
قابل توجه است، پارامتری که تست نفوذگر در این بخش از آن استفاده نموده است (پارامتر uuid) در لیست قرار داده شده در ابزار Param Miner وجود دارد.
برای دانلود و مشاهده جزئیات این ابزار میوانید به لینک های زیر مراجعه نمایید:
portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943
github.com/PortSwigger/param-miner/tree/master/src/burp