SpareNet Servers Advertising & Link Exchange

اطلاعیه

بستن
هیچ اطلاعیه ای هنوز ایجاد نشده است .

How To find Xss Bug | چطور باگ Xss پیدا کنیم؟

بستن
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
نوشته‌های جدید

  • How To find Xss Bug | چطور باگ Xss پیدا کنیم؟

    سلام عزیزانم در خدمتتون هستم با مقاله ای در مورد نحوه شناسایی باگ XSS در نرم افزار های تحت وب و تکنیک های جدیدی که در باگ بونتی ها تاکنون استفاده شده است . XSS چیست؟
    Cross-Site Scripting (XSS) رایج ترین آسیب پذیری کشف شده در برنامه های وب است. وقتی مهاجم قادر به اجرای JavaScript سمت مشتری است در مرورگر کاربر دیگر رخ می دهد. XSS به دلایلی یک کلاس اشکال بسیار جالب و پویاست.شدت آن بسته به نوع کاربرد و زمینه می تواند در هر نقطه ای آموزنده تا حیاتی باشد ، در بعضی از زمینه ها می تواند منجر به اجرای دستور از راه دور شود ، با توجه به ماهیت پویای کلاس اشکال ، جلوگیری از ایجاد آن از نقطه نظر توسعه دشوار است ، آسیب پذیری های پیچیده تر XSS بیشتر با استفاده از ابزارهای خودکار مورد نفوذ قرار میگیرند ، به دست آوردن XSS در یک برنامه آسیب پذیر ممکن است به مهاجم توانایی این را بدهد که :
    کوکی را بدزدید و به آنها امکان کنترل کامل جلسه کاربر را بدهید
    خط مشی همان منبع (SOP) را دور بزنید ، به آنها اجازه می دهد کارهای حساس را انجام دهند ، مثل اینکه کاربر قربانی ثبت شده باشند
    برای مثال در اطلاعات قابل مشاهده توسط کاربر قربانی میتوانید نفوذ کنید
    در بدترین سناریو ، این آسیب پذیری ممکن است به عنوان کرم زنجیر زده شود تا کاربران را تحت تأثیر قرار دهد.

    علت اصلی آسیب پذیری های XSS

    XSS هنگامی رخ می دهد که وقتی ورودی کاربر به درستی بازگردانده نشود (فیلتر غیر صحیح) ، به شما اجازه می دهد JavaScript سمت کلاینت تزریق شود ، به گونه ای که اجازه اجرای آن را می دهد.

    مثال اساسی
    برای درک کامل معنی همه اینها ، بیایید نگاهی به یک مثال اساسی بیندازیم. در زیر کد HTML و PHP برای یک برنامه بسیار اساسی (و آسیب پذیر) آورده شده است.

    کد:
    <html>
    <head><title>MyApp</title></head>
    <body>
    
    Welcome to MyApp, <?php echo $_GET['name']; ?>
    
    </body>
    </html>
    اگر می خواهید این کار را دنبال کنید ، یک پوشه جدید خالی در جایی ایجاد کنید ، سپس کد فوق را در فایلی بنام index.php قرار دهید در حالی که داخل آن فهرست هستید ، از خط فرمان php -S localhost: 8000 را اجرا کنید ، سپس در مرورگر خود به http://localhost:8000/?name=hakluke مراجعه کنید.

    این مقدار را دریافت خواهید کرد :

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: XSS-IMAGE-1.png
مشاهده: 554
حجم: 28.7 کیلو بایت

    شما می توانید "hakluke" را به هر آنچه در URL بخواهید تغییر دهید و دوباره در برنامه منعکس شود. و وقتی می گویم "هر آنچه می خواهید" معنای واقعی کلمه هر چیزی است. به عنوان مثال ، اگر می خواهیم متن را پررنگ کنیم ، می توانیم استفاده کنیم

    بطور مثال :

    کد:
    http://localhost:8000/?name=%3Cb%3Ehakluke%3C/b%3E

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: XSS-IMAGE-2.png
مشاهده: 525
حجم: 30.5 کیلو بایت
    یک کد ساده html خطرناک نیست تا زمانی که در جایی لود شود که ممنوع است و برنامه نویس بطور صحیح آن را فیلتر نکرده باشد؟ بیایید سعی کنیم یک تصویر را جاسازی کنیم:

    کد:
    http://localhost:8000/?name=%3Cimg%20src=%22https://www.bugcrowd.com/wp-content/uploads/2019/04/bugcrowd-logo.svg%22%3E
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: XSS-IMAGE-3-1024x311.png
مشاهده: 525
حجم: 55.6 کیلو بایت

    در حال حاضر ، شما ممکن است مشکل را ببینید. متنی که در قسمت نام وارد شده است ، به جای چاپ به عنوان متن عادی ، به عنوان HTML معتبر تفسیر می شود.

    اگر از خود می پرسید که چرا٪ نمادها و اعداد در URL وجود دارد ، این فقط کدگذاری URL است. به ما امکان می دهد بدون شکستن URL ، هر کاراکتر را در یک URL قرار دهیم. یک مثال متداول٪ 20 است که به یک شخصیت فضایی ترجمه می شود. بدیهی است که فضای موجود در URL ها ایده آل نخواهد بود زیرا این URL را به دو کلمه تقسیم می کند ، در عوض از "٪ 20" استفاده می کنیم. به راحتی می توانید رشته های رمزگذاری شده URL را با استفاده از ابزاری آنلاین مانند این مورد رمزگذاری یا رمزگشایی کنید.

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: XSS-IMAGE-4-1024x510.png
مشاهده: 526
حجم: 43.3 کیلو بایت



    توانایی تزریق جاوا اسکریپت در اینجا همان چیزی است که آن را به جای تزریق خسته کننده HTML قدیمی ، به یک آسیب پذیری XSS تبدیل می کند.

    انواع XSS
    XSS اشکال مختلفی دارد ، اما می توانیم همه آنها را به چند دسته تقسیم کنیم.

    REFLECTED XSS
    XSS منعکس شده هنگامی رخ می دهد که جاوا اسکریپت به یک درخواست تزریق می شود ، و مستقیماً در پاسخ منعکس و اجرا می شود.

    XSS پایدار / ذخیره شده | PERSISTENT/STORED XSS
    "مداوم" یا "ذخیره شده" XSS هنگامی رخ می دهد که JavaScript تزریق شده مانند یک پایگاه داده در جایی ذخیره شود. پس از تنظیم میزان بارگیری ، بارگیری در صفحه ای آسیب پذیر منعکس خواهد شد ، خواه درخواست حاوی محموله باشد یا نه.

    DOM XSS
    DOM XSS زمانی اتفاق می افتد که تزریق توسط JavaScript سمت مشتری منعکس شود. علت آن با سایر انواع XSS کمی متفاوت است ، اما میزان بهره برداری و شدت آن تقریباً یکسان است.

    SELF XSS
    Self-XSS شکلی غیر مضر از XSS است که در آن می توانید XSS را تزریق کنید اما فقط به صفحه ای که می توانید مشاهده کنید ، یعنی فقط JavaScript را می توانید در متن مرورگر خود اجرا کنید. این نوع XSS شاخص عملکرد بد توسعه است ، اما به خودی خود قابل استفاده نیست. در برخی موارد ، ما می توانیم self-XSS را با آسیب پذیری دیگری مانند CSRF به زنجیره درآوریم و آن را قابل بهره برداری کنیم ، اما این برای پست وبلاگ دیگری است.

    زمینه همه چیز است | Context is Everything
    هنگامی که شروع به بررسی تعداد متن های مختلفی می کنید که ورودی کاربر به آنها تزریق می شود ، مشخص می شود که تشخیص آسیب پذیری های XSS به صورت خودکار دشوار است. بیایید نگاهی بیندازیم به چند زمینه مختلف که ممکن است با آنها روبرو شوید.

    INSIDE NORMAL HTML TAGS

    کد:
    <p>{{injection}}</p>
    DOUBLE QUOTED HTML TAG ATTRIBUTES

    کد:
    <input type="text" value="{{injection}}">
    SINGLE QUOTED HTML TAG ATTRIBUTES

    کد:
    <input type="text" value='{{injection}}'>
    UNQUOTED HTML TAG ATTRIBUTES

    کد:
    <input type="text" value={{injection}}>
    HTML COMMENTS

    کد:
    <!-- {{injection}} -->
    HTML EVENT HANDLERS

    کد:
    <img src=x onerror="{{injection}}">
    URLS

    کد:
    <a href="{{injection}}">click me</a>
    لیست فوق جامع نیست ، زمینه های بسیاری وجود دارد که در تلاش برای کشف آسیب پذیری های XSS با آنها روبرو خواهید شد. مهمترین چیز این است که شما از زمینه ای که به آن تزریق می کنید آگاه باشید و ایده ای در مورد چگونگی فرار یا سو استفاده از آن زمینه برای دستیابی به XSS دارید.

    ادامه دارد ...
    -----------------------------SAFE MASTER---------------------------
    تاپیک هکر های تازه وارد

  • #2
    اسکریپت متقابل سایت چیست؟
    حملات Cross-Site Scripting (XSS) نوعی تزریق است که در آن اسکریپت های مخرب به وب سایت های غیر خیر و قابل اعتماد تزریق می شوند. حملات XSS زمانی اتفاق می افتد که مهاجم از یک برنامه وب برای ارسال کد مخرب ، معمولاً به شکل اسکریپت سمت مرورگر ، برای کاربر نهایی دیگر استفاده می کند. نقصی که باعث موفقیت این حملات می شود کاملاً گسترده است و می تواند در هر مکانی رخ دهد که یک برنامه وب از ورودی کاربر در خروجی تولید شده بدون تأیید یا رمزگذاری آن استفاده می کند.
    یک مهاجم می تواند با استفاده از XSS یک اسکریپت مخرب برای یک کاربر بی خبر ارسال کند. مرورگر کاربر نهایی راهی ندارد که بداند به این اسکریپت نباید اعتماد کرد و اسکریپت را اجرا می کند. از آنجا که فکر می کند این اسکریپت از یک منبع معتبر آمده است ، اسکریپت مخرب می تواند به هر کوکی ، نشانه جلسه یا سایر اطلاعات حساس که توسط مرورگر نگهداری می شود و در آن سایت استفاده می شود ، دسترسی پیدا کند. این اسکریپت ها حتی می توانند محتوای صفحه HTML را دوباره بنویسند.

    حملات XSS به سه مدل کلی تقسیم میشوند :

    کد:
    Reflected XSS
    Stored XSS
    DOM-Based XSS
    Reflected XSS
    حملات منعکس شده حملاتی هستند که اسکریپت تزریق شده در وب سرور منعکس می شود ، مانند پیام خطا ، نتیجه جستجو یا هر پاسخ دیگری که شامل بخشی یا کل ورودی ارسال شده به سرور به عنوان بخشی از درخواست باشد. حملات منعکس شده از طریق مسیر دیگری مانند پیام الکترونیکی یا وب سایت دیگری به قربانیان منتقل می شود. هنگامی که یک کاربر فریب داده می شود که بر روی یک لینک مخرب کلیک کند ، فرم خاصی را ارسال کند ، یا حتی فقط به یک سایت مخرب مراجعه می کند ، کد تزریق شده به وب سایت آسیب پذیر منتقل می شود ، که حمله به مرورگر کاربر را نشان می دهد. سپس مرورگر کد را اجرا می کند زیرا از یک سرور "معتمد" وارد شده است. XSS منعکس شده گاهی اوقات به عنوان XSS غیر ماندگار یا Type-II نیز شناخته می شود.
    حملات ذخیره شده مواردی است که اسکریپت تزریق شده به طور دائمی در سرورهای هدف ذخیره می شود ، مانند یک پایگاه داده ، تالار پیام ، گزارش بازدیدکنندگان ، قسمت نظرات ، و غیره از XSS ذخیره شده نیز گاهی اوقات به عنوان XSS ماندگار یا Type-I یاد می شود.


    XOM مبتنی بر DOM (که در برخی از متن ها به آن "type-0 XSS" نیز گفته می شود) یک حمله XSS است که در آن بار حملات در نتیجه تغییر "محیط" DOM در مرورگر قربانی که توسط اسکریپت اصلی سمت مشتری استفاده می شود ، اجرا می شود به طوری که کد سمت مشتری به روشی "غیرمنتظره" اجرا می شود. یعنی خود صفحه (پاسخ HTTP که تغییر نمی کند) اما کد سمت سرویس گیرنده موجود در صفحه به دلیل تغییرات مخربی که در محیط DOM رخ داده است ، متفاوت اجرا می شود.
    نوع دیگری از XSS به نام Self-XSS عموماً تأثیر کمتری دارد و بدون تعامل کاربر قابل بهره برداری نیست. این کار با فریب کاربران برای کپی و جایگذاری محتوای مخرب در کنسول توسعه دهنده وب مرورگرهای آنها انجام می شود.

    تأثیر XSS چیست؟
    مهاجمی که از یک آسیب پذیری برنامه نویسی بین سایت استفاده می کند به طور معمول قادر است:
    به عنوان کاربر قربانی جعل هویت یا شخصیت بدل شوید
    جلسه کاربر را ربودن کنید
    انجام فعالیت های غیر مجاز
    اطلاعات حساس را بدزدید
    حملات فیشینگ را انجام دهید
    اطلاعات کاربری کاربر را ضبط کنید.
    ضربات کلید را بگیرید
    وب سایت را زیر و رو کنید.
    قابلیت trojan را به وب سایت تزریق کنید.
    چگونه از XSS بهره برداری کنیم؟
    در حالی که از آسیب پذیری های XSS استفاده می کنید ، باید رفتار برنامه نسبت به محموله های خاص را درک کنید. موارد زیر را می توان قبل از استفاده از آسیب پذیری XSS ، یک چک لیست در نظر گرفت:
    نویسه های موجود در لیست سیاه / فیلتر شده را پیدا کنید. برای این کار می توانید از مکان یاب های XSS استفاده کنید:

    '';! - "<XSS>=&{()}

    مشاهده کنید چه برچسبی توسط WAF مسدود شده و کدام کلمه کلیدی مجاز است (iframe ، img ، body و غیره)
    رمزگذاری کاراکتر (رمزگذاری URL ، رمزگذاری URL دو برابر ، رمزگذاری Unicode UTF-8 ، رمزگذاری Unicode طولانی UTF-8 ، رمزگذاری Hex و غیره) را امتحان کنید.
    XSS را با استفاده از کپسوله سازی نقل قول HTML امتحان کنید
    فرار از رشته URL را امتحان کنید
    لیست payload را با توجه به کلمات کلیدی مجاز ایجاد کنید
    با استفاده از لیست بارگذاری XSS که به تازگی ایجاد کرده اید ، برنامه را بی رحمانه وادار کنید
    توجه: رمزگذاری دو URL می تواند امتحان شود زیرا اولین فرآیند رمزگشایی توسط پروتکل HTTP انجام می شود و URL رمزگذاری شده در نتیجه فیلتر XSS را دور می زند.

    فایل های پیوست شده
    -----------------------------SAFE MASTER---------------------------
    تاپیک هکر های تازه وارد

    نظر


    • #3
      دو روش اصلی جلوگیری از آسیب پذیری های Cross-site Scripting (XSS) فیلتر کردن XSS و فرار XSS است. با این وجود فیلتر کردن XSS توصیه نمی شود زیرا معمولاً با استفاده از ترفندهای هوشمندانه می توان از آن فرار کرد. در اینجا برخی از روشهایی که یک مهاجم می تواند در کد مخرب خود استفاده کند ، به راحتی فیلترهای XSS را در برنامه وب خود دور می زند.

      چرا فیلتر کردن XSS بسیار دشوار است؟
      فیلترهای XSS با یافتن الگوهای معمولی که ممکن است به عنوان بردارهای حمله XSS استفاده شوند و حذف چنین قطعاتی از داده های ورودی کاربر کار می کنند. الگوها اغلب با استفاده از عبارات منظم یافت می شوند. این به دو دلیل اساسی بسیار دشوار است:

      مرورگرهای مدرن مانند گوگل کروم ، فایرفاکس و اینترنت اکسپلورر در مورد کد HTML بد فرم (نادرست یا اشتباه) بسیار مقاوم هستند. علاوه بر این ، جاوا اسکریپت بسیار انعطاف پذیر است و عملکرد مشابه اغلب ممکن است به طرق مختلف بیان شود. یک مهاجم ممکن است با ایجاد کدی که از الگوهای معمول جستجوی XSS پرهیز می کند ، از این حقایق سو explo استفاده کند.
      الگوهایی که ممکن است محموله XSS را نشان دهند نیز ممکن است به عنوان محتوای صفحه وب (به عنوان مثال ، در این مقاله) به طور قانونی مورد استفاده قرار گیرند. بنابراین ، فیلتر باید بتواند از مثبت کاذب جلوگیری کند.
      از نظر تئوری ، می توان یک فیلتر XSS تقریباً بی خطر ایجاد کرد. با این حال ، پیچیدگی این فیلتر بسیار زیاد است و همیشه این احتمال وجود دارد که کسی با تکنیک جدید دور زدن روبرو شود. به همین دلیل فرار آسانترین روش توصیه شده برای جلوگیری از حملات XSS است.

      Cross-site Scripting Filter Bypass Cheat Sheet

      در زیر متداول ترین روشهایی است که مهاجمان برای فریب فیلترهای XSS استفاده می کنند. البته همه این روش ها ممکن است ترکیبی یا تصفیه شده باشند. مثالهای بیشتری را می توانید در منبع OWASP بر اساس XSS Cheat Sheet توسط RSnake بیابید.

      Using Character Encoding

      ساده ترین بردار XSS که برای شکست فیلترها استفاده می شود بر اساس نویسه های رمزگذاری است که ممکن است فیلتر را راه اندازی کند. شما ممکن است از تکنیک های مختلفی برای رمزگذاری استفاده کنید ، به عنوان مثال ، base64 ، HTML ، یا سایر موارد. کدگذاری به آنچه دقیقاً باید رمزگذاری شود بستگی دارد ، به عنوان مثال ، URL های برچسب href از رمزگذاری URL پشتیبانی می کنند اما نام برچسب ها اینگونه نیست. تمام روشهای دیگر که در زیر توضیح داده شده است اغلب با نوعی رمزگذاری استفاده می شوند.


      اگر فیلتر می داند که چگونه تلاش برای رمزگذاری را تشخیص دهد ، می توانید با استفاده از رمزگذاری اعشاری با بالشتک و پرش از نقطه ویرگول ، آن را فریب دهید. به عنوان مثال ، & # 0000097 & # 0000108 & # 0000101 & # 0000114 & # 0000116 معادل هشدار است.

      -----------------------------SAFE MASTER---------------------------
      تاپیک هکر های تازه وارد

      نظر

      صبر کنید ..
      X