طرح استراتژی حمله با آنالیز فایل های جاوااسکریپت

طرح استراتژی حمله با آنالیز فایل های جاوااسکریپت

جاوااسکریپت (JS) چیست؟

جاوااسکریپت یک زبان اسکریپت شی‌گرا سمت کلاینت (کاربر) است و در اصل چندین معنا دارد:

  • سمت کاربر، بر روی سیستم کاربر(قربانی) اجرا می‌شود.
  • شی‌گرا (اصطلاح برنامه نویسی)
  • زبان اسکریپت، به این معنا است که cross site scripting (XSS) امکان‌پذیر است.

توسعه‌دهندگان در طول سال‌ها از این مورد برای تعاملی کردن و زیباتر کردن سایت‌های استاتیک با استفاده از چرخه‌های تصاویر جاوااسکریپت استفاده کرده‌اند اما درخواست‌های XHR و AJAX به سرور بکند نیز به صورت اوتوماتیک یک صفحه را پر می‌کنند. جاوااسکریپت می‌تواند بسیاری از کارها را انجام دهد و به همین دلیل برای ما جذاب است. ما می‌توانیم فایل‌های جاوااسکریپت را به صورت ایستا (در حال اجرا نیست) و به صورت پویا (دیباگ یا اجرا) تجزیه و تحلیل کنیم. در اینجا بیشتر بر تحلیل استاتیک تمرکز خواهیم کرد.

هر فایل JS شامل چه چیزهایی است؟

علاوه بر sink‌ های عادی cross site scripting (بخش‌هایی که حمله XSS ما در JS بازتاب می‌شود) ما می‌توانیم چندین راز دیگر را در آنجا پیدا کنیم که بتوانیم از آن‌ها استفاده کنیم:

این رازها شامل موارد زیر می‌شود اما فقط محدود به این‌ها نیستند:

  • Endpoint‌های جدید، یک بار لیست کاملی از endpointها را در نظرات یافتم.
  • پارامترهای مخفی
  • API keys، گاهی اوقات قرار است آنها عمومی باشند، بنابراین مراقب این موارد باشید.

https://github.com/streaak/keyhacks

  • Business logic، …
  • رمزعبورها
  • مناطق بالقوه خطرناک در جاوااسکریپت مانند eval() یا setinnarhtml(). اینها DOM sink هستند که می‌توانند منجر به DOM XSS شوند.

استراتژی حمله

برای استراتژی حمله نیاز داریم که ابتدا تمامی فایل‌های جاوا اسکریپت را از وب سایت جمع‌آوری کنیم. گزینه‌های متفاوتی داریم که این کار را به صورت اتوماتیک برای خود انجام دهیم و یا می‌توانیم به صورت دستی به سورس کدهای HTML نگاهی بیندازیم اما به این شکل شاید به تمامی فایل‌های JS دسترسی پیدا نکنیم مانند فایل‌هایی که به آن‌ها nested می‌گوییم (یک فایل JS که از داخل یک فایل JS دیگر فراخوانی می‌شود). اینها در روش ابتدایی دستی نمایش داده نمی‌شوند.

استفاده از Burp Suite

برای اسکن اتوماتیک قصد داریم که از فیلترهای Burp Suite  برای جستجو بر روی تمامی فایل‌های JS استفاده کنیم. برای این کار:

  • Burp Suite را باز کنید.
  • Scope خود را به درستی ست کنید.
  • با کلیک کردن در اطراف سایت، به روش دستی آن را بررسی کنید.
  • تب burp site map را باز کنید.
  • بر روی باکس فیلتر کلیک کنید.
  • بر روی چک باکس Script کلیک کنید و مطمئن باشید که تنها گزینه فعال در زیرمجموعه بخش Mime type است.
  • در زیرمجموعه Filter by file extension، Show only را کلیک کنید و در باکس JS بنویسید.

استراتژی حمله با جاوا اسکریپت

