14
ارائهنده ده: قی، محسن صادقی مهدی اشزاتاد درس اس: نادریحمد دکتز مهی آصاد اسشگا دااىت اصف تحقیقا ماحذ ػل ارائه پیشرفتهه داده درس پایگا ی

SQL Injection; Attack & Prevention

Embed Size (px)

DESCRIPTION

what's SQL injection attack, and how to prevention it.

Citation preview

Page 1: SQL Injection; Attack & Prevention

‌:دهنده‌ارائه‌مهدی‌اشزاقی،‌محسن‌صادقی‌

‌:استاد‌درس‌دکتز‌محمد‌نادری‌

داشگا آصاد اسالهی احذ ػلم تحقیقات اصفاى

ی درس پایگاه داده پیشرفته‌ارائه

Page 2: SQL Injection; Attack & Prevention

SQL INJECTION

2/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

.ػی حول ت تشاه ای تحت ب•

.تشای دستشسی غیشهداص اهحذد SQLاستفاد اص دستسات •

.تضسیق ایي دستسات تا استفاد اص سدی ای فشم ای تشاه تحت ب•

اص سی 2010دس سال سش آسیة پزیشی تشاه ای تحت ب 10یکی اص •

OWASP

Page 3: SQL Injection; Attack & Prevention

چزا تشریق یک مسئله است؟

3/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

.تضسیق ت تشاه ب، ت هؼی دستشسی ت داد ای رخیش شذ دس پایگا داد است•

.تشخی اص داد ا تسیاس هن ستذ، واذ داد ای یک تاک•

.دستشسی غیش هداص ت ایي داد ا یؼی قص خاهؼیت هحشهاگی داد ا•

!تید ایي دستشسی غیشهداص، یشای کاهل است•

.تاتشایي تضسیق، تست ت هحل حول، تسیاس خطشاک است•

Page 4: SQL Injection; Attack & Prevention

آسیب پذیزی چگونه بوجود می آید؟

4/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

‌شزح‌نوع‌آسیب‌پذیزی

.هیاى ع داد ایی ک تسط سدی پزیشفت هی شذ قض دس توایض کاهل‌نوع‌اول

ک ایگ هتغیشای کی ت ػاى کذ . تدضی تحلیل ػولیات تا صهاى اخشا تأخیش‌نوع‌دوم .هثغ دس ظش گشفت هیشذ

طشاحی تؼشیف ضؼیف خصصیات هتغیش دس صهاى‌نوع‌سوم .یک هتغیش ػذدی هیتاذ ت ػاى سشت ن پزیشفت شد: هثال-

.سدی ت دسستی چک ویشد. صست ویگیشد اػتثاسسدی سدی ا ت دسستی‌نوع‌چهارم

Page 5: SQL Injection; Attack & Prevention

حمالت تشریقانواع

5/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

.تضسیق ت خوالت ششطی، تا یک ششط ویش صحیح•

SELECT accounts FROM users WHERE

login=’’ or 1=1 -- AND pass=’’

-- or 1=1 ’: ػثاست تضسیق شذ•

Tautologies attack

Page 6: SQL Injection; Attack & Prevention

حمالت تشریقانواع

6/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

تلیذ پیغام ای خطا تسط پایگا داد، تشای فویذى هشخصات پایگا داد خت •

.تضسیق

localhost/iauzc_ir/chat.php?chat_id=12:‌‌‌آدرس

’localhost/iauzc_ir/chat.php?chat_id=12:‌‌‌‌دستور‌خطا

:پیغام خطا

You have an error in your SQL syntax; check the manual that corresponds to

