آشنایی با متدولوژی Burp Suite – بخش نوزدهم

در این بخش از مجموعه آشنایی با متدولوژی Burp Suite به بخش نوزدهم از این متدولوژی به استفاده از ابزار Burp Suite به منظور اکسپلویت آسیب پذیری SQL Injection به روش Union می پردازیم.

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

عملگر UNION در SQL برای ترکیب نتایج دو یا چند عبارت SELECT استفاده می شود. هنگامی که یک برنامه وب حاوی یک آسیب‌پذیری تزریق SQL است که در یک عبارت SELECT رخ می‌دهد، اغلب می‌توانید از اپراتور UNION برای انجام یک کوئری اضافی و بازیابی نتایج استفاده کنید.

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

در تب Burp Proxy، اطمینان حاصل کنید که در بخش Proxy و تب Intercept، عبارت Intercept is off نمایش داده شده باشد.

در ادامه به صفحه ای بروید که آسیب پذیری SQL Injection را در آن شناسایی نمودید.

به “Burp” برگردید.

در بخش Proxy و تب Intercept، اطمینان حاصل نمایید که Intercept is on تنظیم شده باشد.

در ادامه درخواستی را به سمت سرور ارسال نمایید. در این جا کافی است تا صفحه را Refresh نمایید.

درخواست ارسال شده، توسط ابزار Burp Suite به شما نمایش داده خواهد شد. پارامتری که ما قصد اکسپلویت آن را داریم، پارامتر id بوده که در URL قرار دارد.

اولین کار این است که تعداد ستون‌های بازگردانده شده توسط کوئری اصلی برنامه را کشف نماییم. زیرا هر کوئری در دو طرف عبارت UNION باید دارای تعداد ستون های یکسان داشته باشد.

برای بررسی و ارسال درخواست های بیشتر، بر روی درخواست راست کلیک نموده و آن را به Repeater منتقل می نماییم.

در این مثال ما از عبارت NULL استفاده می کنیم تا تعداد ستون های مورد استفاده در کوئری اصلی را شناسایی کنیم.

به عنوان مثال:

توجه: در این مثال برای پایان دادن به رشته های موجود به یک نقل قول نیاز نداریم. علاوه بر این، کاراکتر فاصله باید به صورت %20 کدگذاری شود.

برنامه یک پیغام خطایی را نمایش می دهد که در تب Response قابل مشاهده است. پیام خطا می گوید که عبارات SELECT استفاده شده دارای تعداد ستون های متفاوتی هستند.

تا زمانی که تغییری در پاسخ برنامه مشاهده کنیم، می‌توانیم به اضافه کردن NULL به درخواست خود ادامه دهیم.

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

استفاده از ابزار Burp Suite به منظور Bypass Authentication

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

پس از شناسایی تعداد ستون ها، وظیفه بعدی کشف ستونی است که دارای یک نوع داده رشته ای است تا بتوانیم از آن برای استخراج داده های دلخواه از پایگاه داده استفاده کنیم.

ما می توانیم این کار را با تزریق یک کوئری حاوی تعداد مورد نیاز NULL، همانطور که قبلا انجام دادیم و سپس جایگزین کردن هر NULL با “a” انجام دهیم.

به عنوان مثال:

هنگامی که یک ‘a’ در ستونی مشخص می شود که دارای یک نوع داده رشته ای است، کوئری تزریق شده اجرا می شود و شما باید یک ردیف دیگر از داده ها حاوی مقدار a را ببینید.

با این حال در مثال ما صفحه، چیزی غیر از محتوای اصلی را نشان نمی دهد.

می‌توانیم ببینیم که کوئری در حال اجرا است، اما چون برنامه فقط اولین نتیجه را نشان می‌دهد، نمی‌توانیم نتیجه کوئری تزریق شده را ببینیم.

با اصلاح پرس و جو اصلی به گونه ای که هیچ ردیفی برنگرداند، می توانیم اطمینان حاصل کنیم که داده های ما اولین ردیف بازگشتی است:

اکنون می‌توانیم در پاسخ ببینیم که برنامه به جای جزئیات واقعی کاربر، رشته a تزریق شده را نمایش می‌دهد.

اکنون می توانیم از ستون مربوطه برای استخراج داده ها از پایگاه داده استفاده کنیم.

در این مثال ما کد تزریق شده را برای نمایش شماره نسخه پایگاه داده تغییر داده ایم. در ادامه می‌توانیم با استفاده از این تکنیک، هر گونه داده در دسترس از پایگاه داده را بازیابی نماییم.

درباره نویسنده: احسان نیک آور

ممکن است دوست داشته باشید