SQL Injection را با SQLmap شروع نکنید
یکی از رایج ترین اشتباهها در تست نفوذ وب این است که پنتستر به یک پارامتر میرسد و بلافاصله ابزار را اجرا می کند؛ منتظر میماند تا SQLmap اعلام کند «Vulnerable».
پیش از آنکه حتی یک ابزار را اجرا کنید، باید دقیقاً بدانید به دنبال چه چیزی هستید.
فرض کنید به این درخواست رسیدهاید:
GET /products?id=42
اول دست نزنید.
رفتار عادی برنامه را مشاهده کنید:
کد پاسخ چیست؟
طول پاسخ چقدر است؟
چه محتوایی برمی گردد؟
خطایی دیده می شود؟
آیا پاسخ تغییر می کند؟
تفاوتی در زمان پاسخ دهی وجود دارد؟
سپس ورودی را تغییر دهید و رفتار برنامه را با حالت عادی مقایسه کنید.
اگر با تغییر مقدار id، پاسخ به شکل قابل توجهی دگرگون شود، این دیگر یک تغییر ساده نیست؛ یک سیگنال است.
در این نقطه باید فرضیه بسازید:
«ممکن است این پارامتر در یک کوئری پایگاهداده استفاده شود.»
حالا تست واقعی آغاز میشود.
و اینجا یک نکتهٔ حیاتی وجود دارد:
اSQL Injection لزوماً قرار نیست خطای زیبا و واضحی روی صفحه نشان دهد.
در Blind SQL Injection ممکن است:
هیچ خطای پایگاهدادهای نبینید.
هیچ دادهای مستقیماً برنگردد.
و حتی پاسخ ظاهراً کاملاً عادی به نظر برسد.
اما اگر برنامه بین شرایط مختلف رفتار متفاوتی از خود نشان دهد، همین تفاوت می تواند سیگنال مهمی باشد.
پس وقتی خروجی واضحی ندارید، سؤال درست این نیست که:
«چه پیلود دیگری بزنم؟»
سؤال درست این است:
«چه چیزی را میتوانم اندازهگیری و مقایسه کنم؟»
پاسخ؟
رفتار بولین؟
طول پاسخ؟
زمان پاسخدهی؟
محتوا؟
اینجاست که مرز میان یک جمع کنندهٔ پیلود و یک پنتستر وب واقعی مشخص میشود.
اSQLmap ابزار فوقالعادهای است.
اما قرار نیست بهجای شما برنامه را بفهمد.
شما باید فرضیه بسازید؛ ابزار فقط باید فرآیند تحقیق را سریعتر کند.
اگر از ابتدا ابزار تصمیم بگیرد که به دنبال چه چیزی بگردد، ممکن است آسیبپذیری را پیدا کنید بدون آنکه واقعاً بفهمید چرا وجود دارد.
و این برای یک پنتستر حرفهای کافی نیست.
@TryHackBox
#تست_نفوذ #امنیت_سایبری