





السمعة:
- إنضم15 سبتمبر 2023
- المشاركات 263
- الحلول 5
- مستوى التفاعل 303
- النقاط 63
Broken Access Control
ما نوع تلك Vulnerability ؟ قبل أن نحدد ذلك، دعونا نرى أولاً ما هو access control بحد ذاته.
Access control : هو كيفية منح تطبيق الويب للمستخدمين إمكانية الوصول إلى المحتوى وfunctions ، لاحظ أنه يتم ذكره لبعض المستخدمين وليس كلهم.
Access control هو جزء من التطبيق يقرر من يحصل على رؤية أي محتوى ومن لا يحصل،أحيانًا يمكن أن يكون Access Control مرتبطًا بشكل صارم بالـauthorization و Session.
وفي بعض الحالات، قد يكون حتى نفس Vulnerability الذي نواجهه في Broken authentication ، والتي غطيناها بالفعل ومع ذلك، هناك المزيد.
بمجرد أن غطينا الBroken authentication، كان تركيزنا في الغالب على Break the session وتمثيل المستخدم.
Broken Access Control على الجانب الآخر، يمكن أن يستهدف Access Control أيضًا ليس فقط الجلسات ولكن على سبيل المثال، ملفات مختلفة أو Directory على الصفحة , ربما يكون بعض المستخدمين لديهم وصول إلى بعض الملفات الموجودة على الصفحة والآخرين لا يملكون.
إذا لم يتم تنفيذ Access Control بشكل صحيح، يمكننا أيضًا الحصول على وصول إلى تلك الملفات.
الأمر نفسه ينطبق على Directories.
ربما هناك بعض Directories التي تم تخصيصها فقط لاستخدام Admin وزيارتها، لكنها لا تملك تحكم في الوصول ويمكن زيارتها بسهولة عن طريق إضافة اسم Directory إلى الرابط.
هذا أيضًا Broken access control, vulnerability بالإضافة إلى ملفات مختلفة قد يسمح لنا أيضًا برؤية معلومات المستخدم الآخر.
الآن كل هذا مرة أخرى بسبب خطأ للمطورين.
إذا لم يتم تنفيذ Access Control بشكل صحيح، فقد تحصل على Broken Access Control vulnerability وقد يبدو أمرًا كهذا.
لنفترض أن لدينا موقعًا عشوائيًا يحتوي على function لاختيار ملف وربما تنزيله على جهازك.
يجب أن يكون لاختيار الملف التحكم الخاص به، يمكننا أن نفترض أن هذا الملف العشوائي مخزنًا في مكان ما على الخادم، لكن كذلك جميع الملفات الأخرى التي ليس لدينا خيار لتنزيلها. فهل قاموا بتنفيذ Filter جيد وصحيح سيسمح لنا فقط بتنزيل الملفات التي يقدمونها؟ حسنًا، إذا استطعنا معرفة ذلك جربنا شيئًا من هذا القبيل , ماذا لو كتبنا بدلاً من الملف الذي نريده /etc/passwd ماذا سيحدث؟
إذا حصلنا على إخراج ملف Credentials أو إذا قام بتنزيله إلى صفحتنا، لدينا مثال على Broken access control , لقد قمنا بتنزيل شيء يجب ألا نكون قادرين على تنزيله.
هذا النوع من Vulnerability يمكن أيضًا أن يُسمى بعبارة أخرى إشارة مراجع الكائنات المباشرة غير الآمنة, ويحدث هذا Vulnerability عندما يستخدم التطبيق user supplied input للوصول إلى objects directly , وسنرى المزيد من الأمثلة حول ذلك في الدروس العملية. لذا دعونا أولاً نبدأ بمنصة TryHackMe الخاصة بنا.
حسنًا، ها نحن هنا على منصتنا ولدينا تحدي Broken Access Control ، الذي هو المهمة رقم 18 الآن , كالعادة، أنصحك بقراءة جميع تحديات التحكم في الوصول المكسور، والتي في هذه الحالة هي المهمة رقم 17 والمهمة رقم 18 , وبالتالي اختصر الموضوع
ولكن الآن علينا متابعة المصادر الخاصة بنا وننتقل إلى هذا في وقت لاحق
رابط الآله
لنقم بتشغيلها ثم سأًعطيك عنوان ip لذا دعنا أولاً، نتصفح إلى هذه الصفحة عن طريق نسخ عنوان IP ولصقه هنا.
يمكننا أن نستنتج أن هذه parameter قد تكون لها علاقة بـ User ID، على سبيل المثال ربما تكون هذه parameter التي تساوي واحد مخصصة بشكل صارم لحسابنا noot , فماذا سيحدث إذا قمنا بتغييرها إلى اثنين؟
حسنًا، لا نحصل على أي شيء. ماذا سيحدث إذا قمنا بتغييرها إلى ثلاثة، على سبيل المثال؟
ما زلنا لا نحصل على أي شيء لنجرب تغييرها إلى الصفر , اضغط على Enter وها هو flag لقد حصلنا على flag من حساب مختلف، مما يعني أن لدينا مثالًا على ثغرة Broken Access Control في هذه الآلة الافتراضية
كان هذا سهلًا نوعًا ما كل ما علينا فعله هو تغيير هذا parameter هنا
ولكن كل هذا ممكن بسبب عدم تصفية إدخالنا بشكل صحيح من قبلهم ليس لديهم أي تحكم على هذا parameter فيما يتعلق بما يمكن للمستخدم القيام به بها , في تطبيقات الويب الحقيقية، يجب أن يتم تصفية هذا الإدخال بشكل جيد جدًا بحيث إذا حاولت تغيير session أو تغيير user ID، فإنه يعود فقط إلى حسابك الخاص , لا يسمح لك برؤية المعلومات من مستخدمين مختلفين وفي حالتنا، هذا هو flag الذي نحتاج إلى تحديده كإجابة.
flag{fivefourthree}
الآن دعونا نلقي نظرة على بعض الأمثلة الأكثر صعوبة قليلاً على آلتنا الافتراضية OWASP
دعونا نرى مثالاً آخر على ثغرة (IDOR), في الجزء السابق، رأينا مثالاً بسيطاً على Tampering مع Parameter واحدة لتغييرAccessing passwd With BAC
User ID أو لتمكيننا من رؤية Private information لمستخدم مختلف الآن، دعونا نرى ما هي الأمثلة التي يمكننا الحصول عليها لعدد OWASP BVA.
أول شيء أو أول مثال أريد أن أعرضه لك هو OWASP لدينا لذا دعونا ننقر على ذلك. owasp mutillidae II
وهنا، كالمعتاد، تحت نظام التشغيل 2013، سنجد هذه الVulnerability Insecure direct object reference التي تقول (IDOR) أو بعبارة أخرى، إنها ثغرة
هذا مثال على Vulnerability أظهرتها لك في الجزء النظري الآن دعونا نضعها في العملي لنذهب إلى أي منها لذا، على سبيل المثال، دعونا نذهب إلى Source viewer.
وفي هذه الصفحة البسيطة، لدينا اختيار view file المصدر وتخبرنا برؤية SOURCE FILE NAME , لاحظ أنه لا تظهر كل الملفات.
حسناً، لنختار أي منها على سبيل المثال، دعونا نذهب مع register.php
انقر على view file و يعطينا الإخراج السابق لهذا، فمن القياسي تماماً، ولكن مرة أخرى، تذكر من محاضرتنا النظرية
يجب أن نسأل أنفسنا السؤال، هل هذه الملفات التي لدينا في هذه القائمة هي فقط الملفات التي يمكننا قراءتها؟
لذا، فإننا intercept the request هنا وفي الأسفل هناك parameter باسم phpfile قيمته login.php
التي تحدد أي صفحة نريد، أن نعرف، حيث أننا لا يمكننا حقاً كتابتها هنا
لنرى ما إذا كان هذا سيعمل، إذا قمنا بتوجيه هذا request ، نضغط intercept is off ، والذهاب مباشرةً هنا , حسنا لدينا output لل etc/passwd/
وربما لديه بعض الشفرة التي تعالج هذه الصفحة.
ولكن يمكننا أيضاً أن نحاول الذهاب وتنفيذ Broken Access Control مباشرة هنا إذا كتبنا etc/passwd/ في هذا الParameter .
وهو نفس الأمر مع جميع الأمثلة الأخرى , لذا، على سبيل المثال، إذا ذهبنا إلى cookies هنا،
يمكننا مجددا كتابة etc/passwd/ هنا في هذه الصفحة
إذاً، هذا النوع من الثغرات ليس من الصعب تنفيذه بالطبع، قد يكون لديه بعض filters التي قد تحميه إلى حد ما وسنرى هذه filters في الجزء التالي مع مثال مختلف بإذن الله.
ومع ذلك، عادةً بمجرد وجود هذه الثغرة الأمنية، فمن المرجح ألا يكون لديها اي access control على الإطلاق
لذا، ستتمكن من الوصول إلى أشياء مختلفة يجب ألا تكون قادرًا على رؤيتها.
لنناقش مثالًا آخر في جهازنا الوهمي OWASP Broken wep-apps-cl1Ticket Price IDOR
لذا في الجزء السابقة، قمنا بمراجعة تحدي Idor حيث قمنا بتغيير الملف الذي نريد أن نقوم بتجربته.
تغيريه الى (/etc/passwd) وبهذه الطريقة قمنا بعرض الملف الذي لم ينبغي لنا الوصول إليه.
الآن دعونا نلقي نظرة على نوع آخر من التحديات داخل تطبيقنا BWAPP انقر على ذلك.
وكالعادة، دعونا نقوم بتسجيل الدخول باستخدامCredentials، التي هي bee و bug، وانقر على تسجيل الدخول.
لدينا مستويات الأمان الحالية مضبوطة على Low Level وسنتركها على هذا النحو
وسوف يوجهنا هذا التحدي، إنه تطبيق بسيط، يطلب كم عدد تذاكر السينما التي ترغب في طلبها، 15 يورو لكل تذكرة
وهنا يمكننا كتابة عدد التذاكر التي نريد طلبها على سبيل المثال، إذا كنت أرغب في طلب 10 منها وانقر على confirm،
سيخبرني أنني قد طلبت 10 تذاكر سينمائية وأن المبلغ الإجمالي المستحق من حسابك هو مئة وخمسون يورو أو ببساطة 10 مرات 15 يورو لكل تذكرة.
لذلك أول شيء سنفعله هو الضغط على intercept is off .داخل burp
وهذا هو request الذي نحصل عليه هنا وفي الاسفل يمكننا رؤية جميع المعلمات التي يتم إرسالها مع هذا request .
الآن، هذا ثابت نعرف أن سعر التذكرة هو 15.
يمكننا محاولة تغيير سعر هذه التذكرة بدلاً من 15 لنجعل سعر التذكرة يكون فقط يورو واحد ولنرى ما إذا كان سيعمل إذا قمنا بتقديم بارسال request
لنرى أيضًا كيف سيبدو هذا على مستوى الأمان المتوسط لنقم بالنقر فوق المتوسط ولنقم بتحديد الإعدادات.
ما زلنا قمنا بتشغيل اعتراضنا لنقم بإيقافه ولنعود إلى الصفحة.
والآن دعنا نرى كيف يتصرف تطبيقنا إذا قمنا مرة أخرى بتحديد عشرة تذاكر وننقر على تأكيد
كان لدينا للحصول على الناتج لقد طلبت 10 تذاكر سينمائية والمبلغ الإجمالي المطلوب هو مئة وخمسون يورو.
ولكن دعونا نرى، هل هناك أي فروقات في Request HTTP بمجرد أن قمنا Intercept ON.
دعونا مرة أخرى نحاول شراء 10 تذاكر ولنؤكد ذلك، وهذا هو طلبنا، ستلاحظ أنه لم يعد لدينا Parameter سعر التذاكر داخل طلبنا.
حسنًا، يمكننا أن نلقي نظرة على كمية التذاكر هذه. "ticket_quantity"
كمية التذاكر هي Parameter لعدد التذاكر التي نرغب في شرائها ونحن يمكن أن نفترض أنه ربما يمكن أن يكون هناك Parameter سعر التذكر التي يمكن تعيينها إلى سعر التذكرة الواحدة.
ربما يمكننا أن نحاول إدخالها بأنفسنا هنا ونرى ما إذا كانت ستعمل كما يمكننا رؤية، تتم فصل هذه Parameter بواسطة هذا الرمز &
لنجرب إذا كتبنا هذا الرمز ومن ثم سعر التذكرة يساوي واحد، لنجرب تعيينه ليكون مساويًا لواحد.
ticket_price=1&
لنرى إذا كان حقًا سيعمل إذا قمنا Resend this request , إذا أعدنا ها هو لقد جعلنا هذا يعمل بنجاح.
وبالنسبه الى high فهي كالمرحلة السابقة وتحتاج الى التخمين وقد لا تنجح بسبب ان الموقع عليه filter ولكن التجربه لا تخسر منها شئ وتطور المهارات
يرجى مراجعة الموضوع وتصحيح الاخطاء ان كان يوجد @King.Of.Noobs
المصادر هنا
المرفقات
-
1709627371197.png325.1 KB · المشاهدات: 381
-
1709630313342.png54.7 KB · المشاهدات: 126
-
1709725610449.png17.9 KB · المشاهدات: 129
-
1710252927868.png4.4 KB · المشاهدات: 132
-
1710253867534.png50.8 KB · المشاهدات: 128
-
1710259350211.png2.9 KB · المشاهدات: 130
-
1710263440375.png114.1 KB · المشاهدات: 124
-
1710263502048.png90.4 KB · المشاهدات: 331
التعديل الأخير بواسطة المشرف: