Muayad
24 posts

Muayad
@0xMu4
Penetration Tester | CRTE | CRTO | eWPTXv2 | eCPPTv2 | EJPTv2
เข้าร่วม Eylül 2024
93 กำลังติดตาม17 ผู้ติดตาม

الحمدلله اليوم اكملت كورس الـCRTO 🔥
الكورس كان ثري جدًا وطور مهاراتي في الـRed Teaming بشكل كبير، وأعتبره أحد أفضل الإنجازات اللي حققتها حتى الآن
Thanks a lot @_RastaMouse !

العربية

الحمد لله نجحت في اختبار
Certified Red Team Operator (CRTO)
كانت تجربة ممتعة ومليئة بالتحديات، تعلمت فيها الكثير، وفخور بهالخطوة اللي أعتبرها إنجاز مهم في مسيرتي في المهنية
Alhamdulillah,
I’ve pass the Certified Red Team Operator (CRTO) exam!
It was a fun and challenging journey that really pushed my skills in adversary simulation and tools like Cobalt Strike. I learned a lot and consider this a meaningful step forward in my cybersecurity journey.


@PTShatha511 لو تركيزك بيكون على الويب بشكل كبير CBBH بتكون كويسه لكن الافضل تكون في منطقه محايده بين المجالات و CPTS بتكون الانسب
العربية

الحمد لله، سعدت بحصولي على شهادة (eWPTXv3) المقدمة من @INE
I'm excited to announce that I've achieved the Web Application Penetration Tester eXtreme (eWPTXv3) certification from @INEsecurity


الحمد لله، اول اسبوعين لنا انا و @Omarzzu على منصة @Bugcrowd وبتوفيق الله قدرنا نكتشف ثغرات حرجة.
تجربة الترياج كانت سلسة واحترافية.
our first two weeks on @Bugcrowd (me & @Omarzzu)
and we kicked it off strong by discovering critical vulnerabilities
Smooth and professional experience so far.
A solid start, and we’re just getting started



