
امنیت سامانههای دولتی، بهویژه نهادهای مرتبط با زیرساختهای حساس، از اهمیت بالایی برخوردار است. یکی از آسیبپذیریهایی که با وجود شناختهشده بودن همچنان در سامانههای مختلف مشاهده میشود، SQL Injection است. در این مقاله، فرآیند شناسایی یک آسیبپذیری از نوع Boolean-Based Blind SQL Injection در وبسایت یک نهاد دولتی حساس بررسی میشود. این مطالعه موردی مربوط به چند ماه گذشته بوده و تمامی اطلاعات شناساییکننده بهطور کامل سانسور شدهاند.
لازم به ذکر است که سامانهی مورد بررسی مربوط به ایران نبوده و هدف این مقاله صرفاً ارائهی یک تحلیل آموزشی و افزایش آگاهی امنیتی است.
با توسعهی خدمات دولت الکترونیک، وبسایتهای دولتی به اهداف جذابی برای حملات سایبری تبدیل شدهاند. وجود ضعفهای امنیتی در این سامانهها میتواند منجر به افشای اطلاعات حساس و کاهش اعتماد عمومی شود. SQL Injection بهعنوان یکی از حملات کلاسیک لایهی کاربرد، همچنان در فهرست تهدیدات مهم امنیتی قرار دارد و بیانگر ضعف در پیادهسازی اصول توسعهی امن است.
SQL Injection زمانی رخ میدهد که ورودیهای کاربر بدون اعتبارسنجی مناسب در کوئریهای پایگاه داده مورد استفاده قرار گیرند. این مسئله میتواند باعث تغییر منطق اجرای کوئری شود.
از جمله انواع رایج SQL Injection میتوان به موارد زیر اشاره کرد:
Error-Based SQL Injection
Union-Based SQL Injection
Blind SQL Injection (Boolean-Based و Time-Based)
در این مطالعه، نوع شناساییشده از دستهی Blind SQL Injection بوده است که تشخیص آن معمولاً از طریق تحلیل پاسخهای منطقی سامانه انجام میشود.
مطالعهی حاضر مربوط به بررسی یک پرتال وب متعلق به یک نهاد دولتی حساس در کشوری غیر از ایران است. بهمنظور رعایت اصول اخلاقی و افشای مسئولانه، نام کشور، سازمان، دامنه و جزئیات فنی شناساییکننده حذف شدهاند.
مشخصات کلی سامانه:
نوع سامانه: پرتال وب دولتی
فناوری سمت سرور: PHP
سیستم مدیریت پایگاه داده: Oracle
زمان شناسایی آسیبپذیری: چند ماه پیش
سامانه دارای بخشهایی برای دریافت ورودی از کاربر از طریق پارامترهای HTTP بوده است که به پایگاه داده متصل میشدند.
فرآیند شناسایی بهصورت غیرمخرب و صرفاً در سطح تشخیص آسیبپذیری انجام شد. در مرحلهی اولیه، رفتار سامانه در برابر ورودیهای مختلف بررسی و تفاوتهایی در پاسخهای منطقی سرور مشاهده شد که احتمال وجود تزریق SQL را مطرح میکرد.
برای تأیید وجود آسیبپذیری، از ابزار متنباز sqlmap بهعنوان یک ابزار خودکار تست نفوذ استفاده شد. استفاده از این ابزار محدود به شناسایی نوع آسیبپذیری، تشخیص DBMS و ارزیابی سطح ریسک بوده و هیچگونه بهرهبرداری عملیاتی یا استخراج داده انجام نشده است.
نتایج نشان داد که یکی از پارامترهای ورودی از نوع GET در برابر Boolean-Based Blind SQL Injection آسیبپذیر است و منطق شرطی کوئریهای پایگاه داده تحت تأثیر ورودی کاربر قرار میگیرد.

عکس ۲. خروجی ابزار sqlmap بهصورت سانسور شده؛ کلیه اطلاعات شناساییکننده، آدرس سامانه، پارامترها و جزئیات قابل سوءاستفاده حذف شدهاند. این تصویر صرفاً جهت مستندسازی آموزشی ارائه شده است.
در صورت سوءاستفاده از این آسیبپذیری، پیامدهای زیر قابل تصور بود:
دسترسی غیرمجاز به دادههای پایگاه داده
افشای اطلاعات حساس
امکان تغییر یا حذف دادهها
کاهش سطح امنیت اطلاعات و اعتماد عمومی
با توجه به حساسیت نهاد مورد بررسی، این آسیبپذیری میتوانست تبعات جدی امنیتی به همراه داشته باشد.
پس از شناسایی آسیبپذیری، موضوع از طریق کانالهای مناسب و مطابق با اصول Responsible Disclosure گزارش شد. در این فرآیند، از انتشار عمومی جزئیات فنی که امکان سوءاستفاده را فراهم میکردند، خودداری گردید.
برای پیشگیری از بروز آسیبپذیریهای مشابه، راهکارهای زیر توصیه میشود:
استفاده از Prepared Statements و Parameterized Queries
بهرهگیری از ORMهای امن
اعتبارسنجی و پاکسازی ورودیهای کاربر
پیادهسازی Web Application Firewall (WAF)
انجام تستهای امنیتی دورهای
بازبینی و اصلاح کدهای قدیمی
این مطالعه موردی نشان میدهد که SQL Injection همچنان تهدیدی جدی حتی برای سامانههای دولتی حساس محسوب میشود. شناسایی بهموقع این آسیبپذیریها و گزارش مسئولانهی آنها نقش مهمی در افزایش سطح امنیت سایبری دارد. انتشار مطالعات آموزشی سانسورشده میتواند به ارتقای آگاهی توسعهدهندگان و متخصصان امنیت کمک کند و از تکرار چنین ضعفهایی در آینده جلوگیری نماید.