مقدمه شبکه های مبتنی بر SQL یکی از رایج ترین مدل های مورد استفاده در طراحی و توسعه برنامه های وب است. این شبکه ها از زبان SQL برای ارتباط با دیتابیس استفاده می کنند و از این رو، علاوه بر امنیت کلاینت و سرور، باید از تزریق کد SQL جلوگیری شود. یکی از ابزارهایی که برای بررسی امنیت و تست شبکه های مبتنی بر SQL استفاده می شود، دستور SqlMap است.
SqlMap یک ابزار تست نفوذ است که به طور خاص برای تزریق کد در شبکه های مبتنی بر SQL طراحی شده است. با استفاده از SqlMap، می توانید رشته های تزریقی را در وب سایت یا برنامه مورد نظر تست کنید و آسیب پذیری ها را شناسایی کنید. اصولاً SqlMap با استفاده از تکنیک Union-based، Error-based و Blind-based نحوه تزریق کد را بررسی می کند.
در این مقاله از ایوسی، نحوه استفاده از دستور SqlMap در لینوکس کالی برای تست و تزریق کد در شبکه های مبتنی بر SQL بررسی می شود. ابتدا به بررسی مراحل نصب SqlMap در لینوکس کالی می پردازیم و سپس چگونگی استفاده از دستورهای این ابزار برای تست شبکه های مبتنی بر SQL را مورد بررسی قرار می دهیم. در انتها، نتایج تست بر روی یک نمونه وب سایت به همراه تشریح آنها بررسی می شود.
مرتبط: ۱۸ کد برتر برای تست امنیت در لینوکس کالی
نصب SqlMap در لینوکس کالی
- قبل از نصب SqlMap، به طور منظم لینوکس کالی را بروزرسانی کنید. برای این منظور، از دستور زیر استفاده کنید:
sudo apt-get update sudo apt-get upgrade
- حالا می توانید SqlMap را از ریپوزیتوری GitHub دانلود کنید. برای این منظور، دستور زیر را اجرا کنید:
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
در این دستور، –depth 1 به منظور دانلود فقط آخرین نسخه SqlMap و –dev برای تشخیص و پیدا کردن در مسیر جاری استفاده می شود.
- موقعیت کاری خود را از طریق خط فرمان به مسیر sqlmap-dev تغییر دهید:
cd sqlmap-dev
راه اندازی SqlMap و تزریق کد SQL حالا که SqlMap را در لینوکس کالی نصب کرده اید، می توانید آن را برای تست و تزریق کد SQL در شبکه های مبتنی بر SQL استفاده کنید. برای شروع، باید SqlMap را با استفاده از دستور زیر راه اندازی کنید:
python3 sqlmap.py
در صورتی که SqlMap با موفقیت راه اندازی شد، دست خط فرمان باید مشابه تصویر زیر به نظر برسد:
کد SQL را از طریق URL تزریق کنید یکی از راه های رایج برای تزریق کد SQL در شبکه های مبتنی بر SQL، استفاده از URL هاست. SqlMap به صورت خودکار آدرس ورودی را اسکن می کند و اگر پارامتر تزریق کد SQL را پیدا کند، به صورت خودکار شروع به تست می کند و نتایج را نمایش می دهد.
برای تزریق کد SQL از طریق URL، دستور زیر را استفاده کنید:
python3 sqlmap.py -u "http://example.com/page.php?id=1"
در این دستور، آدرس ورودی را به جای example.com و پارامتر تزریقی را به جای id=1 قرار دهید.
تزریق کد SQL را از طریق POST تزریق کنید در برخی از موارد، اطلاعات ورودی برنامه از طریق POST ارسال می شوند. SqlMap همچنین از ارسال POST برای تزریق کد SQL پشتیبانی می کند.
برای تزریق کد SQL از طریق POST، دستور زیر را استفاده کنید:
python3 sqlmap.py -u "http://example.com/page.php" --data="id=1¶m1=value1¶m2=value2"
در این دستور، آدرس ورودی را به جای example.com و پارامترهای POST را به جای id=1¶m1=value1¶m2=value2 قرار دهید.
مرتبط: رمزگشایی سرحد ها: کشف و مقابله با حملات تزریق SQL
سوالات متداول
آیا sqlmap یک ابزار پایتون است؟
بله، sqlmap یک ابزار تست نفوذ برای حملات SQL است که بر روی پایتون توسعه داده شده است. این ابزار به طور خاص برای تست و کشف آسیب پذیریهای امنیتی در برنامههای وب که ممکن است مستقیماً با پایگاه داده تعامل داشته باشند، به کار میرود.
چگونه هکرها از تزریق SQL استفاده می کنند؟
تزریق SQL یک روش خطرناک است که توسط هکرها برای دسترسی غیرمجاز به پایگاه داده ها استفاده می شود. در این روش، هکرها با وارد کردن کد SQL تقلبی یا مخرب به بخش های ورودی و یا پارامترهای یک فرم وب، تلاش می کنند تا کد مخرب خود را به پایگاه داده فرستاده و دسترسی نامحدود به اطلاعات حساس در پایگاه داده بدست آورند.
مراحل استفاده از تزریق SQL عبارتند از:
- شناسایی نقاط آسیب پذیر در پرونده ها و پارامترهای فرم های وب: هکرها از ابزارها و تکنیک های مختلف برای شناسایی نقاط ضعف در فرم ها و صفحات وب استفاده می کنند که امکان تزریق SQL را فراهم می کنند.
- تزریق کد SQL: پس از شناسایی نقاط آسیب پذیر، هکرها کد SQL خود را از طریق ورودی هایی مانند فیلدهای فرم، آدرس URL یا پارامترهای درخواست HTTP به برنامه ارسال می کنند. این کد های SQL تقلبی یا مخرب می توانند شامل دستورات SELECT، INSERT، UPDATE و DELETE باشند که به هکرها امکان می دهد اطلاعات را به دلخواه به پایگاه داده ارسال کنند و یا تغییراتی روی داده ها ایجاد کنند.
- اجرای کد SQL تزریق شده: پس از ارسال کد SQL تزریق شده، برنامه سنتیزه می کند و کد را به عنوان دستوری جهت اجرا فرستاده و نتیجه را به هکرها برمی گرداند. این نتیجه ممکن است شامل اطلاعات حساس مانند نام کاربری و رمز عبور، اطلاعات مالی، اطلاعات شخصی و غیره باشد.
برای جلوگیری از تزریق SQL، توصیه می شود که برنامه نویسان وب جلوی نقاط ضعف مربوط به امنیت را بگیرند و با استفاده از فیلترها و پارامترهای پیش تعیین شده برای ورودی ها و خروجی ها، از تزریق SQL جلوگیری کنند. همچنین، برنامه ها باید به طور منظم برای تشخیص و جلوگیری از حملات تزریق SQL مورد بازبینی و تست قرار گیرند.
چه چیزی بهتر از Sqlmap است؟
اگرچه نمیتوان پاسخ واضحی به این سوال داد، اما چند ابزار برتر برای بررسی نفوذ پایگاه داده جایگزین Sqlmap هستند. به عنوان مثال:
- Havij: یک ابزار خودکار کرکر پایگاه داده SQL است که به شما امکان برسی نفوذ به سیستم میدهد و نقاط آسیبپذیری را شناسایی میکند.
- MySQL Injection Tools: ابزارهای متنوعی برای آزمایش و شناسایی آسیبپذیریهای SQL در پایگاه داده MySQL وجود دارد، این ابزارها شامل: SQLMap، SQLninja ،SQL Inject Me و …
- NoSQLMap: ابزاری که به طور خاص برای پیدا کردن و آزمایش آسیبپذیریهای نفوذ به پایگاه دادههای NoSQL طراحی شده است.
- DSSS (Damn Small SQLi Scanner): ابزاری فشرده و قدرتمند برای تست آسیبپذیری SQL در وبسایتها با استفاده از تزریقهای راههای ارتباطی کاربر.
- SQLiX: ابزاری که به کاربر امکان میدهد تزریق SQL را در وبسایتها بررسی کند و نفوذ را تست کند.
همچنین، با توجه به نوع پایگاه داده مورد استفاده، ابزارها و تکنیکهای دیگری نیز وجود دارند. همچنین ممکن است تفاوتهایی در عملکرد و نتایج حاصل شده با استفاده از هر ابزار وجود داشته باشد.
تفاوت بین Nmap و Sqlmap چیست؟
Nmap و Sqlmap دو ابزار متفاوت هستند که در زمینههای مختلف مورد استفاده قرار میگیرند.
- Nmap:
- Nmap یک ابزار اسکن شبکه است که برای بررسی و تست امنیت شبکهها و سرورها استفاده میشود.
- با استفاده از Nmap میتوانید پورتها و سرویسهای فعال در یک سیستم را شناسایی کنید.
- نقاط ضعف امنیتی در شبکه را تشخیص میدهد و امکانات بیشتری مانند تشخیص نوع سیستم عامل و نسخه سرویسها را فراهم میکند.
- Nmap بر روی آنلاین و آفلاین سیستمها قابل استفاده است.
- Sqlmap:
- Sqlmap یک ابزار تست نفوذ برای بررسی و آزمایش امنیت بانکهای اطلاعاتی است.
- Sqlmap بر روی بانکهای اطلاعاتی استاندارد (مانند MySQL، Oracle، PostgreSQL) وبسایتها اعمال میشود.
- با استفاده از Sqlmap میتوانید نقاط ضعف امنیتی در بانکهای اطلاعاتی کشف کنید و حملاتی مانند حمله SQL Injection انجام دهید.
- Sqlmap به طور خاص برای تست امنیت برنامههای وب مورد استفاده قرار میگیرد.
بنابراین، تفاوت اصلی بین Nmap و Sqlmap در نوع استفاده آنها و هدف اصلی استفاده قبلی بررسی امنیت شبکه و سرورها با استفاده از اسکن پورت، در حالی که در دومی بررسی امنیت بانکهای اطلاعاتی با استفاده از حملات SQL Injection است.
آپدیت sqlmap در کالی لینوکس چگونه است؟
برای بهروز رسانی sqlmap در Kali Linux، میتوانید مراحل زیر را دنبال کنید:
- ابتدا دستور ترمینال را باز کنید.
- با استفاده از دستور زیر، sqlmap را بهروز کنید:
sudo sqlmap --update
این دستور آخرین نسخه sqlmap را از ریپازیتوری رسمی دریافت و نصب میکند.
- اگر sqlmap نصب نیست، با استفاده از دستور زیر آن را نصب کنید:
sudo apt-get install sqlmap
این دستور sqlmap را از مخازن APT دریافت و نصب میکند.
- پس از نصب بروزرسانی به خوبی انجام میشود و sqlmap بهروز خواهد بود.
توجه داشته باشید که برای اجرای دستورات sudo به کلمه عبور root خود نیاز دارید. همچنین، اجرای دستورات بالا به نسخه و کانفیگوراسیون محلی خود بستگی دارد، بنابراین باید دستورات را با دقت اجرا کنید و صبر کنید تا فرآیند بهروزرسانی به اتمام برسد.
مرتبط: امنیت بینقص: رمزنگاری فوقالعاده برای پایگاه داده وردپرس
نتیجه
دستور SqlMap در لینوکس کالی به عنوان یک ابزار تست نفوذ قدرتمند در تزریق کد SQL در شبکه های مبتنی بر SQL استفاده می شود. ا ابزار قابلیت های متنوعی برای تزریق کد SQL به صورت Union-based، Error-based و Blind-based دارد و به صورت خودکار لینک های ورودی را اسکن می کند. با استفاده از SqlMap، می توانید آسیب پذیری ها را شناسایی کرده و از طریق تست شبکه های مبتنی بر SQL امنیت سامانه خود را بهبود دهید.