این ابزار به منظور کمک به توسعهدهندگان و متخصصان امنیت برای شناسایی آسیبپذیریهای SQL Injection در برنامههای وب طراحی شده است. این ابزار با ارسال مجموعهای از Payloadهای مخرب به پارامترهای ورودی URL و فرمها، پاسخ سرور را تحلیل کرده و احتمال وجود آسیبپذیری را گزارش میدهد.
توجه: استفاده از این ابزار برای تست وبسایتهایی که مجوز تست آنها را ندارید، غیرقانونی و غیراخلاقی است. مسئولیت هرگونه استفاده نادرست از این ابزار بر عهده کاربر میباشد.
قبل از استفاده از ابزار، باید پیشنیازهای زیر را نصب کنید:
-
پایتون 3.6 یا بالاتر: این ابزار با پایتون نوشته شده است. میتوانید پایتون را از وبسایت رسمی پایتون دانلود و نصب کنید.
-
کتابخانه
requests: این کتابخانه برای ارسال درخواستهای HTTP استفاده میشود. برای نصب آن، ازpipاستفاده کنید:pip install requests
-
دانلود پروژه: ابتدا فایلهای پروژه را از گیتهاب دانلود یا کلون کنید.
git clone https://github.com/shayanTaki/sqlhunter.git cd sqlhunter
برای استفاده از ابزار، اسکریپت پایتون را اجرا کرده و پارامترهای مورد نیاز را ارائه دهید.
ساختار کلی:
from sqli_tester import SQLInjectionTester
# ایجاد نمونه از کلاس SQLInjectionTester
tester = SQLInjectionTester(
url="[آدرس وبسایت هدف]",
method="[GET یا POST]",
headers={"User-Agent": "SQLInjectionTester/1.0"}, # هدرهای سفارشی (اختیاری)
cookies={"sessionid": "abc123"}, # کوکیها (اختیاری)
delay=0, # تاخیر بین درخواستها (به ثانیه، اختیاری)
timeout=10 # زمان انتظار برای پاسخ (به ثانیه، اختیاری)
data={"param1": "value1", "param2": "value2"} # دادههای POST (در صورت استفاده از متد POST)
)
# تعریف پارامترهای ورودی برای تست
parameters = {"[نام پارامتر 1]": "[مقدار اولیه]", "[نام پارامتر 2]": "[مقدار اولیه]"}
# اجرای تست
tester.run(parameters)
پارامترهای SQLInjectionTester
url: آدرس وبسایت هدف.
method: نوع درخواست HTTP ("GET" یا "POST").
headers: یک دیکشنری از هدرهای HTTP سفارشی (اختیاری).
cookies: یک دیکشنری از کوکیهای مورد نیاز (اختیاری).
delay: مدت زمان تاخیر بین ارسال هر درخواست (به ثانیه). این برای جلوگیری از بلاک شدن توسط سرور مفید است (اختیاری، پیشفرض 0).
timeout: حداکثر زمان انتظار برای دریافت پاسخ از سرور (به ثانیه) (اختیاری، پیشفرض 10).
data: یک دیکشنری از دادههای فرم برای ارسال در صورت استفاده از متد POST (اختیاری).
پارامترهای tester.run():
parameters: یک دیکشنری که در آن کلیدها نام پارامترهای ورودی و مقادیر، مقادیر اولیه آنها هستند.
مثال استفاده برای متد GET:
from sqli_tester import SQLInjectionTester
tester = SQLInjectionTester(
url="http://example.com/search",
method="GET"
)
tester.run(parameters={"q": "test"})
مثال استفاده برای متد POST:
from sqli_tester import SQLInjectionTester
tester = SQLInjectionTester(
url="http://example.com/login",
method="POST",
data={"username": "admin", "password": "password"}
)
tester.run(parameters={"username": "admin", "password": "password"})
شروع تست SQL Injection برای: http://example.com/search
[تست] پارامتر: q با payload: '
[خطا] مشکل در ارتباط: HTTPError('404 Not Found', ...) # ممکن است خطا به دلیل Payload نامناسب باشد
[تست] پارامتر: q با payload: "
[خطا] مشکل در ارتباط: HTTPError('404 Not Found', ...)
[تست] پارامتر: q با payload: --
[تست] پارامتر: q با payload: #
[تست] پارامتر: q با payload: /*
[تست] پارامتر: q با payload: 1' OR '1'='1
[!] آسیبپذیری پیدا شد: q با payload: 1' OR '1'='1
تست به پایان رسید.
شروع تست SQL Injection برای: [آدرس] : نشاندهنده شروع فرآیند تست برای آدرس مشخص شده است.
[تست] پارامتر: [نام پارامتر] با payload: [Payload] : نشان میدهد که کدام پارامتر و با چه Payloadی در حال تست شدن است.
[خطا] مشکل در ارتباط: ... : نشاندهنده وجود مشکل در برقراری ارتباط با سرور است (ممکن است به دلیل Payload نامناسب یا مشکلات شبکه باشد).
[!] آسیبپذیری پیدا شد: [نام پارامتر] با payload: [Payload] : نشان میدهد که یک آسیبپذیری SQL Injection در پارامتر مشخص شده با استفاده از Payload خاصی شناسایی شده است.
تست به پایان رسید. : نشاندهنده اتمام فرآیند تست است.
موارد استفاده صحیح و قانونی
این ابزار باید فقط در موارد زیر استفاده شود:
تست امنیتی برنامههای وب خود: برای شناسایی و رفع آسیبپذیریهای SQL Injection در برنامههای وب که مالک آن هستید یا مجوز تست آنها را دارید.
اهداف آموزشی و پژوهشی: برای درک بهتر مکانیزمهای SQL Injection و توسعه مهارتهای امنیتی.
با مجوز صریح: فقط با کسب مجوز کتبی از صاحبان وبسایت یا سیستم مورد نظر برای انجام تست نفوذ.
سلب مسئولیت
استفاده از این ابزار برای اهداف غیرقانونی و بدون مجوز میتواند منجر به پیگرد قانونی شود. توسعهدهندگان این ابزار هیچ مسئولیتی در قبال استفاده نادرست یا غیرقانونی از آن ندارند. مسئولیت کامل نحوه استفاده از این ابزار و تبعات آن بر عهده کاربر است.
مشارکت
مشارکت در توسعه این ابزار با ارائه گزارش اشکالات، پیشنهادات و Pull Requestها خوشحال کننده خواهد بود.
مجوز
این پروژه تحت مجوز MIT License منتشر شده است.
سازنده
توسط Shayan Taki ساخته شده است.
وبسایت
ShirdalCode.ir
تماس
برای ارتباط با توسعهدهندگان یا گزارش مشکلات میتوانید از طریق پروفایل گیتهاب Shayan Taki یا وبسایت ShirdalCode.ir اقدام کنید.