اگر burp suite pro دارید، شما باید بر روی تارگت خود در بخش site map راست کلیک کنید و در زیرمجموعه engagement tools گزینه Find scripts را خواهید یافت. این کار همان اقدامات جستجوی دستی شما را انجام می‌دهد اما نتایج بهتری نمایش خواهد داد.

استراتژی حمله با جاوا اسکریپت

استفاده از waybackurls:

waybackurls  را نصب کنید، با استفاده از این ابزار می توانیم فایل‌های JS را که لینک نیستند اما ممکن هست هنوز فعال باشند را پیدا کنیم.

go get github.com/tomnomnom/waybackurls
waybackurls google.com | grep "\.js" | uniq | sort

مکانیسم های دفاعی:

توسعه دهندگان از طیف وسیعی از مکانیسم های دفاعی استفاده می کنند که ما را متوقف کنند اما اشکالی ندارد. ما می‌توانیم با تلاش و اطمینان از این که می‌توانیم وقت خود را صرف کنیم، آنها را دور بزنیم.

1- مبهم‌سازی JS:

2- بخش‌بندی JS:

  • اینجا بخشی است که توسعه دهندگان JS را به قطعات کوچک‌تری تقسیم بندی می‌کنند و همه آن‌ها را به یکدیگر ارجاع می دهند. دور زدن بسیار کار آزاردهنده ای است و جمع کردن کدها در کنار هم بسیار سخت است.

اگر ما برای شکست این مکانیسم ها تلاش کنیم ممکن است به راه‌اندازی یک محیط از تارگت‌های شما و اجرای کد به صورت ایستا کمک کند.

تحلیل فایل‌های JS

بنابراین اکنون که تعداد زیادی فایل JS داریم، بنابراین می‌توانیم آن‌ها را به روش دستی تحلیل کنیم و یا اینکه برخی ابزارها را بر روی آنها اجرا کنیم. نکته جالب این است که این ابزارها نیازی به دانلود فایل‌های JS ندارند. این امکان برای ابزارهایی مانند Linkfinder وجود دارد که دامنه‌ای را برای فایل‌های JS، crowl کند. به طور اساسی چندین ابزار در مجموعه ابزارهای خود داریم، اما فعلا بر روی linkfinder و secretfinder تمرکز می‌کنیم.

  1. Linkfinder:

https://github.com/GerbenJavado/LinkFinder

نصب Linkfinder بسیار ساده است.

git clone https://github.com/GerbenJavado/LinkFinder.git cd LinkFinder
python setup.py install

سپس نیاز است که تمام متعلقات مربوط به آن را نصب کنیم.

 

$ pip3 install -r requirements.txt

سپس می‌توانیم از Linkfinder در طیف وسیعی از حالت‌های مختلف استفاده کنیم.

 python linkfinder.py -i https://example.com/1.js -o results.html
python linkfinder.py -i https://example.com -d

نتایج شامل تعداد زیادی لینک جدید خواهد بود که می توانیم آنها را بررسی کنیم و به طور عمیق به بررسی دستی آن‌ها بپردازیم و اگر تارگت اجازه دهد آن‌ها را به طور اوتوماتیک نیز بررسی کنیم.

 2.     Secretfinder:

 Secretfinder بر روی Linkfinder ساخته می‌شود اما بر روی تحلیل JS برای مواردی مانندAPI keys تمرکز می کند.

https://github.com/GerbenJavado/LinkFinder

نصب آن به سادگی نصب Linkfinder است.

git clone https://github.com/m4ll0k/SecretFinder.git secretfinder
cd secretfinder
python -m pip install -r requirements.txt or pip install -r requirements.txt
python3 SecretFinder.py

سپس می توانیم استفاده از آن را به شیوه Linkfinder شروع کنیم.

python3 SecretFinder.py -i https://example.com/1.js -o results.html
python3 SecretFinder.py -i https://example.com -d

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *