SQL Injection یکی از قدیمیترین و در عین حال هنوز یکی از خطرناکترین آسیبپذیریهای وب است — دستهی سوم در فهرست OWASP Top 10 که در مقالهی قبلی این بخش بررسی شد. sqlmap ابزاری متنباز و رایگان است که فرآیند شناسایی و سوءاستفاده از این آسیبپذیری را تقریباً بهطور کامل خودکار میکند — کاری که بهصورت دستی ممکن است ساعتها زمان ببرد، sqlmap در چند دقیقه انجام میدهد.
توجه بسیار مهم: sqlmap ابزاری قدرتمند است که میتواند بهطور مستقیم محتوای دیتابیس یک برنامهی واقعی را استخراج کند. اجرای آن روی هر هدفی بدون مجوز صریح و کتبی، جرم است و میتواند عواقب قانونی جدی داشته باشد. این آموزش فقط باید روی یک محیط آزمایشگاهی محلی مثل DVWA (Damn Vulnerable Web Application)، که دقیقاً برای همین منظور طراحی شده، اجرا شود.
قدم اول: نصب
روی کالی لینوکس از قبل نصب است. روی سایر توزیعها:
sudo apt install sqlmap
قدم دوم: آمادهسازی هدف آزمایشگاهی
اگر DVWA را روی ماشین مجازی خودتان نصب کردهاید (سطح امنیتی آن را روی Low تنظیم کنید تا تمرین سادهتر باشد)، به بخش SQL Injection آن بروید و یک درخواست نمونه را — مثلاً با پارامتر id — از طریق Burp Suite رهگیری کنید تا آدرس دقیق و پارامترهای درخواست را داشته باشید.
قدم سوم: اجرای پایه روی یک پارامتر مشخص
فرض کنید آدرس آسیبپذیر به این شکل است:
sqlmap -u "http://192.168.1.20/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=xxxx; security=low"
sqlmap بهطور خودکار پارامتر id را با دهها الگوی مختلف آزمایش میکند تا مشخص کند آیا واقعاً آسیبپذیر است یا نه، و اگر بله، دقیقاً چه نوع تزریقی (Boolean-based، Time-based، Union-based و غیره) جواب میدهد.
قدم چهارم: شناسایی پایگاه داده
بعد از تأیید آسیبپذیری، میتوانید نوع و نسخهی سیستم مدیریت پایگاه داده را استخراج کنید:
sqlmap -u "..." --cookie="..." --banner
قدم پنجم: فهرست دیتابیسها
sqlmap -u "..." --cookie="..." --dbs
این دستور نام تمام دیتابیسهای موجود روی سرور را نشان میدهد.
قدم ششم: فهرست جدولهای یک دیتابیس مشخص
sqlmap -u "..." --cookie="..." -D dvwa --tables
و برای دیدن ستونهای یک جدول خاص و در نهایت استخراج داده:
sqlmap -u "..." --cookie="..." -D dvwa -T users --columns
چرا این سطح از خودکارسازی مهم است؟
در یک تست نفوذ واقعی، وقت محدود است. sqlmap به شما اجازه میدهد بهجای صرف ساعتها برای آزمایش دستی دهها الگوی تزریق مختلف، در چند دقیقه تأیید کنید که آیا یک پارامتر واقعاً آسیبپذیر است — و در گزارش نهایی، دقیقاً نشان دهید که این آسیبپذیری چطور میتواند منجر به افشای کامل دیتابیس شود. دقیقاً همین شواهد ملموس است که یک گزارش تست نفوذ را از یک ادعای نظری، به یک مستند قابلاقدام برای تیم توسعه تبدیل میکند.
وبلاگ