your MySQL server version for the right syntax to use near ''' at line 1

Logically Incorrect Queries attack

Page 7: SQL Injection; Attack & Prevention

حمالت تشریقانواع

7/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

.صحیح اهي اتصال داد هیشد queryت یک unionتضسیق تا استفاد اص دستس •

.ذف تذست آسدى اطالػات اص خذلای دیگش پایگا داد•

“’ UNION SELECT cardNo from CreditCards where acctNo=10032 - -”

SELECT accounts FROM users WHERE login=’’ UNION SELECT cardNo from CreditCards where acctNo=10032 --

AND pass=’’ AND pin=

Union Query attack

Page 8: SQL Injection; Attack & Prevention

حمالت تشریقانواع

8/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

.شاسایی پاساهتشای آسیة پزیش، اص طشیق اسد کشدى هقادیش هختلف تشسسی خاتای آى•

1‌.Blind injection‌

استتاج تایح تا تخ ت سفتاس صفح

User Name: admin

Password: hi' or 'a'='a

دس صست اهي تدى تشاه، پیغام خطای هاسة هیذذ دس غیش ایصست تذى خطا دستسات .اخشا هیشد

2 .Timing attack

کسب اطالعات از طریق تأخیر

Inference attack

Page 9: SQL Injection; Attack & Prevention

حمالت تشریقانواع

9/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

تغییش ظاش حول کذ ت هظس فشاس اص ساای خلگیشی اص تضسیق•

.، هخة خاهش شذى پایگا داد هیشدloginاسد کشدى دستس صیش دس فیلذ •

“legalUser’; exec(0x73687574646f776e) - - ”

Alternate Encodings attack

Page 10: SQL Injection; Attack & Prevention

روشهبی دفبع در بزابز تشریق

10/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

.های ثابتی که از قبل تعریف شده اندqueryاستفاده از .پارامترهابدون دادن مقادیر sqlکامل کد تعریف •قوی روی پارامترها و در انتها پاس دادن پارامتر type checkingاعمال •

.queryبه . – or 1=1 ‘جلوگیری از مقادیر ورودی غیر مجاز مانند •

Prepared statement

Page 11: SQL Injection; Attack & Prevention

روشهبی دفبع در بزابز تشریق

11/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

.از کاراکترهایی که باید ترجمه شوند blacklistایجاد یک • ( (‘ ‘)با ( ‘) جایگسینی) queryتغییر کاراکترهای با معنی در • : PHPدس mysql_real_escape_string ()استفاده از تابع : مثال •

‌$query = sprintf("SELECT * FROM `Users` WHERE UserName='%s' AND

Password='%s'",

mysql_real_escape_string($Username),

mysql_real_escape_string($Password));

mysql_query($query);

Escaping User Input

Page 12: SQL Injection; Attack & Prevention

روشهبی دفبع در بزابز تشریق

12/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

کمتر به کاربران privilegeاز طریق اعطای SQLIAکاهش اثر • پایگاه داده

دادن دسترسیread به کاربری که فقط حقread دارد. استفاده ازview برای کاربرانی که به قسمتی از یک جدول باید دسترسی داشته باشند. عدم اجرایDBMS به عنوانroot یاsystem مثال :MySql به صورت پیش فرض به صورتsystem رویwindows اجرا می

.شود

Least privilege

Page 13: SQL Injection; Attack & Prevention

روشهبی دفبع در بزابز تشریق

13/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه

White List Input Validation

.تعریف دقیق ورودی های معتبر• .queryاعتبار سنجی ورودی قبل از فرستادن آن به •ها برای regular expressionایجاد ساختار اعتبارسنجی قوی بر اساس •

.،تاریخ email ،zipcodeورودی هایی که فرمت خاصی دارند مانند آدرس :مانند ESAPIاستفاده از توابع اعتبارسنجی ابسار •

getValidDate()

getValidCreditCard()

getValidSafeHTML()

getValidInput()

getValidNumber()

getValidFileName()

getValidRedirectLocation()

Page 14: SQL Injection; Attack & Prevention

شزح و پیبده سبسی نمونه عملی

14/14‌ ، آسیة پزیشی، حول، پیشگیشیSQL INJECTION: پایگا داد پیششفت

1392آتاى -ذی اششاقی، هحسي صادقی ه