استارلینک + همه چیز در مورد اینترنت استارلینک و فعالسازی آن + هشدار بد افزار!!🚨
سپتامبر 27, 2022بهترین برنامه شنود +معرفی 10 برنامه برتر جهان + ویژگی های کلیدی هر برنامه🔴
سپتامبر 29, 2022اگر به حوزه ی هک و امنیت علاقه داشته باشید می دانید که تزریق SQL یکی از انواع حملات سایبری است. در این مقاله می خواهیم به طور کامل در مورد این نوع از حمله سایبری صحبت کنیم. برای افرادی که می خواهند افراد دیگر را هک کنند یا می خواهند امنیت خود را بالا ببرند دانستن انواع حمله سایبری می تواند به شدت کمک کننده باشد. به همین دلیل به شما پیشنهاد می کنیم که تا پایان این مقاله همراه ما باشید.
آنچه در این مقاله خواهید خواند :
تزریق SQL چیست؟
تزریق SQL، همچنین به عنوان SQLI شناخته می شود، یک بردار حمله رایج است. که از کد SQL مخرب برای دستکاری پایگاه داده باطن برای دسترسی به اطلاعاتی استفاده می کند که قرار نبوده نمایش داده شوند. این اطلاعات ممکن است شامل هر تعداد مورد، از جمله داده های حساس شرکت، لیست کاربران یا جزئیات مشتری خصوصی باشد.
تاثیری که تزریق SQL می تواند بر یک کسب و کار داشته باشد بسیار گسترده است. یک حمله موفقیت آمیز ممکن است منجر به مشاهده غیرمجاز لیست های کاربران، حذف کل جداول و در موارد خاص، دستیابی مهاجم به حقوق مدیریتی در پایگاه داده شود که همه این موارد برای یک تجارت بسیار مضر است.
هنگام محاسبه هزینه بالقوه SQLi، مهم است که در صورت سرقت اطلاعات شخصی مانند شماره تلفن، آدرس و جزئیات کارت اعتباری، از دست دادن اعتماد مشتری در نظر گرفته شود.در حالی که این بردار را می توان برای حمله به هر پایگاه داده SQL استفاده کرد، وب سایت ها متداول ترین اهداف هستند.
آشنایی بیشتر با این نوع حمله سایبری
همانطور که گفته شد تزریق SQL تنها یکی از انواع حمله سایبری است. SQL یک زبان استاندارد است که برای دسترسی و دستکاری پایگاههای داده برای ایجاد نماهای داده قابل تنظیم برای هر کاربر استفاده میشود. پرس و جوهای SQL برای اجرای دستوراتی مانند بازیابی داده ها، به روز رسانی ها و حذف رکوردها استفاده می شوند. عناصر مختلف SQL این وظایف را اجرا می کنند، به عنوان مثال، پرس و جوها با استفاده از دستور SELECT برای بازیابی داده ها، بر اساس پارامترهای ارائه شده توسط کاربر.
یک کوئری معمولی پایگاه داده SQL eStore ممکن است به شکل زیر باشد:
SELECT ItemName, ItemDescription FROM Item WHERE ItemNumber = ItemNumber
از این طریق، برنامه وب یک کوئری رشته ای ایجاد می کند که به عنوان یک دستور SQL به پایگاه داده ارسال می شود:
sql_query= " SELECT ItemName, ItemDescription FROM Item WHERE ItemNumber = " & Request.QueryString("ItemID")
سپس یک ورودی ارائه شده توسط کاربر http://www.estore.com/items/items.asp?itemid=999 می تواند کوئری SQL زیر را ایجاد کند:
SELECT ItemName, ItemDescription FROM Item WHERE ItemNumber = 999
همانطور که می توانید از نحو جمع آوری کنید، این کوئری نام و توضیحات مورد شماره 999 را ارائه می دهد.
انواع تزریق SQL
تزریقهای SQL معمولاً در سه دسته قرار میگیرند: SQLi درون باند (کلاسیک)، SQLi استنتاجی (کور) و SQLi خارج از باند. شما می توانید انواع تزریق SQL را بر اساس روش هایی که برای دسترسی به داده های باطن استفاده می کنند و پتانسیل آسیب آنها طبقه بندی کنید.
SQLi درون باند
مهاجم از همان کانال ارتباطی برای راه اندازی حملات خود و جمع آوری نتایج خود استفاده می کند. سادگی و کارایی SQLi درون باند، آن را به یکی از رایج ترین انواع حملات SQLi تبدیل کرده است. دو نوع فرعی از این روش وجود دارد:
SQLi مبتنی بر خطا:
مهاجم اقداماتی را انجام می دهد که باعث می شود پایگاه داده پیام های خطا تولید کند. مهاجم می تواند به طور بالقوه از داده های ارائه شده توسط این پیام های خطا برای جمع آوری اطلاعات در مورد ساختار پایگاه داده استفاده کند.
SQLi مبتنی بر اتحاد
این تکنیک از اپراتور UNION SQL بهره میبرد که چندین دستور انتخابی تولید شده توسط پایگاه داده را برای دریافت یک پاسخ HTTP ترکیب میکند. این پاسخ ممکن است حاوی داده هایی باشد که مهاجم می تواند از آنها استفاده کند.
SQLi استنباطی (کور)
مهاجم بارهای داده را به سرور ارسال می کند و پاسخ و رفتار سرور را مشاهده می کند تا در مورد ساختار آن اطلاعات بیشتری کسب کند. این روش SQLi کور نامیده می شود زیرا داده ها از پایگاه داده وب سایت به مهاجم منتقل نمی شود، بنابراین مهاجم نمی تواند اطلاعات مربوط به حمله درون باند را ببیند.
تزریق SQL کور بر پاسخ و الگوهای رفتاری سرور متکی است، بنابراین معمولاً اجرای آنها کندتر است اما ممکن است به همان اندازه مضر باشند.
بیشتر بخوانید🚀🚀🚀🚀🚀🚀: حمله DDoS
تزریق SQL کور را می توان به صورت زیر طبقه بندی کرد:
Boolean – این مهاجم یک پرس و جوی SQL را به پایگاه داده می فرستد و از برنامه می خواهد نتیجه را برگرداند. بسته به درست یا نادرست بودن پرس و جو، نتیجه متفاوت خواهد بود. بر اساس نتیجه، اطلاعات درون پاسخ HTTP تغییر می کند یا بدون تغییر باقی می ماند. سپس مهاجم می تواند بررسی کند که آیا پیام یک نتیجه درست یا نادرست ایجاد کرده است.
مهاجم مبتنی بر زمان یک پرس و جوی SQL را به پایگاه داده ارسال می کند، که باعث می شود پایگاه داده (برای مدتی در چند ثانیه) قبل از اینکه بتواند واکنش نشان دهد منتظر بماند. مهاجم می تواند از زمانی که پایگاه داده پاسخ می دهد، درست یا نادرست بودن یک پرس و جو را ببیند. بر اساس نتیجه، یک پاسخ HTTP بلافاصله یا پس از یک دوره انتظار ایجاد می شود. بنابراین مهاجم می تواند بدون اتکا به داده های پایگاه داده متوجه شود که آیا پیامی که استفاده کرده است درست یا نادرست است.
SQLi خارج از باند
مهاجم تنها زمانی می تواند این شکل از حمله را انجام دهد که ویژگی های خاصی در سرور پایگاه داده مورد استفاده برنامه وب فعال باشد. این شکل از حمله در درجه اول به عنوان جایگزینی برای تکنیک های SQLi درون باند و استنتاجی استفاده می شود.
SQLi خارج از باند زمانی انجام می شود که مهاجم نتواند از همان کانال برای راه اندازی حمله و جمع آوری اطلاعات استفاده کند، یا زمانی که یک سرور برای انجام این اقدامات بسیار کند یا ناپایدار است. این تکنیک ها روی ظرفیت سرور برای ایجاد درخواست های DNS یا HTTP برای انتقال داده ها به مهاجم حساب می کنند.
مثال برای INJECTION SQL
مهاجمی که مایل به اجرای تزریق SQL است، یک پرس و جو استاندارد SQL را برای سوء استفاده از غیر
آسیب پذیری های ورودی تایید شده در پایگاه داده راه های زیادی وجود دارد که این بردار حمله را می توان اجرا کرد که چندین مورد از آنها در اینجا نشان داده می شود تا یک ایده کلی در مورد نحوه عملکرد SQLI به شما ارائه شود.
برای مثال، ورودی فوقالذکر که اطلاعات یک محصول خاص را میکشد، میتواند برای خواندن http://www.estore.com/items/items.asp?itemid=999 یا 1=1 تغییر یابد.
در نتیجه، کوئری SQL مربوطه به شکل زیر است:
SELECT ItemName, ItemDescription FROM Items WHERE ItemNumber = 999 OR 1=1
و از آنجایی که عبارت 1 = 1 همیشه درست است، پرس و جو همه نامها و توضیحات محصول در پایگاه داده را برمیگرداند، حتی آنهایی که ممکن است واجد شرایط دسترسی نباشید.
مهاجمان همچنین می توانند از کاراکترهای نادرست فیلتر شده برای تغییر دستورات SQL، از جمله استفاده از نقطه ویرگول برای جدا کردن دو فیلد، استفاده کنند.
به عنوان مثال، این ورودی http://www.estore.com/items/iteams.asp?itemid=999; DROP TABLE کاربران کوئری SQL زیر را ایجاد می کنند:
SELECT ItemName, ItemDescription FROM Items WHERE ItemNumber = 999; DROP TABLE USERS
در نتیجه، کل پایگاه داده کاربر می تواند حذف شود.
روش دیگری که می توان پرس و جوهای SQL را دستکاری کرد، عبارت UNION SELECT است. این دو کوئری SELECT نامرتبط را برای بازیابی داده ها از جداول پایگاه داده مختلف ترکیب می کند.
برای مثال، ورودی http://www.estore.com/items/items.asp?itemid=999 UNION SELECT user-name, password FROM USERS عبارت SQL زیر را ایجاد می کند:
SELECT ItemName, ItemDescription FROM Items WHERE ItemID = '999' UNION SELECT Username, Password FROM Users;
با استفاده از عبارت UNION SELECT، این درخواست برای نام و توضیحات مورد 999 را با دیگری ترکیب می کند که نام و رمز عبور را برای هر کاربر در پایگاه داده می گیرد.
تزریق SQL همراه با اجرای فرمان سیستم عامل: حمله Accellion
Accellion، سازنده File Transfer Appliance (FTA)، یک دستگاه شبکه است که به طور گسترده در سازمان ها در سراسر جهان مستقر شده و برای جابجایی فایل های بزرگ و حساس استفاده می شود. این محصول بیش از 20 سال قدمت دارد و اکنون به پایان عمر خود رسیده است.
FTA موضوع یک حمله منحصر به فرد و بسیار پیچیده بود که ترکیبی از تزریق SQL با اجرای فرمان سیستم عامل بود. کارشناسان گمانه زنی می کنند که حمله Accellion توسط هکرهایی با ارتباط با گروه جرایم مالی FIN11 و گروه باج افزار Clop انجام شده است.
این حمله نشان میدهد که تزریق SQL فقط حملهای نیست که بر برنامههای کاربردی وب یا سرویسهای وب تأثیر میگذارد، بلکه میتواند برای به خطر انداختن سیستمهای Back-end و استخراج دادهها نیز مورد استفاده قرار گیرد.
بیشتر بخوانید🚀🚀🚀🚀🚀🚀: حمله مرد میانی
چه کسی تحت تأثیر این حمله ها قرار می گیرد؟
سوء استفاده Accellion یک حمله زنجیره تامین است که بر سازمان های متعددی که دستگاه FTA را مستقر کرده بودند، تحت تاثیر قرار می دهد. اینها شامل بانک رزرو نیوزلند، ایالت واشنگتن، کمیسیون اوراق بهادار و سرمایه گذاری استرالیا، غول مخابراتی سینگتل، و سازنده نرم افزارهای امنیتی Qualys، و همچنین تعداد زیادی دیگر بودند.
جریان حمله شتاب
بر اساس گزارشی که توسط Accellion تهیه شده است، ترکیب SQLi و حمله اجرای دستور به شرح زیر عمل می کند:
مهاجمان برای دسترسی به document_root.html، SQL Injection را انجام دادند و کلیدهای رمزگذاری را از پایگاه داده Accellion FTA بازیابی کردند.
مهاجمان از کلیدها برای تولید توکن های معتبر استفاده می کردند و از این نشانه ها برای دسترسی به فایل های اضافی استفاده می کردند.
همچنین از نقص اجرای فرمان سیستم عامل در فایل sftp_account_edit.php سوء استفاده کردند و به آنها اجازه می داد دستورات خود را اجرا کنند.
سپس یک پوسته وب در مسیر سرور /home/seos/courier/oauth.api ایجاد کردند.
ادامه مسیر!
با استفاده از این پوسته وب، آنها یک پوسته وب سفارشی و با ویژگی های کامل را روی دیسک آپلود کردند که شامل ابزار بسیار سفارشی شده برای استخراج داده ها از سیستم Accellion بود. محققان این پوسته را DEWMODE نامیدند.
با استفاده از DEWMODE، مهاجمان فهرستی از فایلهای موجود را از پایگاه داده MySQL در سیستم Accellion FTA استخراج کردند و فایلها و ابردادههای آنها را در یک صفحه HTML فهرست کردند.
مهاجمان درخواستهای دانلود فایل را که شامل درخواستهایی به مؤلفه DEWMODE بود، با پارامترهای URL رمزگذاریشده و رمزگذاریشده انجام دادند.
DEWMODE می تواند این درخواست ها را بپذیرد و سپس درخواست های دانلود را از لاگ های وب FTA حذف کند.
این باعث افزایش مشخصات حملات تزریق SQL میشود و نشان میدهد که چگونه میتوان از آنها به عنوان دروازهای برای حمله بسیار آسیبرسان به زیرساختهای حیاتی شرکت استفاده کرد.
پیشگیری و کاهش تزریق SQL
چندین راه موثر برای جلوگیری از وقوع حملات SQLI و همچنین محافظت در برابر آنها در صورت وقوع وجود دارد.
مرحله اول اعتبار سنجی ورودی (با نام مستعار پاکسازی) است، که تمرین نوشتن کدی است که می تواند ورودی های نامشروع کاربر را شناسایی کند.
در حالی که اعتبار سنجی ورودی همیشه باید بهترین روش در نظر گرفته شود، به ندرت راه حلی بیخطر است. واقعیت این است که در بیشتر موارد، ترسیم تمام ورودیهای قانونی و غیرقانونی به سادگی امکانپذیر نیست – حداقل بدون ایجاد تعداد زیادی از مثبتهای کاذب، که با تجربه کاربر و عملکرد یک برنامه تداخل میکنند.
به همین دلیل، یک فایروال برنامه کاربردی وب (WAF) معمولا برای فیلتر کردن SQL استفاده می شود
برای انجام این کار، یک WAF معمولاً به لیستی بزرگ و دائماً به روز شده از امضاهایی که با دقت ساخته شده است، متکی است که به آن اجازه می دهد تا درخواست های SQL مخرب را با جراحی حذف کند. معمولاً، چنین فهرستی دارای امضاهایی برای رسیدگی به بردارهای حمله خاص است و به طور منظم برای معرفی قوانین مسدودسازی برای آسیبپذیریهای تازه کشف شده وصله میشود.
فایروال های کاربردی وب مدرن نیز اغلب با راه حل های امنیتی دیگر ادغام می شوند. از اینها، یک WAF می تواند اطلاعات اضافی را دریافت کند که قابلیت های امنیتی آن را بیشتر می کند.
به عنوان مثال، یک فایروال برنامه وب که با ورودی مشکوک، اما نه آشکار مخرب مواجه می شود، ممکن است قبل از تصمیم به مسدود کردن درخواست، آن را با داده های IP تأیید کند. فقط در صورتی ورودی را مسدود می کند که خود IP سابقه شهرت بدی داشته باشد.
نتیجه
یکی از مهمترین حمله ها در دنیای سایبری همین تزریق SQL است. به همین دلیل هم باید به آن ها توجه زیادی داشته باشید. بسیاری از افراد معتقد هستند که این حملات قدیمی شده اند و اکنون هکر ها از روش های جدید تری استفاده می کنند. باید این مسئله را از نظر آماری قبول کرد. یعنی در سال های اخیر از تزریق SQL کمتر استفاده شده است. اما به مرور زمان که روش های امنیتی هم پیچیده تر می شوند ممکن است هکر ها به روش های سابق خود بازگردند.
نمونه ی بازگشت به حملات سالهای گذشته را می توانید در بسیاری از هک هایی که در سال 2021 اتفاق افتاد ببینید. البته این هک ها قطعا ارتقا یافته بودند یا با سایر انواع هک ترکیب شده بودند. به همین دلیل این موارد از حمله ها را باید به عنوان پایه ای ترین بخش های امنیت یاد بگیرید!.