•Saleh Bakhat ~
•Saleh Bakhat ~

@i35

35 تغريدة 22 قراءة Mar 20, 2020
تحت هذه التغريدة سوف اتحدث عن اغلب تقنيات الويب التي من المحتمل ان تواجهها اثناء مهاجمة/تحليل تطبيقات الويب والتقنيات المستخدمة بشكل شاسع من ناحية العميل والخادم، وراح نتعرف على ماهو HTTP Protocol و الترميز (encoding).
HTTP اختصار الى HyperText Transfer Protocol يتيح لتطبيقات الويب التواصل بينها البين وجميع رسائل HTTP مكونة من request and response وأثناء اتصال HTTP يتبادل العميل والخادم الرسائل مما يعني ان العميل يرسل طلب request الى الخادم ويرد الخادم بالاستجابة response على هذا الطلب والعكس.
HTTP Header هو كل طلب او استجابة يتكون من رسالة تتكون من سطر او عدة اسطر وكل سطر يمثل معلومة معينة للسيرفر تسمي Headers .headers يمكن ان يكون request او response بعض headers يكون محدد وبعضها مشترك. عندما تقوم بزيارة موقع فإن المتصفح يقوم بإرسال headers للموقع على هذا الشكل.
سنتعرف على بعض انواع headers اللتي تكون في response and request.
Accept: المتصفح يخبر الخادم بانه سوف يستقبل الرد من الخادم مثل صور او ملفات او صفحات.
Cookie: يتم استخدامها لكي يتم التواصل بين الخادم والمتصفح بشكل موثوق.
Cache-Control: لكي يحدد المتصفح المدة اللتي يقوم فيها بحفظ الملفات
Accept-Language: تحديد للغة معينة يطلبها المتصفح في الرد
Referer: يستخدم في اخبار السيرفر الجهة التي تم زيارة الموقع منها في الصورة تشير الى قوقل.
User-Agent: يستخدم لتحديد ماهو المتصفح الذي قام بارسال الطلب او البرنامج الذي تم استخدامه.
Host: يحدد اسم الموقع الذي تم طلبه.
Date: الوقت والتاريخ الحالي الذي يرد فيه السيرفر.
في هذا الرابط سوف تجدون جميع headers غير اللتي تم ذكرها.
developer.mozilla.org
عندما تقوم بمهاجمة/تحليل تطبيق ويب سوف تتعامل بشكل مباشر مع اشهر methods الا وهي GET and POST ولكن هناك فرق بينهم وهناك methods اخرى سوف نتطرق لها ونوضح الفرق بينها وكيفية الاستفادة منها اثناء تحليلك/مهاجمتك لتطبيق الويب.
GET: تسمى Get Request ويعني ان كل شيء سوف ينعرض في الرابط URL على سبيل المثال لو ذهبنا الى مربع البحث وقمنا بالبحث عن DNS. اللون الاحمر نوع method وهي GET واللون الاسود الذي قمنا بالحبث عنه وهو DNS واللون الازرق هو تطبيق الويب و سوف يظهر لنا الرابط هكذا : xredteam.com
POST: هي تقريباً كل شيء حصل في GET ولكن بختلاف بسيط ان كل parameters والقيم تبع كل parameter سوف تكون في Request Body. المربع الاحمر اسفل الصفحة هو parameters واللون الاحمر هو نوع الميثود POST واللون الازرق هو تطبيق الويب.
HEAD: هي نفس طريقة عمل GET ولكن الخادم لن يرجع اي محتوى. في GET Method سيرجع Response Body ولكن في HEAD Method سوف يرجع لنا Response Headers. لها عدة استخدامات احدها عندما نريد تخمين الملفات والمسارات على تطبيق الويب فإننا نريد فقط HTTP Status لأن الرد سوف يكون اسرع من POST&GET.
هنا استخدام آخر لـ HEAD Method اثناء جمع معلومات عن تطبيق الويب لمعرفة ماهو السيرفر سوف نستخدام اداة Netcat و اداة Burp Suite لنقوم بإرسال طلب الى الخادم وسوف يرد الخادم ب Response Header يحتوي على server.
OPTIONS: تستخدم لمعرفة ماهي Methods اللتي يمكن استخدامها من قبل الخادم Web Server.
نلاحظ في Response أن Methods المتاح استخدامها هي: HEAD,POST,GET.
PUT: تستخدم في محاولة رفع ملف الى الخادم بستخدام Request Headers وسوف يكون الرفع من خلال Request. لو كانت متاحة سوف نستطيع أن نرفع ملف الى الخادم ونقوم بتنفيذه.
وفي هذا الرابط سوف تجدون بقية انواع HTTP Methods غير اللتي تم ذكرها.
developer.mozilla.org
عندما يأتي أي HTTP Response من الخادم يجب ان يحتوي في اول سطر في Headers على اصدار HTTP و Status Codes وسوف نتعرف على ماهي Status Codes وانواعها.
اللون الازراق هو اصدار HTTP واللون الاحمر هو Status Codes.
هناك خمس مجموعات للـ Status Codes وهي:
1xx: تم قبول الطلب وأن كل شيء جاري معالجته
2xx: الطلب ناجح وتم تنفيذه
3xx: يتم تحويل العميل الى مصدر آخر
4xx: يحتوي الطلب على خطأ من نوع ما
5xx: الخادم واجه مشكلة في تنفيذ الطلب
سأذكر بعض HTTP Codes اللتي تواجه محلل/ مهاجم تطبيقات الويب:
100 Continue: تم استلام الطلب المبدئي ولم يرفضه الخادم وسوف يقوم الخادم بالرد
200 OK: يشير هذا الطلب انه ناجح وسوف يعرض ما تم طلبه
201 Created: تم تنفيذ الطلب وقد نتج عنه انشاء ملف مثل استخدام Method PUT.
301 Moved Permanently: يستخدم عند اعادة التوجيه بشكل دائم
302 Found: يستخدم عند اعادة التوجيه بشكل مؤقت
400 Bad Request: الخادم لن يتمكن من تنفيذ الطلب او لن يقوم بتنفيذه لأن العميل قام بطلب غير صحيح او تالف
403 Forbidden: الطلب محظور لأن العميل قام بطلب صفحة او ملف غير مصرح له
هنا امثلة على بعض انواع Status Codes
هنا تجدون جميع Status Codes الخاصة بـ HTTP.
httpstatuses.com
HTTPS هو امتداد لـ HTTP Protocol وهي طريقة لضمان التواصل الآمن بين المتصفح والخادم ويعتمد على نوعين من Encryption Protocol اما SSL او TLS. وهنا للتعرف اكثر على SSL/TLS. en.wikipedia.org
الآن سوف نقوم بتحليل packet على الشبكة لنعرف الفرق بين HTTP/HTTPS ونتعرف على Clear Text Protocol and cryptographic protocol.
لنفترض أن هناك مهاجم داخل شبكة غير آمنة وقام شخص بالدخول اليها وقام بالدخول الى احد المواقع ولم يتحقق ما اذا كان الموقع يستخدم HTTP او HTTPS لو كان الموقع يستخدم HTTP Protocol سوف يتمكن المهاجم من الاطلاع على البيانات المارة كما في الصورة الآتية.
لنفترض أن هناك مهاجم داخل شبكة غير آمنة وقام شخص بالدخول اليها وقام بالدخول الى احد المواقع ولم يتحقق ما اذا كان الموقع يستخدم HTTP او HTTPS لو كان الموقع يستخدم HTTPS Protocol لن يتمكن المهاجم من الاطلاع على البيانات المارة وسوف تظهر له مشفرة.
HTTP Authentication هي آلية او طريقة تستخدم للتحقق ومصادقة وحماية صفحة معينة من الدخول غير المباشر اليها و هناك عدة آليات تستخدم للمصادقة والتحقق من الوصول:
1- Basic
2- Digest
3- NTLM
هنا تجدون امثلة على كل آلية من آليات المصادقة والتحقق من الوصول:
httpwatch.com
هنا بعض التحديات على HTTP Authentication:
pentesteracademylab.appspot.com
ماهو Encoding Schemes او الترميز ؟ الترميز هو عبارة عن عملية تغيير الرمز أو الحرف المدخل إلى شيء آخر لتسهيل التواصل ويصبح بإمكان أنظمة مختلفة التعامل معها بطريقة صحيحة وآمنة. لا تحتاج البيانات بعد ترميزها لمفتاح لمعرفتها فقط كل اللي نحتاجه نوع الخوارزمية المستخدمة في الترميز.
Encoding راح نتعرف على بعض انواع
- URL Encoding
- Unicode Encoding
- Base64 Encoding
URL Encoding هي عملية تحويل الأحرف والرموز الى تنسيق او صيغة يمكن نقلها عبر الانترنت بستخدام ASCII على سبيل المثال لايمكن وضع مسافة في الرابط لان URL Encoding عادة يقوم بستبدال المسافة بعلامة (+). في هذا الرابط سوف تجدون جميع الرموز والأحرف اللي يتم عمل لها URL Encoding.
في بعض الاحيان اثناء مهاجمة تطبيق ويب يجب عليك ان تقوم بعمل encoding لهذه الرموز [ space , % , ? , & , = , ; , + , #, <>] عندما تريد ان تقوم بإدخالها عن طريق HTTP Request.
Bypassing XSS filters via URL Encoding.
iz ??
Unicode Encoding هو معيار عالمي تم تصميمه لتمثيل بعض الرموز المكتوبة بغير ASCII ولدعم كل نظم الكتابة في العالم بستخدام العديد من أنظمة الترميز والتي يمكن استخدامها لمعالجة بعض اللغات مثل الصينية والعربية والروسية وهناك العديد من Unicode مثل UTF-8, UTF-16.
Base64 Encoding يقوم بعملية الترميز وتمثيل البيانات بستخدام ASCII ويحتوي Base64 على 64 حرف ورمز وهي [0-10] , [A-Z] , [a-z] [+,/].
للاطلاع لكيفية عمل Base64 en.wikipedia.org

جاري تحميل الاقتراحات...