الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Bypassing Oracle Dbms_assert

Featured Replies

بتاريخ:

ماهو Bypassing Oracle dbms_assert؟؟؟؟


الســـــــــلام عليكم ...........................................................
كما تعودت ان اقدم المعلومات الجديدة المتعلقة بالأمن قرأت موضوعين من خلال التجول في المواقع والموضوع حساس وهو متعلق بتجاوز الحزمة dbms_assert
وهي موجودة في الإصدار 10g .

خلاصة الموضوع :
أن هذه الحزمة يمكن تجاوزها باستخدام علامات الاقتباس الثنائية (")
مما يؤدي لفضح البيانات الحساسة والتلاعب بها وغير ذلك.

لذلك سوف اربط الموضوعين على اساس
- تعريف الحزمة.
- طريقة تجاوز الحزمة.
- الحل لتجنب هذه المشكلة .

المقال الأول :

خادم قاعدة بيانات اوراكل يستخدم بشكل واسع خادم قاعدة البيانات العلائقية لمشاريع كل
الحجوم , لكي تمدد الوظيفة لإدارة قاعدة البيانات تم عمل حزم إضافية مستعملة بخادم قاعدة البيانات هذه الحزم الإضافية تحتوي على (Functions & procedure) متعدده

بعض من هذه الحزم في خادم قاعدة البيانات هي dbms_assert

تعريف بالحزمــــــــــة:
وهي تزود بآلية مركزية من حيث الإدخال . وتكون ممكنه بواسطة مستخدم او مصادر غير أمنة ويمكن ان تفحص لـ( (SQL injection stringsونوع اخر من الهجمات العنيفة

وهذه الوظيفة تعمل فحص لإدخال القيم لكي يتوافق مع الخصائص الأساسية لأسم sql المشروط . والاسم المشروط يمكن ان يكون من عدة اسماء بسيطة تمثل (schema, objects, and database links) وهي تضمن ان العنصر لايحتوي
على (meta-characters) مثل علامة (-) او (').

الضعف قد ابلغ عنه في بعض الوظائف المتضمنه للحزمة وسبب هذا الضعف يأتي نتيجة
طريقة (Functions & procedure) الموجودة في الحزمة .

طريقة تجاوز الحزمة :

الوظيفة verify input. QUALIFIED_SQL_NAME في الحزمة الضعيفة يمكن تجاوزها عن طريق إرفاق علامات الاقتباس الثنائية(") ولذلك الشخص المهاجم البعيد ان يدخل استعلامات sql ماكرة ويعالجها بواسطة خادم قاعدة البيانات .

المهاجم او المعتد على قاعدة البيانات مع حدود صلاحياته يستطيع ان يستغل هذا الضعف
بارسال سلسلة مصنوعة بعناية كبيرة تتكون من( (characters and queries مرفقة بين
علامات الاقتباس الثنائية ونتيجة لهذه السلسلة الماكرة يمكن ان تنفذ الاستعلامات في الخادم مما يؤدي لفضح البيانات الحساسة ويمكن التلاعب في البيانات وتعديله

المقال الثاني :


قام احد الباحثين في امن نظام الاوراكل بأعلام شركة الاوراكل عن بعض المشاكل المتعلقة باستخدام packages ولم تمنعه الاوراكل من نشر هذه المعلومات
وذلك حسب قولها (“Oracle sees no problem with your publication of the white paper.”)

تعريف بالحزمــــــــــة:
لحماية حزم نظام الاوراكل PL_SQL قامت اوراكل في الإصدار 10G بتعريف حزمة جديدة تدعى الحزمة dbms_assert وهي تشمل الوظائف التالية :
ENQUOTE_LITERAL
ENQUOTE_NAME
NOOP
QUALIFIED_SQL_NAME
SCHEMA_NAME
SIMPLE_SQL_NAME
SQL_OBJECT_NAME

طريقة تجاوز الحزمة :

وموضوعنا متعلق بـ DBMS_ASSERT.QUALIFIED_SQL_NAME
توجد طريقة لتجاوز الحزمة dbms_assert وهي تعتمد على
استعمال بعض البارميترات المحترفة بين علامات الأقتباس .قد تمكنك من تجاوز
عملية تصديق الإدخال لـلحزمة dbms_assert وإدخال كود sql .


لتصبح الأمور اكثر وضوحا لنأخذ الأمثلة
مثال بدون استخدام الحزمة dbms_assert:

نعمل procedure يأخذ باراميتر TABLENAME وينفذ من خلال جملة dynamic SQL

post-30456-1173199904.jpg


post-30456-1173199965.jpg

مثال باستخدام الحزمة dbms_assert(ولازالت ضعيفة):
الان يتم تعقيم عملية إدخال المستخدم بواسطة dbms_assert.qualified_sql_name.

post-30456-1173200101.jpg

الان نمرر الجدول 'CAT' كباراميتر وكل شيء سيعمل حسب المتوقع

post-30456-1173200154.jpg

الان نحاول إدخال كود إضافي

post-30456-1173200234.jpg

من هنا يتضح طريقة تقنية عمل DBMS_ASSERT
من الملاحظ ان dbms_assert.qualified_sql_name قامت بإلقاء الخطأ وتجنب تنفيذ
dynamic SQL

هنا خلاصة الموضوع
لنقوم الان بإدخال اسم الكائن في علامات اقتباس ثنائية (")

post-30456-1173200331.jpg

والمفاجأة انه يعمل وبذلك يتم تخطي هذه الحزمة باستخدام علامات الاقتباس الثنائية .وبذلك يستطيع مهاجمون الداتابيز بتخطي هذه الحزمة بهذه الطريقة وفعل الكثير من الكوارث

الحل(لتجنب المشكلة) :
ينصح لتجنب الخطر يجب سحب صلاحية
1 -CREATE PROCEDURE
2ALTER PROCEDURE –
وذلك لتفادي عملية تصعيد الامتياز بإدخال ((PROCEDURES&FUNCTIONS


اتمنى ان تعـــــــــــــــــــــ الفائدة ـــــــــــــــــم للجميع وتحياتي .......................

وهذا الملــــــــــــــــــف

bypass_dbms_assert.pdf

تحياتي

بتاريخ:

موضوع رائع يا مبدع

بتاريخ:

موضوع جميل بس يدوخ الراس

شكرا جزيلا لك

بتاريخ:

مشكور اخي وجزاك الله خيرا على هذا الموضوع وجاري الإطلاع والظاهر انه يدوخ شوي كما ذكرت الأخت عزه
تحياتي

بتاريخ:

The reason Oracle sees no problem with the release of the paper is that for your technique to work the DBMS_ASSERT.QUALIFIED_SQL_NAME has to be used in the wrong context; you simply wouldn't use QUALIFIED_SQL_NAME in this manner - i.e. within quotes. I've just had a quick look through the SYS packages and find no instance of DBMS_ASSERT.QUALIFIED_SQL_NAME being used this way. If there is such a case, in other words I've missed it, then it would be a flaw in the package/procedure/function itslef and not a problem with DBMS_ASSERT - with the fix being to use the correct DBMS_ASSERT function instead of QUALIFIED_SQL_NAME or alternatively use a bind variable.  

بتاريخ:
  • كاتب الموضوع

مشكورين للأطلاع على الموضوع.........................

حصلت علـــــــــــــى شرح مبسط للغرض من الـ(functions ) التابعة للحزمة dbms_assert

ENQUOTE_LITERAL
ENQUOTE_NAME
NOOP
QUALIFIED_SQL_NAME
SCHEMA_NAME
SIMPLE_SQL_NAME
SQL_OBJECT_NAME



dbms_assert.doc

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.