🌐12- Web-Application-Web-HTTP-Protocol
🌐 مقدمة إلى الويب وبروتوكول HTTP/HTTPS
الفهم: لو أردت فهم اختبار اختراق الويب، بيصير عليك أولاً فهم أساسيات عمل الويب والفرق بين مواقع الويب وتطبيقات الويب.
الفرق: لو كان الموقع ثابتًا ومحتواه لا يتغير، فهو يُسمى "موقع ويب" (Website). أما لو كان ديناميكيًا ويتفاعل مع المستخدم ويتغير محتواه باستمرار (مثل فيسبوك وتويتر)، فهو يُسمى "تطبيق ويب" (Web Application).
اللغات: تطبيقات الويب تُبنى بلغات برمجة مثل PHP، JavaScript، Java EE، وتُنسق بـ HTML و CSS.
I. 🕵️ جمع المعلومات والمسح (Information Gathering & Scanning)
هذه المرحلة هي الأساس، لو قمت بها بشكل جيد، بيصير لديك رؤية واضحة عن الهدف ونقاط الضعف المحتملة.
🚀 بصمة خادم الويب (Web Server Fingerprinting)
الهدف: لو أردت معرفة معلومات عن خادم الويب (مثل نوعه Apache, IIS, Nginx، إصداره، نظام التشغيل الذي يعمل عليه)، بيصير عليك القيام بـ "بصمة الخادم".
لماذا؟: لو عرفت تفاصيل الخادم، بيصير بإمكانك البحث عن ثغرات أمنية معروفة تتعلق بإصداره أو نوعه.
💬 أفعال HTTP (HTTP Verbs / Methods)
الهدف: لو فهمت أفعال HTTP، بيصير بإمكانك التفاعل مع تطبيقات الويب بشكل صحيح واكتشاف طرق استغلالها.
أنواع الأفعال:
GET: لو أردت طلب واستقبال بيانات من الخادم (مثل فتح صفحة ويب)، بيصير استخدام
GETهو الشائع، ولا يحتوي على "جسم الرسالة" (Body). يمكن إرسال "وسائط" (Arguments) معها في شريط العنوان (URL).POST: لو أردت إرسال بيانات إلى الخادم (مثل تسجيل الدخول أو إرسال نموذج)، بيصير استخدام
POSTحيث تُرسل البيانات في "جسم الرسالة" (Body).HEAD: لو أردت طلب رؤوس الاستجابة فقط دون "جسم الرسالة" (Body)، بيصير استخدام
HEAD.PUT: لو أردت رفع ملفات أو بيانات إلى الخادم، بيصير استخدام
PUT. لو تم السماح به بشكل خاطئ (misconfigured)، بيصير خطيراً جداً، وقد يسمح برفع "شيل الويب" (Web Shell).DELETE: لو أردت حذف ملفات أو موارد من الخادم، بيصير استخدام
DELETE. لو تم السماح به بشكل خاطئ، بيصير خطيراً جداً ويمكن أن يؤدي إلى حجب الخدمة (Denial of Service) أو فقدان البيانات.OPTIONS: لو أردت معرفة ما هي أفعال HTTP المسموح بها على مورد معين في الخادم، بيصير استخدام
OPTIONS.
📂 تعداد الأدلة والملفات (Directory and File Enumeration)
الهدف: لو أردت العثور على المجلدات والملفات المخفية أو غير المنشورة في تطبيق الويب، بيصير عليك القيام بـ "تعداد الأدلة والملفات". هذه الملفات قد تحتوي على معلومات حساسة (مثل ملفات النسخ الاحتياطي، كلمات المرور، أو ملاحظات المطورين).
الطرق:
Pure Brute-force: لو أردت تجربة جميع التركيبات الممكنة من الأحرف والرموز، بيصير ذلك ممكناً، ولكنه يستهلك وقتاً طويلاً جداً.
Dictionary-based Brute-force: لو أردت استخدام قائمة كلمات (Wordlist) تحتوي على أسماء مجلدات وملفات شائعة، بيصير ذلك أسرع وأكثر فعالية.
الأدوات:
Dirb / Dirbuster: لو أردت أداة لتعداد الأدلة والملفات، بيصير Dirb (سطر الأوامر) أو Dirbuster (واجهة رسومية) خياراً ممتازاً. لو أردت استخدامها، بيصير عليك تزويدها بالـ URL وقائمة الكلمات المناسبة (Wordlist).
Gobuster: لو أردت أداة سريعة وفعالة بلغة Go لنفس الغرض، بيصير Gobuster خياراً جيداً. لو أردت استخدامه لتعداد المجلدات والملفات مع قائمة كلمات، بيصير عليك كتابة
gobuster dir -u [Target URL] -w [Wordlist Path]. لو أردت تحديد أنواع ملفات معينة (مثل .php, .txt, .xml)، بيصير عليك إضافة-x .php,.txt. لو أردت تتبع التحويلات (Redirects)، بيصير عليك إضافة-r.
🔍 اختراق جوجل (Google Hacking / Google Dorks)
الهدف: لو أردت استخدام محرك بحث جوجل للعثور على معلومات حساسة متاحة للعامة عن هدف معين (مثل ملفات كلمات المرور، صفحات تسجيل الدخول، أو معلومات التكوين)، بيصير بإمكانك استخدام "جوجل دوركس".
العوامل (Operators):
site: [domain.com]: لو أردت البحث داخل موقع ويب محدد فقط، بيصير استخدام هذا العامل.inurl: [keyword]: لو أردت البحث عن كلمات موجودة في رابط الصفحة (URL)، بيصير استخدام هذا العامل.intitle: [keyword]: لو أردت البحث عن كلمات موجودة في عنوان الصفحة (Title)، بيصير استخدام هذا العامل.OR / |: لو أردت أن تظهر أي من الكلمات أو الشروط، بيصير استخدامORأو|.AND: لو أردت أن تظهر كل الكلمات أو الشروط معًا، بيصير استخدامAND.-: لو أردت استبعاد كلمة معينة من نتائج البحث، بيصير استخدام-قبل الكلمة.
قواعد بيانات جوجل هاكينج (GHDB): لو أردت دوركس جاهزة ومصنفة، بيصير بإمكانك زيارة Google Hacking Database (GHDB) على موقع exploit-db.com.
🛡️ فحص تطبيقات الويب (Web Application Scanning)
الهدف: لو أردت اكتشاف نقاط الضعف الأمنية في تطبيقات الويب بشكل آلي وفعال، بيصير استخدام أدوات الفحص ضرورياً.
الأدوات:
Nikto: لو أردت أداة سطر أوامر قوية لفحص خوادم الويب بحثاً عن الثغرات الشائعة (مثل أخطاء التكوين، الملفات القديمة، الإصدارات الضعيفة)، بيصير استخدام Nikto. لو أردت استخدامها، بيصير عليك كتابة
nikto -h [Target IP]. يمكن تخصيص الفحص للبحث عن ثغرات معينة (مثل LFI/RFI، SQL Injection) باستخدام خيار-Tuningمتبوعاً برقم معين.OWASP ZAP (Zed Attack Proxy): لو أردت أداة مفتوحة المصدر (GUI) متعددة الوظائف لفحص واختبار تطبيقات الويب، بيصير OWASP ZAP خياراً ممتازاً. لو أردت استخدامه للفحص الآلي، بيصير بإمكانه الكشف عن ثغرات مثل XSS، SQL Injection، وأخطاء HTMl Injection.
Spider: لو أردت جمع معلومات عن جميع الموارد والمسارات المتاحة في تطبيق الويب بشكل آلي، بيصير استخدام "سبايدر" (Spider).
Active Scan: لو أردت فحصاً عميقاً للبحث عن الثغرات المعروفة بعد جمع المعلومات، بيصير استخدام "الفحص النشط" (Active Scan).
🛠️ أداة Burp Suite
الدور: لو كنت مختبر اختراق ويب، بيصير Burp Suite أداتك الأساسية؛ إنها تعمل كـ "بروكسي معترض" (Intercepting Proxy).
الفرق بينها وبين Network Proxy:
Web Application Proxy (Burp Suite): لو أردت اعتراض وتحليل وتعديل طلبات HTTP/HTTPS الصادرة من متصفحك والواردة إليه على جهازك الخاص فقط، بيصير استخدام Burp Suite.
Network Proxy (مثل Squid): لو أردت تصفية وتوجيه حركة المرور لشبكة كاملة في شركة أو جامعة، بيصير استخدام Network Proxy، وهو عادةً ما يُستخدم للتحكم في الوصول وتحسين عرض النطاق الترددي (Bandwidth Optimization).
المكونات الأساسية:
Proxy: لو أردت اعتراض الطلبات والاستجابات، بيصير هذا المكون هو الأساسي. يتطلب تثبيت شهادة (Certificate) في المتصفح للتعامل مع HTTPS.
Repeater: لو أردت إرسال طلب HTTP/HTTPS يدوياً وتعديله وإعادة إرساله مرات متعددة لمراقبة الاستجابات المختلفة، بيصير استخدام Repeater مفيداً جداً لاختبار الثغرات.
Intruder: لو أردت أتمتة هجمات التخمين (Brute-force) أو تعداد المجلدات والملفات (Enumeration) عبر إرسال عدد كبير من الطلبات بقيم مختلفة، بيصير استخدام Intruder.
Passive Crawling: لو أردت جمع معلومات عن تطبيق الويب بشكل تلقائي أثناء تصفحك له دون اعتراض نشط لكل طلب، بيصير تفعيل Passive Crawling. هذه الميزة تسجل كل الروابط والموارد التي يمر بها المتصفح.
🪝 أداة Curl
الهدف: لو أردت إرسال طلبات HTTP/HTTPS واستقبال الردود من الخادم عبر سطر الأوامر، بيصير استخدام
curlمفيداً جداً.الاستخدام: لو أردت إرسال طلب
GET، بيصير عليك كتابةcurl -X GET [URL]. لو أردت إظهار التفاصيل الكاملة للاستجابة (Verbose)، بيصير عليك إضافة-v. يمكن استخدامها لإرسال أفعال HTTP مختلفة وتلقي الردود. لو أردت رفع ملف باستخدامPUT، بيصير عليك استخدام--upload-file.
🗺️ أداة Nmap
الهدف: لو أردت تحديد المنافذ المفتوحة والخدمات التي تعمل عليها في جهاز الهدف، بيصير استخدام Nmap. لو أردت معرفة المنافذ 80 (HTTP) و443 (HTTPS) و3306 (MySQL)، بيصير ذلك خطوتك الأولى في أي اختبار اختراق ويب.
🧪 تطبيقات الويب الضعيفة للتدريب
الهدف: لو أردت ممارسة اختبار اختراق تطبيقات الويب، بيصير استخدام تطبيقات ويب مصابة عمداً بالثغرات مفيداً جداً. أمثلة: Matilda و bWAPP (B-Web).
HackTheBox / Hack.me: منصات توفر بيئات قابلة للاختراق لممارسة المهارات.
📚 موقع W3Schools
الهدف: لو أردت تعلم أساسيات HTML, CSS, JavaScript, SQL، بيصير موقع W3Schools مصدراً ممتازاً. لو أردت فهم الكود المصدري لصفحات الويب، بيصير هذا الموقع مرجعاً لا غنى عنه.
📂 ثغرة Local File Inclusion (LFI) و Directory Traversal
المفهوم: لو كان تطبيق الويب يسمح للمهاجم بتضمين ملفات من نظام ملفات الخادم، بيصير لديك ثغرة LFI. لو نجحت في استغلالها، بيصير بإمكانك قراءة ملفات حساسة (مثل
/etc/passwdعلى أنظمة Linux).الفرق بين LFI و RFI:
LFI (Local File Inclusion): لو تمكنت من تضمين ملفات موجودة بالفعل على الخادم المحلي.
RFI (Remote File Inclusion): لو تمكنت من تضمين وتنفيذ ملفات من خادم يملكه المهاجم (عبر URL خارجي).
Directory Traversal: لو كانت ثغرة LFI موجودة، بيصير بإمكانك التنقل بين المجلدات وقراءة ملفات من مسارات مختلفة على الخادم باستخدام تسلسلات مثل
../../.
💉 حقن SQL (SQL Injection)
المفهوم: لو أردت استغلال ثغرة في تطبيق ويب للسماح لك بالتحكم في قاعدة بياناته (Database)، بيصير حقن SQL هو الهدف.
كيف يحدث؟: لو كان المطور يسمح بمدخلات المستخدمين (User Input) أن تُستخدم مباشرة في استعلامات SQL دون "تحقق من المدخلات" (Input Validation) أو "تطهير" (Sanitization)، بيصير التطبيق عرضة للحقن.
أساسيات SQL:
SELECT: لو أردت قراءة بيانات من قاعدة البيانات، بيصير استخدام
SELECT.FROM: لو أردت تحديد الجدول الذي ستقرأ منه البيانات، بيصير استخدام
FROM.WHERE: لو أردت تحديد شرط لفلترة البيانات التي ستُقرأ، بيصير استخدام
WHERE.UNION: لو أردت دمج نتائج استعلامين أو أكثر في نتيجة واحدة، بيصير استخدام
UNION.التعليقات (Comments): لو أردت تجاهل جزء من استعلام SQL، بيصير استخدام
--أو#لجعله تعليقاً.
أنواع الحقن:
Boolean-based SQL Injection: لو أردت تخمين البيانات عن طريق إرسال استعلامات تُرجع
TRUEأوFALSE(بظهور أو اختفاء جزء من الصفحة)، بيصير هذا النوع من الحقن.Union-based SQL Injection: لو أردت دمج استعلامك الخبيث مع الاستعلام الأصلي لاستخراج البيانات مباشرة في الصفحة، بيصير هذا النوع. يتطلب معرفة عدد الأعمدة المتوقعة.
أدوات الاستغلال:
يدوياً: لو أردت الكشف عن نقطة حقن SQL، بيصير عليك تجربة إضافة علامات اقتباس فردية (
') أو مزدوجة (") في حقول المدخلات أو شريط العنوان، لو ظهر لك خطأ في قاعدة البيانات، فهذا يؤكد وجود الثغرة.SQLMap: لو أردت أتمتة عملية حقن SQL بالكامل، بيصير SQLMap هي الأداة الأقوى. لو أردت استخدامه، بيصير عليك تزويده بالـ URL المشكوك فيه، وتحديد الباراميتر المستهدف (
-p [parameter])، وربما قيمة الكوكي (--cookie [cookie_value]). لو أردت استخراج قواعد البيانات، بيصير عليك إضافة--dbs. لو أردت استخراج الجداول من قاعدة بيانات معينة، بيصير عليك استخدام-D [database_name] --tables. لو أردت استخراج الأعمدة من جدول معين، بيصير عليك استخدام-T [table_name] --columns. لو أردت استخراج البيانات من أعمدة محددة، بيصير عليك استخدام-C [column1,column2] --dump.
📝 هجمات Cross-Site Scripting (XSS)
المفهوم: لو أردت زرع أكواد JavaScript خبيثة في صفحة ويب، بيصير بإمكانك سرقة جلسات المستخدمين (Cookies)، أو إعادة توجيههم، أو حتى التحكم في متصفحاتهم.
كيف تحدث؟: لو كان تطبيق الويب لا يقوم بـ "التحقق من المدخلات" (Input Validation) أو "تطهير" (Sanitization) للبيانات المدخلة من المستخدمين، بيصير عرضة لـ XSS.
الهدف: لو تم استغلال XSS، بيصير بإمكان المهاجم سرقة ملفات تعريف الارتباط (Cookies) الخاصة بالمستخدمين، والتي قد تحتوي على معلومات جلسة تسجيل الدخول، مما يسمح للمهاجم بانتحال شخصية المستخدم (Impersonation).
أنواع XSS:
Reflected XSS (المنعكس): لو أدخلت كوداً خبيثاً في طلب ويب (مثل شريط البحث أو URL)، بيصير هذا الكود ينعكس مباشرة في استجابة الخادم ويُنفذ في متصفحك. لو قام المهاجم بإنشاء رابط يحتوي على الكود الخبيث، بيصير أي مستخدم ينقر عليه عرضة للهجوم. المتصفحات الحديثة لديها آليات فلترة ضد هذا النوع.
Persistent XSS (الدائم/المخزن): لو أدخلت كوداً خبيثاً في حقل يتم تخزينه في قاعدة بيانات تطبيق الويب (مثل التعليقات أو منشورات المنتدى)، بيصير هذا الكود يُنفذ في متصفح أي مستخدم يزور الصفحة التي تحتوي على هذا المحتوى المخزن. هذا النوع أخطر لأنه يؤثر على جميع الزوار بشكل دائم.
اكتشاف XSS: لو أردت اختبار XSS يدوياً، بيصير بإمكانك حقن كود JavaScript بسيط مثل
<script>alert('XSS')</script>في حقول المدخلات. لو ظهر لك مربع تنبيه، فهذا يؤكد وجود الثغرة.أدوات الاستغلال:
XSSer: لو أردت أداة آلية لاكتشاف واستغلال ثغرات XSS، بيصير XSSer خياراً ممتازاً. لو أردت استخدامه، بيصير عليك تزويده بالـ URL المشكوك فيه وتحديد الباراميتر المستهدف (
-p [parameter_name]) مع إعطاء قيمةXSSللباراميتر في الـ URL نفسه. يمكنه أيضاً تجربة العديد من الـ payloads تلقائياً باستخدام--auto.
🔑 هجمات على نماذج تسجيل الدخول HTTP (Attacking HTTP Login Forms)
الهدف: لو أردت تخمين كلمات المرور أو تجاوز نماذج تسجيل الدخول، بيصير عليك استهدافها.
التقنيات:
Brute-force (تخمين قوي): لو أردت تجربة عدد كبير من أسماء المستخدمين وكلمات المرور من قوائم (Wordlists) جاهزة أو مُنشأة، بيصير هذا الأسلوب.
HTTP Basic Authentication: لو كان نموذج تسجيل الدخول يعتمد على "المصادقة الأساسية" (Basic Auth)، بيصير إرسال اسم المستخدم وكلمة المرور معاً في رأس
Authorizationبعد تشفيرها بـ Base64. لو تمكنت من اعتراض هذا الرأس، بيصير بإمكانك فك تشفيرها وتخمينها.
الأدوات:
Hydra: لو أردت أداة سطر أوامر قوية ومتعددة البروتوكولات لتخمين كلمات المرور (Brute-force) على نماذج تسجيل الدخول، بيصير Hydra خياراً فعالاً. لو أردت استخدامه، بيصير عليك تحديد ملف قائمة المستخدمين (
-L [users_file]) وملف قائمة كلمات المرور (-P [passwords_file])، والبروتوكول (HTTP-POST-FORM) مع تفاصيل النموذج.Burp Suite Intruder: لو أردت استخدام Burp Suite لتخمين كلمات المرور، بيصير Intruder هو المكون المناسب. لو أردت استهدافه لـ Basic Auth، بيصير عليك تحديد الجزء المشفر بـ Base64 كـ "payload position" وتزويده بقائمة كلمات مرور بعد تحديد البادئة
admin:مثلاً، وتفعيل تشفير Base64.OWASP ZAP Fuzzer: لو أردت استخدام OWASP ZAP لنفس الغرض، بيصير Fuzzer هو المكون الذي يسمح بتجربة قيم متعددة.
🐚 الويب شيلز (Web Shells)
المفهوم: لو نجحت في رفع "شيل ويب" (Web Shell) إلى خادم الويب (غالباً باستخدام فعل
PUTأو ثغرات الرفع)، بيصير بإمكانك تنفيذ أوامر على الخادم عبر متصفح الويب.الاستخدام: لو أردت السيطرة على الخادم بعد الاستغلال، بيصير الويب شيل أداة قوية، تسمح لك بإنشاء المجلدات، حذف الملفات، قراءة ملفات النظام الحساسة (مثل
/etc/passwdأو/etc/shadow).الكود: كود الويب شيل (غالباً PHP) متاح وجاهز للاستخدام، ولا يتطلب مهارات برمجة لإنشائه.
⚙️ واجهات برمجة التطبيقات (REST APIs)
المفهوم: لو أردت فهم كيفية تواصل تطبيقين مع بعضهما البعض، بيصير فهم الـ API (Application Programming Interface) أساسياً. REST API هو نوع شائع يستخدم أفعال HTTP للتواصل.
الأهمية: لو أردت التعمق في اختبار اختراق الويب المتقدم، بيصير تحليل ثغرات الـ API ضرورياً.
IV. 👻 ما بعد الاستغلال (Post-Exploitation)
تُركز هذه المرحلة على الحفاظ على الوصول والاستفادة من الاختراق.
الويب شيلز: لو تمكنت من رفع ويب شيل، بيصير بإمكانك تنفيذ أوامر النظام، وجمع المزيد من المعلومات، والتحكم في الخادم، وهو ما يعتبر خطوة أساسية في هذه المرحلة.
Last updated