data base security (sql injection attacks)
TRANSCRIPT
![Page 1: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/1.jpg)
SQL Injection Attack (SQLIA)
1393بهار
بنام خدا
:تهیه کننده
حسن کوشککی
هدادپایگاه امنیت
Email: [email protected]
![Page 2: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/2.jpg)
فهرست مطالب
SQLIAتعریف . 1
SQLIAانواع حمالت . 2
SQLIAروش های دفاع در مقابل . 3
SQLIAروش های جلوگیری و تشخیص در . 4
مقایسه روش ها و نتیجه گیری. 5
![Page 3: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/3.jpg)
SQLIAتعریف
ادهدکاربردیهایبرنامهازاستفادهجهت(مخرب)کدتزریقتکنیک•محور
دونبافرادوکندمیتهدیدراوبتحتکاربردهایبیشترحملهاین•رتصوبههادادهپایگاهدرموجوداطالعاتبهشوندهویتاحرازاینکه
کنندمیدسترسیمجازغیر
مقدمه
![Page 4: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/4.jpg)
مقدمهSQLIAتعریف
SQLمراحل اجرای تزریق
![Page 5: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/5.jpg)
SQLIAتعریف
:SQLدسته بندی حمالت
حمالت مرتبه اول
تغییر ساختارSQL
حمالت مرتبه دوم
تزریق کد مخرب به محل ذخیره سازی داده ها
مشاهده نتایج در اجراهای بعد
حمالت کوتاه سازی دستورات
بافرهااستفاده از سایز
مقدمه
![Page 6: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/6.jpg)
SQLIAانواع حمالت
Tautologies
Illegal/Logically Incorrect Queries
Union Query
Piggy- Backed Queries
Stored Procedures
Inference
Alternate Encodings
حمالت SQL
مقدمه
![Page 7: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/7.jpg)
حمالت SQL
مقدمه
; می شودجوهاباعث جداسازی دستورات یا پرس و
“ برای مشخص کردن رشته ها استفاده می شود‘یا
هر دستوری که بعد از- بیاید نادیده گرفته می شود/*...*/ یا -
SQLIAانواع حمالت
![Page 8: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/8.jpg)
فرض کنیم از شبه کد زیر برای کنترل مجوز ورود کاربران استفاده می شود:
Session_Start();
$username=$_post[username];
$password=$_post[password];
Select * from user where login=' $username ' and pass=‘password';
SQLIAتعریف
حمالت SQL
مقدمه
![Page 9: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/9.jpg)
Tautologies attack
اضافه کردن کد به قسمت های شرطی
فرار از احراز هویت و استخراج داده: هدف
وارد کردن عبارت : مثالor 2=2 - :جای نام کاربری در ورودیب”-
SELECT accounts FROM users WHERE
login=’’ or 2=2 - - AND pass=’’
حمالت SQL
مقدمه
![Page 10: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/10.jpg)
Illegal/Logically Incorrect Queries attack
خطای نحویمنطقیخطاهاینوعتبدیلخطاهای
مثال :convert (int,(select top 1 name from sysobjects where xtype=’u’))
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."
حمله کننده نام پایگاه داده و نام جدول و نوع ستون را می فهمد
حمالت SQL
مقدمه
![Page 11: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/11.jpg)
Union Query attack
اضافه کردنUnion
استخراج دادهوبازگشتی، فرار از احراز هویت رکوردهایتغییر : هدف
وارد کردن عبارت زیر در قسمت : مثالlogin:
“ UNION SELECT cardNo from CreditCards where acctNo=10032 - -
SELECT accounts FROM users WHERE login=’’ UNION SELECT cardNofrom CreditCards where acctNo=10032 -- AND pass=’’
اطالعات جدول دوم نیز برای شرط مورد نظر نمایش داده می شود
حمالت SQL
مقدمه
![Page 12: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/12.jpg)
Piggy- Backed Queries attack
داده و استخراج دادهتغییر، سرویسجهت منع : هدف
فیلدوارد کردن عبارت زیر در : مثالOrderID :12345 ; drop table Order - -
SELECT * FROM Order
WHERE OrderID=12345 ; drop table Order
پاک شدن تمام جداول کاربر
حمالت SQL
مقدمه
![Page 13: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/13.jpg)
Stored Procedures attack
وامتیازاتتشدید،سرویسازجلوگیری:هدفremote command
باشدشکلبدینسرورسمتدرپارامترهااعتبارکردنچکروالاگر:مثال:
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’);
- ;SHUTDOWN ; “با وارد کردن :passدر فیلد -
SELECT accounts FROM users WHERE
login=’Alice’ AND pass=’’; SHUTDOWN; -- AND pin=
خاموش شدن پایگاه داده و عدم سرویس دهی سرور
حمالت SQL
مقدمه
![Page 14: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/14.jpg)
Inference attack
دادهپایگاهشمایتعیینودادهاستخراجپذیر،آسیبهایپارامترشناسایی:هدف
Blind Injection .1 : استنتاج اطالعات با توجه به رفتار صفحه
- legalUser’ and 1=0“وارد کردن : مثال - legalUser’ and 1=1“و ”- را در قسمت ”-login در دو مرحله:
SELECT accounts FROM users WHERE login=’legalUser’ and 1=0 -- ’ AND pass=’’ AND pin=0
SELECT accounts FROM users WHERE login=’legalUser’ and 1=1 -- ’ AND pass=’’ AND pin=0
مهاجم رفتار سیستم را در برابر پرس و جوهای درست یا غلط مشاهده می کند
حمالت SQL
مقدمه
![Page 15: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/15.jpg)
Timing Attack .2 : کسب اطالعات از طریق تاخیر در جوابquery
:loginفیلدزیردروارد کردن مقدار : مثال’legalUser’ and ASCII( SUBSTRING( (select top 1 name from sysobjects),1,1)) > X
WAITFOR 5 - -
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
با توجه به میزان تاخیر و بدست آوردن نام اولین جدول طی چند مرحلهxتغییر مقدار
حمالت SQL
مقدمه ( ادامه) Inference attack
![Page 16: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/16.jpg)
Alternate Encodings attack
فرار از احراز هویت: هدف
:وارد کردن عبارت زیر: مثال
“legalUser’; exec(0x73687574646f776e) - loginفيلددر -
SELECT accounts FROM users WHERE login=’legalUser’;
exec(char(0x73687574646f776e)) -- AND pass=’’ AND pin=
خاموش شدن پایگاه داده
حمالت SQL
مقدمه
![Page 17: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/17.jpg)
SQLIAروشهای دفاع در مقابل
Prepared statement
Stored Procedure
Escaping All User Supplied Input
Least Privilege
White List Input Validation
روشهای دفاع
حمالت SQL
مقدمه
![Page 18: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/18.jpg)
Prepared statement
شدهپارامتربندیجستجوهای
نویسبرای برنامه راهکاراولين
کاربرورودیازمستقلاطالعاتیبانک
کدکاملتعریفSQLپارامترهامقدارگذاریبدون
استفاده از آن در زبان های مختلف:
• Java EE – use PreparedStatement()
• * .NET – use SqlCommand() or OleDbCommand()
• * PHP – use PDO )(...
روشهای دفاع
حمالت SQL
مقدمه
![Page 19: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/19.jpg)
Stored procedure
امنسازیپيادهصورتدر
آنهافراخوانیوبدنهدرکدهاذخيره
کاربراندسترسیکردنمحدود
هایکدآوریجمعSQLکاربراندسترسازدورآنهانگهداریومکانیکدر
روشهای دفاع
حمالت SQL
مقدمه
![Page 20: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/20.jpg)
Escaping User Input ایجاد یکblacklist
تغيير کاراکترهای با معنی درquery(با ( ‘) جایگزینی(‘ ‘) )
پيچيدگی زمانی
استفاده از تابع : مثال()mysql_real_escape_string درPHP:
$Username =mysql_real_escape_string($Username);
$Password =mysql_real_escape_string($Password));
$query = sprintf("SELECT * FROM `Users` WHERE
UserName='$Username 'AND Password='$Password'(;
mysql_query($query);
(ممکن است یک سری کاراکتر فراموش شود) دارای ریسک
استفاده از این روش درOracle ،MySQL وSQL Server
روشهای دفاع
حمالت SQL
مقدمه
![Page 21: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/21.jpg)
Least privilege
کاهش اثرSQLIA از طریق اعطایprivilegeکمتر به کاربران پایگاه داده
استفاده ازview
دادن دسترسیread به کاربری که فقط حقreadدارد
استفاده ازstored procedure
و...
روشهای دفاع
حمالت SQL
مقدمه
![Page 22: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/22.jpg)
White List Input Validation
تعریف دقيق ورودی های معتبر
اعتبار سنجی ورودی قبل از فرستادن آن به پرس و جو
قویاعتبارسنجیایجاد ساختار
محدود کردن طول ورودی( ورودی هایtext free ترین موردمشکل)
ماننداعتبارسنجیاستفاده از توابع: getValidDate()
getValidSafeHTML()
getValidInput()
getValidNumber()
getValidFileName()
روشهای دفاع
حمالت SQL
مقدمه
![Page 23: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/23.jpg)
SQLIAروش های جلوگيری
WAVES
DBC-Checker
WebSSARI
Java Static Tainting
SecuriFly
SQL DOM
روش هایجلوگیری
روشهای دفاع
حمالت SQL
مقدمه
![Page 24: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/24.jpg)
SQLIAروش های جلوگيری
(WAVES 1:
سياهجعبهتستتکنيک
هدفموردنقاطتمامشناساییSQLIA
ماشينیادگيریهایتکنيکازاستفادهباحملهشناساییبهبود
نيستکامل
(DBC 2-Checker:
کدایستایبررسیروش
صحتبررسیqueryدایناميکهای
هاحملهازمحدودیتعدادشناسایی
دهدتشخيصراورودینوعبودننامناسببررسی
روش هایجلوگیری
روشهای دفاع
حمالت SQL
مقدمه
![Page 25: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/25.jpg)
(WebSSARI 3:
ازپشتيبانیPHP
کدپذیرآسيبهایقسمتعالمتگذاری(runtime guard)
پذیرآسيبهایدرقسمتپاکسازیتوابعدادنقراربانامعتبراطالعاتکنترل.
(Java 4Static Tainting:
کردنپيداجهتایستاطوربهکدبررسیtaint
ورودییاستفادهزمانشناساییجهتاطالعاتیجریانبررسیtaint.
روشایراد:
شدهشناختهساختارهایشناساییSQLIA
توليدfalse positiveزیاد
(ادامه)SQLIAروش های جلوگيری
روش هایجلوگیری
روشهای دفاع
حمالت SQL
مقدمه
![Page 26: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/26.jpg)
(ادامه)SQLIAروش های جلوگيری (SecuriFly 5:
زبانازاستفادهPQL
هادادهجریانبررسی
هایورودیپاکسازیtaintحمالتتوسطسيستمدیدنآسيبازقبل
(SQL 6DOM:
دادهپایگاهکردنکپسوله
فایلازاستفادهSQLDOMبررسیجهتqueryایجادجایبهqueryتوسط
.رشتهسرییکالحاق
روش هایجلوگیری
روشهای دفاع
حمالت SQL
مقدمه
![Page 27: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/27.jpg)
مقایسه روش های جلوگيری
روش هایجلوگیری
روشهای دفاع
حمالت SQL
مقدمه
![Page 28: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/28.jpg)
SQLIAروش های تشخيص
SQL Guard
SQL Check
Proxy filtering
SQLrand
CANDID
IDS
Java Dynamic Tainting
AMNESIA
Tautology Checker
حمالت SQL
مقدمه
روشهای دفاع
روش هایپیشگیری
روش هایتشخیص
![Page 29: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/29.jpg)
SQLIAروش های تشخيص
(SQL 1Guard
پویاوایستاتحليلدارای
درستهایورودیبرایمدلایجاد
مدلباکاربرورودیمقایسه
(SQL 2Check
قبلروشمشابه
طراحتوسطمستقلطوربهمدلایجاد:تفاوت
حمالت SQL
مقدمه
روشهای دفاع
روش هایپیشگیری
روش هایتشخیص
![Page 30: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/30.jpg)
(ادامه)SQLIAروش های تشخيص (Proxy 3filtering
امنيتیمشیخطتوصيفزبانتوسطمحدودیتاعمال(SPDL)
روشایراد:human-base
(SQLrand 4
کليدیکلماتجایبهتصادفیدستورالعملازاستفادهsqlدادهپایگاهدرآنهاتبدیلو
proxyتوسط filter،کليدیکلماتبهsql
ازاستفادهبدليلزیادسربارکليد،ازاستفاده:روشایرادproxy
حمالت SQL
مقدمه
روشهای دفاع
روش هایپیشگیری
روش هایتشخیص
![Page 31: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/31.jpg)
(ادامه)SQLIAروش های تشخيص (IDS 5
ماشينیادگيریوکاویدادههایتکنيکازاستفاده
شدهیادگرفتهمدلازاستفادهباحملهتشخيص
آموزشیمجموعهبهوابسته
(Java 6Dynamic Tainting
کردنپيداجهتکدبررسیtaintاجرازماندر
ازاستفادهflagورودیگذاریعالمتبرایtaint
حمالت SQL
مقدمه
روشهای دفاع
روش هایپیشگیری
روش هایتشخیص
![Page 32: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/32.jpg)
(ادامه)SQLIAروش های تشخيص
(CANDID 7
جاوازبانبرای
ساختارتشخيصqueryروشباdynamic candidate evolution
نویسبرنامهنظرموردساختارباکاربرکدمقایسهباحملهتشخيص.
حمالتتشخيصجهتمناسببسيارsql
(Tautology 8Checker
یحملهتشخيصجهتروشیtautology
حمالت SQL
مقدمه
روشهای دفاع
روش هایپیشگیری
روش هایتشخیص
![Page 33: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/33.jpg)
(ادامه)SQLIAروش های تشخيص
(AMNESIA 9
پویاوایستاتحليلدارایومدلبرمبتنیروشی
درستجوهایوپرساساسبرمدلایجاد:ایستاتحليل
مقایسه:پویاتحليلqueryمدلباکاربر
حمالتمقابلدرخوبواکنشSQLI
آموزشیمجموعهبهوابسته
حمالت SQL
مقدمه
روشهای دفاع
روش هایپیشگیری
روش هایتشخیص
![Page 34: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/34.jpg)
برخی روش های دیگر
1) PHPMiner
2) Ardilla
3) SUSHI
4) WASP
5) SQLPro
6) MUSIC
7) SQLUnitGen
8) String Analyzer
9) firewall
حمالت SQL
مقدمه
روشهای دفاع
روش هایپیشگیری
روش هایتشخیص
![Page 35: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/35.jpg)
مقایسه روش های تشخيص
حمالت SQL
مقدمه
روشهای دفاع
روش هایپیشگیری
روش هایتشخیص
![Page 36: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/36.jpg)
نتيجه گيری
عدم تشخيص یا جلوگيریstored procedure روش هادر اکثر
تشخيص و جلوگيریtautology attackدر اکثر روش ها
با توجه به مطالب گفته شده حمالتSQLIA همواره وجود دارد بنابراین ما باید با به روز نگه
کنيمداشتن سيستم های حفاظتی و استفاده از شيوه های جدید امنيت پایگاه داده را حفظ
حمالت SQL
مقدمه
روش های دفاع
روش هایپیشگیری
روش هایتشخیص
نتیجه
![Page 37: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/37.jpg)
مراجع
1. Amirmohammad Sadeghian, Mazdak Zamani, Azizah Abd. Manaf, “A Taxonomy
of SQL Injection Detection and Prevention Techniques”, International
Conference on Informatics and Creative Multimedia, IEEE, 2013.
2. William G.J. Halfond, Jeremy Viegas, and Alessandro Orso , “A Classification of
SQL Injection Attacks and Countermeasures “, College of Computing Georgia
Institute of Technology,IEEE ,2006 , Pages:1-11
3. WWW. wikipedia.org.
![Page 38: Data Base Security (SQL Injection Attacks)](https://reader033.vdocument.in/reader033/viewer/2022042506/58719aec1a28ab044e8b5a43/html5/thumbnails/38.jpg)