Download presentation
Presentation is loading. Please wait.
Published byJared Griffin Modified over 6 years ago
1
پروژه درس امنیت پایگاه داده ساجده حرّاز نرگس یوسف نژاد
حمله تزریق SQL پروژه درس امنیت پایگاه داده استاد : دکتر جلیلی ارائه دهندگان: ساجده حرّاز نرگس یوسف نژاد
2
فهرست مطالب 1 تعریف Sql Injection Attack 2 معماری WEB APPLICATION 3
انواع SQLIA 4 روش های پیشگیری وتشخیص SQLIA 3 روش های دفاعی SQLIA
3
عدم اعتبارسنجي وروديهايي كه در توليد دسترسی غیر مجاز به اطلاعات موجود
تعریف SQLIA تهدید کاربردهای تحت وب SQLIA عدم اعتبارسنجي وروديهايي كه در توليد يك پرس وجو دسترسی غیر مجاز به اطلاعات موجود در پایگاه داده
4
گزارش اخیر موسسه OWASP
5
معماری WEB APPLICATION
6
انواع SQLIA Tautologies Illegal/Logically Incorrect Queries
Union Query Piggy- Backed Queries Stored Procedures Inference Alternate Encodings
7
Tautologies attack هدف : دور زدن مکانیزمهای احراز اصالت ، استخراج داده و تشخیص پارامترهای قابل تزریق SELECT ∗ FROM user WHERE id = ‘1’ or ‘1 = 1’—’ AND password = ‘1111’
8
Illegal/Logically Incorrect Queries attack
هدف : تشخیص شمای پایگاه داده ، استخراج داده ، تشخیص پارامترهای قابل تزریق به دست آوردن اطلاعات با توجه به خطاهای پایگاه داده وارد کردن عبارت زیر در قسمت pin : convert (int,(select top 1 name from sysobjects wheretype=’u’)) Query تولید شده در CGI layer : SELECT accounts FROM users WHERE login=’’ AND pass=’’ AND pin= convert (int,(select top 1 name from sysobjects where xtype=’u’)) پیغام خطا در sql: "Microsoft OLE DB Provider for SQL Server (0x80040E07) Error converting nvarchar value ’CreditCards’ to a column of data type int.“ حمله کننده میفهمد: 1-پایگاه داده sql server است. 2- نام اولين جدول تعريف شده ي كاربر در پايگاه داده “credit card”
9
حمله کننده نسخه پایگاه داده را می فهمد.
Union Query attack هدف: دور زدن مکانیزم های احراز اصالت ، استخراج داده $sqlquery = "SELECT * From news WHERE id =$id"; $process=odbc_exec($sqlconnect, $sqlquery); echo odbc_result($process,2); وارد کردن مقدار 1 and 1=2 union select جای عدد در فیلد id : SELECT * From news WHERE id = 1 and 1=0 union select -- حمله کننده نسخه پایگاه داده را می فهمد.
10
Piggy- Backed Queries attack
هدف: استخراج داده، اضافه كردن يا اصلاح داده، انجام دادن عدم سرويس دهي، اجرای دستورات دور وارد کردن مقدار “;drop table users - - “ در فیلد پسورد SELECT accounts FROM users WHERE login=’doe’ AND pass=’’; drop table users -- ’ AND pin=123 نتیجه:حذف جدول users
11
Stored Procedures attack
هدف: افزایش امتیازات و عدم سرویس دهی رویه ذخیره شده در پایگاه داده: CREATE PROCEDURE DBO.isAuthenticated @userName int AS EXEC("SELECT accounts FROM users WHERE login=’" "’ and pass=’" "’ and pin=" GO وارد کردن “ ’ ; SHUTDOWN; - -” در فيلد pass: SELECT accounts FROM users WHERE login=’doe’ AND pass=’ ’; SHUTDOWN; -- AND pin= نتیجه : پایگاه داده خاموش می شود!
12
Alternate Encodings attack
هدف: دور زدن مکانیزم های تشخیص تزریق عبارت “legalUser’; exec(0x f776e) - -“ در فیلد login SELECT accounts FROM users WHERE login=’legalUser’; exec(char(0x f776e)) -- AND pass=’’ اعداد معادل رشته shut down است در نتیجه پایگاه داده خاموش می شود.
13
Inference attack هدف: مشخص کردن پارامترهای قابل تزریق ، استخراج داده و مشخص کردن شمای پایگاه داده -1 Blind Injection : استنتاج اطلاعات با توجه به رفتار صفحه با پرسیدن سوال های true یا false 1-SELECT accounts FROM users WHERE login=’legalUser’and 1=0 -- ’ AND pass=’’ AND pin=0 2-SELECT accounts FROM users WHERE login=’legalUser’ and 1=1 -- ’ AND pass=’’ AND pin=0 اگر برنامه امن باشد: پارامتر login آسیب پذیر نیست. اگر برنامه نا امن باشد:پیغام خطا نشان داده شده و پارامتر login آسیب پذیر است.
14
Inference attack (continue)
Timing Attack-2 به دست آوردن اطلاعات با توجه به تاخیر های زمانی در عکس العمل پایگاه داده،با استفاده از ساختارهای sql که زمان مشخصی برای اجرا می گیرند SELECT accounts FROM users WHERE login=’legalUser’and ASCII(SUBSTRING((select top 1 name from sysobjects),1,1)) > X WAITFOR 5 -- ’ AND pass=’’ AND pin=0
15
راه های پیشگیری و کشف تست جعبه سیاه (WAVES)
چککنندههای کد ایستا (JDBC-Checker) ترکیب تحلیل ایستا و پویا نمونه های توسعه یافته پرس و جوی جدید سیستمهای تشخیص نفوذ (Valeur ) فیلترکردن proxy تصادفی کردن مجموعه دستورات (SQLrand)
16
راه های پیشگیری و کشف (ادامه)
تست جعبه سیاه (WAVES) استفاده از یکweb crawler برای شناسایی تمام نقاط موجود در یک برنامه وب ساخت حملات، مانیتور کردن پاسخ به این حملات، استفاده ازشیوههای یادگیری ماشین برای بهبود روش حملات چککنندههای کد ایستا (JDBC-Checker) بررسی ایستا صحت پرس و جوها جلوگیری از حملات عدم تطابق در پرس و جو دامنه محدودی از حملات
17
راه های پیشگیری و کشف (ادامه)
ترکیب تحلیل ایستا و پویا (AMNESIA ) در مرحله استاتیک استفاده از تحلیل استاتیک برای ساخت مدلهای متفاوت پرسوجو در مرحله پویا جلوی تمام پرسوجوها را قبل از فرستادن به پایگاه داده میگیرد. مقایسه هر پرس و جو با مدل های ایستا ساخته شده محدودیت وابستگی موفقیت آن به صحت تحلیل ایستا برای ساختن مدل های پرس و جو
18
راه های پیشگیری و کشف (ادامه)
نمونه های توسعه یافته پرس و جوی جدید (SQL DOM، Safe Query Objects) فشرده کردن پرسوجوهای پایگاه داده عدم استفاده از الحاق یک سری رشته برای ایجاد پرس و جو استفاده از API برای بررسی پرس و جو بررسی نوع ورودی کاربر و فیلتر کردن ورودی نقض: نیاز به یادگیری و توسعه یک نمونه برنامه نویسی جدید یا فرآیند توسعه پرس وجو جدید عدم تامین حفاظت یا امنیت سیستم های منطقی موجود
19
راه های پیشگیری و کشف (ادامه)
سیستمهای تشخیص نفوذ (Valeur) مبتنی بر تکنیک های یادگیری ماشین ساخت مدل از پرس و جوها، بررسی تطابق پرس و جوها با مدل حملات را به خوبی تشخیص می دهد. موفقیت آن وابسته به دنباله مجموعه یادگیری استفاده شده false positive و false negative زیاد
20
راه های پیشگیری و کشف (ادامه)
فیلترکردن proxy (Security Gateway) اجرای قوانین تصدیق ورودی بر روی جریان داده یک برنامه وب زبان توصیف خط مشی امنیتی (SPDL) اعمال تغییرات و محدودیت، قبل از فرستاده شدن پارامترهای کاربردی به سرور مشکل وابسته به انسان طراحان باید بدانند روی چه داده هایی و با چه ساختاری باید فیلترینگ انجام دهند.
21
راه های پیشگیری و کشف (ادامه)
تصادفی کردن مجموعه دستورات (SQLrand) اجازه ایجاد پرسوجوها با استفاده از دستورالعملهای تصادفی بجای کلمات کلیدی SQL یک فیلتر proxy پرس و جوها را از پایگاه داده جدا می کند. مشکل: سربار زیاد استفاده از يک کليد سري براي تغيير دستورات
22
مقایسه راه های پیشگیری و کشف
23
راه های دفاعی CODE SECURELY BLOCK ATTACKS MONITOR FOR ATTACKS
24
CODE SECURELY آموزش توسعه دهندگان پیروی از بهترین شیوه ها
پرهیز از خطا در هنگام توسعه نرم افزار پیروی از بهترین شیوه ها استفاده از استانداردهای برنامهنویسی استفاده از جملات آماده فیلتر کردن ورودی برنامه نویسی امن با Perl برنامه نویسی امن با Java برنامه نویسی امن با VB.NET
25
برنامه نویسی امن با Java
26
MONITOR FOR ATTACKS کشف حمله در حین اجرا گزینه های کشف حمله
سیستم تشخیص نفوذ شبکه (NIDS) پایگاه داده ای از قوانینِ pattern-matching مثالی از نحوه ساخت یک امضا در snort regular expression هسته ساخت هر راه حل IDS سیستم تشخیص نفوذ میزبان (HIDS) سیستم تشخیص نفوذ برنامه کاربردی (AppIDS)
27
BLOCK ATTACKS Application firewalls قادر به مشاهده
Web-application firewalls بین مرورگرها و برنامههای وب مانند IDS شبکه دریافت داده در نقطه نهایی عدم تداخل با ترافیک قانونی یک برنامه وب قادر به مشاهده ترافیک رمزگشایی شدهSSL ترافیک نرمال
28
BLOCK ATTACKS نرم افزار فایروال برای حفاظت ModSecurity
یک ماژول متن باز کاربر میتواند قوانین خود را اضافه کند. Cisco Application Velocity System (AVS) برای بهبود کارائی، اندازهگیری زمان پاسخ و حفاظت از برنامههای وب قوانین توکار (built-in) به مدیران اجازه افزودن قوانین را میدهد.
29
مراجع Bravenboer, M., Dolstra, E., Visser, E., "Preventing injection attacks with syntax embeddings", Science of Computer Programming, vol. 75, pp , 2010. Clarke, J., "SQL Injection Attacks and Defense", Elsevier, Syngress Publishing, Inc., 2009. Halfond, W. G. J., Viegas, J., Orso, A., "A Classification of SQL Injection Attacks and Countermeasures", Computing, 2006. Jeong, I. Lee, S., Yeo, S., Moond, J., "A novel method for SQL injection attack detection based on removing SQL query attribute values", Mathematical and Computer Modelling, vol. 55, pp. 58–68, 2012. Mackay, C. A., "SQL Injection Attacks and Some Tips on How to Prevent Them", Technical report, The Code Project, 2005, Moyle, S., "The blackhat’s toolbox: SQL injections", Network Security, pp , 2007. Muthuprasanna, M., Kothari, W. Ke, S., "Eliminating SQL Injection Attacks - A Transparent Defense Mechanism", Analysisو. Nystrom, M. G., "SQL Injection Detection", O'Reilly Media, Inc, 2007. Ping-Chen, X., "SQL injection attack and guard technical research", Procedia Engineering, vol. 15, pp , 2011.
30
با تشکر
31
Question? ‘ or 1=1 - - ‘ ) or ‘1’ = ‘1 - - Select @@version
exec(0x f776e) - - ” Question? Select ASCII(SUBSTRING((select top 1 name from sysobjects),1,1)) > X WAITFOR 5 --’’
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.