كيف قدرت اخترق واتحكم سيرفر جهة حساسة بشكل كامل.
مسيتم بالخير اليوم بتطرق لأحد الثغرات الي اكتشتفه والي كانت عبارة عن خطأ في nginx والي من خلاله وصلت الى RCE او تحكم كامل على سيرفر الجهة
طبعا حرصا على هوية الجهة عدلت على السناريو بعض الشيء
نسمي بالله ونتطرق للثغرة بشكل مختصر
اثناء فحصي للجهة لاحظت شيء غريب والي هو انه بعض المسارات ترجع بيانات بالرغم ان المسار غير صحيح
على سبيل المثال أحد المسارات الموجودة
GET /static/main.js
لكن اذا حذفت السلاش "/" مثل كذا
GET /staticmain.js
الي راح يصير بيرجع نفس الرد من السيرفر
الأمر كان غريب والي بسببه فكرت وبحثت عن سبب التصرف الغريب هذا
وبعد بحث واستنتاج عن السبب هذا اتضح لي انه عبارة عن خطأ في اعدادت Nginx,
وعمر كيف الخطأ قاعد يصير؟
والسبب يرجع لغلطة في اعدادت nginx.conf ، (ملف اعدادات) وهذا يخلي السيرفر يستقبل المسار بشكل خاطئ
وعشان تكون الصورة اوضح
السيرفر كان يعامل staticmain.js/ كأنه static/main.js/
لأنه أول ما يشوف static/ يضيف / بعده بشكل مباشر وتصير /static/
بسبب alias operation الي قاعدة تصير بمجرد ماتكتب static/ راح يضيف / بعده بشكل مباشر وتصير /static/
فتصير كأنك كتبت static/main.js/
# استغلال الخطأ الى ثغرة حرجة
وهذا الشي يفتح لنا باب لثغرة تسمى ب off-by-slash اللي تقدر من خلالها ممكن توصل لملفات حساسة.
مافهمت عمر كيف ممكن الخطأ هذا يسببب بثغرة توصل الى ملفات حساسة؟
ممكن ماوضحت الفكرة للبعض لكن الحين بنعرف كيف الخطأ البسيط هذا يسبب بثغرة بحرجة
وعشان تكون الصورة اوضح هذا مثال على الأعدادات المصابة الى nginx
والصورة توضح إعدادات Nginx كانت معرفه alias على static/ بدون سلاش "/" بنهاية المسار
ولكن بعملية ال alias او عملية تحويل المسار يتم تحويلة الى /static/ (يتم أضافة / بالنهاية وتصير القيمة /static/)
فصار السيرفر أول ما يشوف أي مسار يبدأ بـ static/ يضيف بعده / بشكل تلقائي،
فـ اذا ارسلنا /staticmain.js/ اعتبره كأنه داخل مجلد static ويفسّره على أنه static/main.js/. وهنا تصير ثغرة off-by-slash
وهنا يصير الخطأ الفادح انه السيرفر يستقبل المسار بدون / بالنهاية لكن يتم اضافة / بعملية ال alias (عملية تحويل المسار)
# استغلالي للثغرة والوصل الى RCE وتحكم كامل بالجهة
بعد مافهمت وش قاعد يصير وكيف قاعد تتم العملية هذي بال server-side
عرفت انه كان بأمكاني اطلع برا السياق المحدد بالمسار واوصل الى ملفات داخلية
مافهمت عمر شلون تصير الطريقة؟
بما ان ال / يتم اضافته بعد static/ بشكل مباشر معناته يمدي نضيف /.. ونطلع من المسار المحدد
ولأن عملية ال normalization تتم بعد URI rewriting via alias في nginx
بالتالي من الممكن نوصل لملفات داخلية بأستغلال الخلل هذا
ومالكم بالطويلة
بعد مافهمت الي قاعد يصير اول شيء جاء ببالي اني اسوي fuzzing او تخمين مسارات بالشكل هذا static../FUZZ/
وسبب اني بسوي fuzzing بالشكل هذا static../FUZZ/
وليس كذا static/../FUZZ/
لأنه مثل ماشرحت فوق انه يتم اضافة / بشكل مباشر بعد static/ لذلك سويت fuzz بالطريقة هذي
وفعلا بعد ماسويت fuzzing وصلت لعدة نتائج وأغلبه كان ملفات لأعدادات مافيها شيء حساس
ولكن احد الملفات رجعت بيانات ولكن مب اي بيانات (;
والي كانت تسرب الباسورد للأدمن مع اسم المستخدم ك clear-text!
باللحظة هذي كانت فرحة قوية الى ان جربت أستعمل المعلومات بموقع الجهة ولكن للأسف ماكانت مسجلة.
بعد العديد من المحاولات البائسة, فكرت انه ممكن يكون الحساب لخدمة داخلية فقط ولا أقدر استفيد منه
لكن ماوقفت وحاولت اجيب اي login portal تخص الجهة بكل الطرق واجرب فيها المعلومات الي وصلت له.
وفعلا بعد بحث ورا بحث, لقيت احد ال login portals من خلال google dorking وجربت ال Admin credentials
والنتيجة؟ بالفعل قدرت ادخل ال Portal, والفرحة كانت بعد ما شفت ال Control Panel كان فيها Command shell
غير الصلاحيات الحساسة الأخرى الي وصلت له يكفي Shell page as PoC (;
والي من خلالة كنت قادر اتحكم بسيرفر الجهة بشكل كامل (;




العربية

🏆 HTB CWEE — Achieved
🌍 Rank #90 globally
🇦🇪 Possibly the 1st Arab to earn it
10 days of real-world web exploitation:
✔️ Black-box & white-box testing
✔️ Code audits, custom exploits
✔️ No shortcuts, no MCQs — just skill
#HackTheBox #CWEE #BugBounty #RedTeam


English

الحمد لله، فخور بتحقيقي المركز الأول في منصة مكافآت الثغرات للربع الرابع لعام 2024،
كأكثر باحث اكتشافًا للثغرات، وأيضًا أكثر باحث اكتشافًا للثغرات الحرجة
شكرا @BugBountySA @SAFCSP على دعمهم لرفع الكفاءات الوطنية 🇸🇦
منصة مكافآت الثغرات@BugBountySA
ألف مبروك لمتصدر الربع الرابع من عام 2024👏🏻👏🏻 عمر الزغيبي🏆 جائزة 5,000 ريال💰 وسام المُتصدر🎖️ #مكافآت_الثغرات
العربية

كيف قدرنا نكتشف ثغرة؟
🔴Secondary Context Leads to Full Company Takeover
كيف قدرنا نوصل انا و لا
🔺 تحكم كامل على اكثر من 3,000 الاف شركة وجميع الفروع المسجلة
🔺جميع بصمات وهويات الموظفين والمستخدمين
🔺 وصول وتحكم كامل على جميع حسابات المستخدمين
🔺اضافة بيانات حساسة الى قاعدة البيانات
🔺وصول الى جميع الدومينز الداخلية
🔺 وكيف قدرنا نتخطى الثغرات السابقة من خلال التكنيك هذا
نسمي بالله ونبدا
خلونا بالبداية نشرح كيف قدرنا نكتشف الثغره قبل كل شيء عشان تكون الصورة واضحة
اثناء فحصنا للموقع قدرت اني اسبب خطأ من خلال تلاعبي بال Request وطلع لي Error غريب بال Response مثل مانلاحظ
مثل مانلاحظ ان ال path بال Response مختلف تماما عن ال path الي موجود بال Request
من اول نظرة عرفنا انه هذا ال path الي يتم استعماله ك Backend API فالعملية الي تصير نفس كذا
اول سؤال جاء ببالي هل ممكن اني اوصل الى ال Backend API ؟
طيب عمر قبل سؤالك ذا وش الفايده اذا وصلت الى ال backend API؟
بكل اختصار دايما ال Backend API يكون عباره عن Internal domain
بمعنى اذا قدرت توصل له يمديك توصل الى مسارات وبيانات واشياء مره كثيره وهذا الي راح نشوفه بالمقالة (;
في اول محاولتنا الى الوصول الى ال Backend API حاولنا انه نسوي traversal بمعنى انه نحاول نخلي ال Backend يوصله path محدد
ولكن للأسف كان فيه WAF يمنعنا من انه نسوي Path traversal
وهنا حاولنا ندور تخطي بأكثر من طريقة ولكن للأسف كان ال WAF يمنعنا
كملت عملية البحث وقلت خل اشيك على ال JS Files شفت بال JS files ال domain معرف (الي فيه WAF)
ولكن لقيت ايضا API domain اخر معرف وقررنا نشيك عليه
بعد ماشيكت عليه طلع نفسه نفس ال API الأساسي ولكن ماكان فيه أي WAF!
على طولت رحت اجرب اني اسوي Path traversal
تكملة ⬇️




العربية














