1 Oracle من السهل تقديم Oracle باعتبارها قاعدة بيانات RDBMS مبكرة نسبيًا تتمتع بحصة سوقية كبيرة نسبيًا وغالبًا ما تستخدم في بعض قواعد البيانات الكبيرة جدًا. بالإضافة إلى دعمه الجيد للعديد من لغات SQL، فإنه يوفر أيضًا مجموعة متنوعة من الحزم الغنية والإجراءات المخزنة، كما يدعم إنشاء جافا والمكتبة. توفر هذه الوظائف القوية راحة جيدة للقرصنة.
لدى Oracle نفسها العديد من الحسابات الافتراضية والعديد من الإجراءات المخزنة التي تم إنشاؤها بواسطة النظام. العديد من الحسابات الافتراضية مفتوحة للجمهور في السنوات القليلة الماضية، تم إصدار العديد من ثغرات Oracle، بما في ذلك التجاوز وSQL، وهناك العديد من العيوب بما في ذلك الحقن. هنا، تعتبر ثغرة حقن SQL مهمة بشكل خاص، لأنه في Oracle، بدون إضافة كلمات رئيسية أخرى AUTHID CURRENT_USER، يتم تشغيل العملية المخزنة التي تم إنشاؤها كمنشئ عند التشغيل، ولا يتمتع الجمهور بإمكانية الوصول إلى هذه العمليات المخزنة، لذلك إذا كان هناك حقنة في العملية المخزنة المضمنة، ومن السهل على المستخدمين العاديين الترقية إلى أذونات نظام Oracle. لدى Oracle نفسها العديد من الحسابات المضمنة، بعضها يحتوي على كلمات مرور افتراضية ولها أذونات CONNECT، وبهذه الطريقة، إذا لم يكن منفذ Oracle محميًا بجدار حماية ويمكن توصيله عن بُعد، فيمكن استخدام الحساب الافتراضي إذا قمت بالتسجيل أدخل إلى النظام عن بعد ثم استخدم SQL للعملية المخزنة في النظام لإدخال ثغرة أمنية، وسيتعطل النظام. بالطبع، يتطلب تسجيل الدخول إلى Oracle معرف SID، ولكن ليس من الصعب أن يقوم tnslintener الخاص بـ Oracle بتعيين كلمة مرور بشكل افتراضي، حتى تتمكن من استخدام tnscmd .pl، يستخدم أمر الخدمات لمعرفة معرف الأمان (SID) للنظام (في الإصدارات الأحدث، تم إصلاح هذا الخلل وهذا أيضًا وضع كلاسيكي جدًا لغزو Oracle).
2 الخلفية التقنية لاختراق الويب أوراكل
جداول نظام أوراكل الغنية. يتم تخزين جميع المعلومات الموجودة في Oracle تقريبًا في جداول النظام، والحالة الحالية لتشغيل قاعدة البيانات، ومعلومات المستخدم الحالية، ومعلومات قاعدة البيانات الحالية، والمعلومات المتعلقة بقواعد البيانات والجداول التي يمكن للمستخدمين الوصول إليها... جداول النظام هي الجزء الأساسي من قاعدة البيانات بأكملها تقريبًا. الحصول على كافة المعلومات عن طريق الاستعلام عن جداول النظام المطلوبة بشكل عاجل. على سبيل المثال، يحتوي خيار sys.v_$ على بعض المعلومات حول قاعدة البيانات الحالية، مثل ما إذا كانت تدعم Java، وما إلى ذلك، ويحتوي all_tables على جميع معلومات الجدول، ويحتوي all_tab_colmuns على جميع معلومات الأعمدة، وما إلى ذلك، مما يوفر لنا طريقة كبيرة جدًا للحصول على المعلومات، سيتم ربطها لاحقًا بوصف كيفية استخدام جداول النظام للحصول على معلومات حساسة.
من بين نقاط الضعف المختلفة في Oracle، من الضروري الحديث عن حقن الإجراءات المخزنة. في الواقع، لا يوجد أي غموض. تتلقى الإجراءات والوظائف المخزنة أيضًا مدخلات المستخدم ثم ترسلها إلى خادم قاعدة البيانات لتحليلها وتنفيذها تم تحديده إذا تم إنشاء المخطط في سلسلة SQL وتم تنفيذه، فمن السهل مزج البيانات والأوامر، مما يؤدي إلى إدخال SQL. ولكن اعتمادًا على مكان إجراء الحقن، تختلف أيضًا طبيعة ثغرة الحقن. تستخدم Oracle PL/SQL، وتحدث الثغرة الأمنية في لغات DML مثل Select نظرًا لأنها لا تدعم تنفيذ لغات متعددة، إذا كنت تريد تشغيل لغاتك الخاصة مثل GRANT DBA TO LOVEHSELL ولغات DDL الأخرى. ، يجب عليك إنشاء وظائفك أو الإجراءات المخزنة الخاصة بك، إذا لم تكن لديك الأذونات ذات الصلة، فيمكنك أيضًا استخدام حقن المؤشر واستخدام حزمة dbms_sql للتحايل على القيود. معظم عمليات الحقن هي عمليات الحقن المحدودة المذكورة أعلاه، ويجب عليك الاعتماد على بعض الحزم أو المؤشرات الأخرى التي أنشأتها بنفسك لتحقيق غرض زيادة الأذونات، ومع ذلك، لا تزال هناك بعض نقاط الضعف الشائعة جدًا ولكن بيئة الحقن فضفاضة جدًا، وهو أمر مستخدم الإدخال هو عبارة عن كتلة pl/sql مجهولة توضع بين البداية والنهاية، وفي هذه الحالة يمكن حقنها مباشرة في كلمات متعددة، دون أي قيود تقريبًا لقد أعادت تقنية الحقن الخاصة بنا هذا التألق.
حسنًا، ما ورد أعلاه هو بعض تقنيات Oracle الهجومية، ولكن في العديد من البيئات الحالية، تكون خدمات الويب مفتوحة للعالم الخارجي، وتكون قاعدة بيانات رئيس الواجهة الخلفية محمية بجدار حماية، ومن المستحيل فقدان الكثير من المعلومات التفصيلية لقاعدة البيانات ولم يعد من الممكن تسجيل الدخول مباشرة إلى قاعدة البيانات قيد التشغيل. في هذا الوقت، حان الوقت للتفكير في استخدام الثغرات الأمنية المتوقفة على الويب لمهاجمة قاعدة البيانات الداعمة. الآن دعونا نلقي نظرة على كيفية تطوير الحقن في بيئة ويب Oracle! يمكن أن تعمل Oracle بشكل جيد في بيئات الويب المختلفة، وتأثير بيئات الويب المختلفة على عمليات الحقن لدينا ليس كبيرًا لا تتم تصفية المعلمات الواردة على الإطلاق، ولكن نظرًا لأن لغات .net وjsp هي لغات فئات قوية، فحتى إذا لم تتم تصفية لغة SQL عندما يتعلق الأمر بالحقن الرقمي، فقد تحدث أخطاء عند قبول المعلمات سبب ظهور الحقن تحتوي فئة السلسلة على المزيد من المعلمات. في بيئة php، سيتم الهروب من كل شيء كـ '، وفي بيئة أوراكل ' لن يتم الهروب (يجب أن يكون الهروب الصحيح في بيئة أوراكل '')، ولكن في منطقتنا، يمكن استخدام "في خطاب الحقن" يتلف من خلال تحويله إلى 'لذلك لا يمكن استخدامه أثناء الحقن'. باستثناء أنه لا توجد قيود في بيئة الويب. فيما يتعلق بقاعدة البيانات، إذا تم تنفيذ الخطاب في وضع المعلمة، فلا يمكن إدخاله إلا إذا تم استخدام وضع اتصال السلسلة (لأن وضع اتصال السلسلة بسيط نسبيًا، وبسبب بعض الأسباب التاريخية، غالبًا ما يفضل العديد من المبرمجين هذا النموذج، سيتم أيضًا تقسيم وضع اتصال السلسلة إلى نوعين. المعلمات موجودة في كلمات DML مثل التحديد والتحديث والإدراج، وتكون المعلمات في كتلة pl/sql المجهولة الخطأ، ومن ثم يمكننا بسهولة الحكم على فئة الخطاب الحالي من خلال الخطأ، وهو ما سيتم الحديث عنه لاحقاً. إنه نادر نسبيًا في الكتلة المجهولة pl/sql، لكن لا يُستبعد أنه لا يوجد حد لمثل هذا الحقن، حيث يمكنك تنفيذ محادثات متعددة والقيام بأي شيء، وهو ما لا يختلف عن تسجيل الدخول المحلي.
3 أفكار أساسية لـ Oracle Web Hacking
يتحدث الجزء التالي عن كيفية تحديد الهدف. إن تحديد معلمات الحقن أمر متروك للجميع. والشيء الرئيسي هو كيفية تحديد ما إذا كانت قاعدة البيانات تنتمي إلى Oracle يدعم - تفسير الفئة، لكنه لا يدعم التنفيذ المنفصل للعديد من الكلمات، لدى Oracle العديد من جداول النظام، مثل all_tables، يمكنك أيضًا تحديد ما إذا كانت تنتمي إلى Oracle يمكن استخدامها أيضًا لتحديد اللغة، مثل utl_http.request، ويمكن أيضًا استخدام التفاصيل الصغيرة لتمييز الأنظمة. على سبيل المثال، || هو رمز ربط في Oracle، ولكن ليس في قواعد البيانات الأخرى |chr(123)=chr(123)|. |chr(123) إذا كان من الممكن تنفيذه بنجاح، فيجب أن يكون Oracle. بالإضافة إلى ذلك، لا تعالج بعض البرامج النصية رسالة الخطأ عند حدوث خطأ في استعلام قاعدة البيانات، ويمكن أن تتسرب أيضًا قاعدة بيانات الدعم الحقيقية يمكن رؤيتها بوضوح.
الشيء التالي الذي يجب تحديده بشكل عاجل هو نوع نقطة الحقن، عادةً ما تكون المعلمات التي ندخلها إما رقمية أو مجرد حرف (ما يسميه العديد من الأشخاص الآخرين حقن نوع البحث يجب أن يصنف في الواقع على أنه حرف). فئة الأرقام، لا تفكر في أي شيء على الإطلاق، فمن السهل جدًا إضافة أحرف تفسيرية لجعل الكلام مغلقًا بدقة. إذا كانت فئة الأحرف، فسيتعين عليك التفكير في كيفية جعل الكلام بأكمله دقيقًا. عادةً ما يتم إضافة "و" - أحرف الحقن هذه لتنظيم حالة الحقن الخاصة بك. في بعض المواقف المعقدة، مثل ظهور المعلمة في عدة كلمات SQL ومنطق، سيتعين عليك هيكلة كلمات الحقن التي تناسب الموقف بعناية. تذكر أننا نحتاج فقط إلى بيئة كاملة يمكنها ترتيب أوامر SQL المختلفة بسهولة.