در باگبانتی، آسیبپذیریهای فنی به آن دسته از ضعفها گفته میشود که از خطاهای پیادهسازی، اعتبارسنجی ناکافی، پیکربندی اشتباه، یا ضعف در منطق امنیتی کد و زیرساخت ایجاد میشوند. این نوع باگها معمولاً با ابزارهای تست، بررسی دقیق درخواستها، تحلیل پاسخ سرور و مقایسهی رفتار سیستم در سناریوهای مختلف شناسایی میشوند. برخلاف ضعفهای صرفاً مفهومی یا تجاری، آسیبپذیریهای فنی ریشه در لایههای اجرایی نرمافزار دارند و اغلب در APIها، فرمها، ماژولهای احراز هویت، و سرویسهای جانبی دیده میشوند.
تزریق SQL زمانی رخ میدهد که ورودی کاربر بهصورت ناامن وارد کوئری پایگاهداده شود. در این حالت، مهاجم میتواند ساختار پرسوجو را تغییر دهد و دادههای حساس را مشاهده یا دستکاری کند. این آسیبپذیری معمولاً در فیلدهای جستوجو، فیلترها، پارامترهای عددی و درخواستهای API ظاهر میشود. استفاده نکردن از query parameterization و validation مناسب، علت اصلی آن است. SQLi از معروفترین و خطرناکترین ضعفهای فنی در وب به شمار میرود.
XSS زمانی ایجاد میشود که دادهی ورودی بدون پاکسازی مناسب در خروجی صفحه قرار گیرد و اسکریپت سمت کاربر اجرا شود. این ضعف میتواند به سرقت session، تغییر ظاهر صفحه، یا اجرای اقدامات ناخواسته در مرورگر قربانی منجر شود. XSS در فرمهای دیدگاه، پروفایل کاربران، پیامها و بخشهای نمایش دادهی پویا بسیار رایج است. این آسیبپذیری معمولاً به سه نوع ذخیرهشده، بازتابی و مبتنی بر DOM تقسیم میشود. رفع آن نیازمند encode درست خروجی و سیاستهای امنیتی مناسب است.
CSRF زمانی رخ میدهد که سایت، درخواست ارسالی از مرورگر کاربر را بدون اطمینان از قصد واقعی او میپذیرد. در این حالت، کاربرِ لاگینشده ممکن است ناخواسته عملیاتی مانند تغییر رمز، انتقال وجه یا تغییر ایمیل را انجام دهد. این ضعف زمانی خطرناکتر میشود که عملیات حساس بدون توکن ضدCSRF انجام شوند. فرمهای مدیریتی، تنظیمات حساب و بخشهای مالی معمولاً هدف این نوع مشکل هستند. استفاده از توکنهای یکبار مصرف و بررسی SameSite از راهکارهای اصلی است.
ضعفهای احراز هویت شامل پیادهسازی ضعیف ورود، مدیریت نادرست رمز عبور، نبود محدودیت تلاش، یا شکست در تولید و نگهداری session است. این دسته از باگها میتواند باعث account takeover شود. نمونههای رایج شامل reset password ناامن، OTP قابل حدس، session fixation و logout ناقص هستند. این ضعفها اغلب در APIهای ورود، ثبتنام، بازیابی رمز و پنلهای کاربری دیده میشوند. امنیت این لایه وابسته به طراحی دقیق و کنترلهای چندمرحلهای است.
وقتی سیستم بررسی نکند که کاربر مجاز به دیدن یا تغییر یک منبع هست یا نه، مشکل authorization رخ میدهد. IDOR یکی از رایجترین نمونههاست که در آن با تغییر شناسهها، دسترسی به دادههای دیگران ممکن میشود. این ضعف در endpointهایی که با id، uid، order_id، file_id یا مشابه آن کار میکنند، بسیار دیده میشود. نبود کنترل دسترسی در سمت سرور علت اصلی است، نه صرفاً نمایش رابط کاربری. این دسته از باگها در بسیاری از برنامههای باگبانتی ارزش بالایی دارند.
بارگذاری فایل ناامن زمانی رخ میدهد که برنامه نوع، محتوا یا محل ذخیرهسازی فایل را بهدرستی کنترل نکند. در این حالت، فایلهای خطرناک میتوانند در سرور ذخیره شوند یا از طریق پردازش نامناسب به کد اجرایی تبدیل شوند. این ضعف در پروفایل کاربری، ضمیمههای تیکت، آواتار و پنلهای مدیریتی رایج است. نبود محدودیت بر نوع فایل، نام فایل و MIME type از عوامل اصلی است. کنترل سمت سرور و ذخیرهسازی ایمن برای مقابله ضروری است.
SSRF زمانی رخ میدهد که برنامه به کاربر اجازه دهد آدرس مقصد یک درخواست سمت سرور را تعیین کند. در نتیجه، مهاجم میتواند سرور را مجبور به برقراری ارتباط با منابع داخلی یا سرویسهای غیرمجاز کند. این مشکل در webhookها، import by URL، image fetcherها و سیستمهای preview رایج است. SSRF میتواند به افشای metadata، اسکن شبکه داخلی یا دسترسی به سرویسهای داخلی منجر شود. کنترل لیست مجاز مقصد و محدودسازی شبکه از دفاعهای اصلیاند.
آسیبپذیریهای فنی معمولاً در بخشهایی دیده میشوند که ورودی کاربر را دریافت و پردازش میکنند. فرمهای جستوجو، ثبتنام، ورود، آپلود، فیلترها، APIهای عمومی، وبهوکها، پنلهای مدیریتی و میکروسرویسها از نقاط پرتکرار هستند. هر جا داده از کاربر به سرور، دیتابیس، فایلسیستم یا سرویس خارجی میرود، احتمال وجود ضعف فنی وجود دارد. همچنین سیستمهایی که از فریمورکها و پلاگینهای متعدد استفاده میکنند، ریسک بیشتری دارند.
فروشگاههای اینترنتی، پنلهای SaaS، سامانههای آموزشی، سایتهای سازمانی، سرویسهای مالی، CRMها و APIهای عمومی معمولاً هدف خوبی برای کشف باگهای فنی هستند. دلیل آن، تراکم بالای ورودیها، کاربران متعدد، و حساسیت عملیات است. هر چه سطح تعامل کاربر با سیستم بیشتر باشد، سطح حمله نیز بیشتر میشود. سامانههایی که توسعه سریع داشتهاند و تست امنیتی کافی ندیدهاند، معمولاً آسیبپذیرترند.
تفکیک بین ضعف فنی و ضعف منطقی مهم است.
اثبات باگ باید با بازتولیدپذیری همراه باشد.
گزارش خوب شامل توضیح اثر، شدت، و مسیر اصلاح است.
استفاده از اسکرینشات، لاگ و مقایسهی پاسخها ارزش گزارش را بالا میبرد.
در باگبانتی، دقت در scope و قوانین برنامه از خود کشف باگ مهمتر است.
آسیبپذیریهای فنی ستون اصلی تست امنیت وب هستند، چون مستقیماً به نقص در کد، پیادهسازی یا پیکربندی مربوطاند. هرچند ابزارها میتوانند بخشی از این ضعفها را پیدا کنند، اما درک معماری، تحلیل درخواست/پاسخ و شناخت نقاط حساس سیستم نقش کلیدیتری دارد. یک باگبانتیکار موفق کسی است که هم نشانههای فنی را ببیند و هم اثر واقعی آن را روی سیستم تشخیص دهد. در نهایت، امنیت فنی یعنی کاهش خطاهای قابلسوءاستفاده و ساختن سیستمی که در برابر رفتارهای غیرمنتظره مقاوم باشد.
برای تست امنیت سایت به ایدی @itman30 در بله پیام بدید