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