يعني إيه ثغرة؟ ومن الـ Recon للـ Vulnerabilities

جارٍ التحميل…

01 / ملخص الدرس

يعني إيه ثغرة؟ ومن الـ Recon للـ Vulnerabilities

إيه هي الثغرة، والفرق بين Vulnerability و Misconfiguration، وإزاي الإصدارات اللي جمعناها في الـ Recon بتتحوّل لثغرات، وخريطة الكورس.

02 / شرح الدرس مكتوبًا

نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.

أهلاً بيك في كورس فحص الثَغَرات. في الكورس اللي فات طلّعنا خريطة للهدف: أجهزة، و ports، وخدمات، وإصدارات. النهارده هنسأل السؤال الأهم: فين الثَغَرات في الخريطة دي؟

الثَغْرة، أو Vulnerability، هي غلطة في نظام أو برنامج، حد يقدر يستغلها علشان يعمل حاجة مش مسموح له بيها. ممكن تبقى bug في الـ code. أو إعداد غلط، زي باسورد default. أو تصميم ضعيف من الأول.

الـ Vulnerability Scanning هو إنك تدوّر على الثَغَرات دي بشكل منظّم. تاخد كل خدمة وإصدارها. تقارنهم بقواعد بيانات الثَغَرات المعروفة. وتتأكد إن الثَغْرة موجودة فعلاً، مش مجرد تخمين.

وده اللي هنمشي فيه: الأول CVE و CVSS، والمصطلحات. بعدين البحث اليدوي في NVD و Exploit DB و searchsploit. بعدين أدوات الفحص: Nmap و Nuclei و Nikto و OpenVAS. بعدين أهم جزء: تحليل النتايج والـ False Positives والتأكد اليدوي. وفي الآخر الأتمتة بـ Python. نبدأ بمثال بسيط. list فيها الخدمات اللي لقيناها في الـ Recon، و dictionary فيه إصدارات معروف إن فيها ثَغَرات. لكل خدمة نشوف: إصدارها في القايمة ولا لأ؟ نشغّل… vsFTPd فيه backdoor، و Apache فيه path traversal. و OpenSSH مفيش حاجة معروفة، على الأقل في القايمة الصغيرة دي.

main.py
# From the recon course: what we found on 10.10.10.5
services = [
    (21, "vsFTPd", "2.3.4"),
    (22, "OpenSSH", "8.9p1"),
    (80, "Apache", "2.4.49"),
]

# A tiny list of known vulnerable versions
vulnerable = {
    ("vsFTPd", "2.3.4"): "CVE-2011-2523 backdoor",
    ("Apache", "2.4.49"): "CVE-2021-41773 path traversal",
}

for port, product, version in services:
    issue = vulnerable.get((product, version), "nothing known")
    print(f"{port:>3} {product} {version:7} -> {issue}")

المخرجات

21 vsFTPd 2.3.4   -> CVE-2011-2523 backdoor
 22 OpenSSH 8.9p1   -> nothing known
 80 Apache 2.4.49  -> CVE-2021-41773 path traversal

دورك: ضيف خدمة Samba على port four forty five، إصدار three zero twenty، وضيف ثَغْرتها CVE two thousand seven twenty four forty seven للقايمة.

تمرين

ضيف (445, "Samba", "3.0.20") للخدمات، و ("Samba", "3.0.20"): "CVE-2007-2447 command injection" للقايمة.

الحل: نشغّل… Samba كمان فيه ثَغْرة.

main.py
# From the recon course: what we found on 10.10.10.5
services = [
    (21, "vsFTPd", "2.3.4"),
    (22, "OpenSSH", "8.9p1"),
    (80, "Apache", "2.4.49"),
    (445, "Samba", "3.0.20"),
]

# A tiny list of known vulnerable versions
vulnerable = {
    ("vsFTPd", "2.3.4"): "CVE-2011-2523 backdoor",
    ("Apache", "2.4.49"): "CVE-2021-41773 path traversal",
    ("Samba", "3.0.20"): "CVE-2007-2447 command injection",
}

for port, product, version in services:
    issue = vulnerable.get((product, version), "nothing known")
    print(f"{port:>3} {product} {version:7} -> {issue}")

المخرجات

21 vsFTPd 2.3.4   -> CVE-2011-2523 backdoor
 22 OpenSSH 8.9p1   -> nothing known
 80 Apache 2.4.49  -> CVE-2021-41773 path traversal
445 Samba 3.0.20  -> CVE-2007-2447 command injection

بس فين بنلاقي القايمة الحقيقية دي؟ وإزاي الثَغَرات بتتسمّى؟ ده الدرس الجاي: CVE و CWE. يلا بينا.

03 / دروس المسار (16)
  1. 01يعني إيه ثغرة؟ ومن الـ Recon للـ Vulnerabilitiesانت هنا
  2. 02CVE و CWE: أسماء الثغرات
  3. 03الخطورة: CVSS و EPSS و KEV
  4. 04البحث في NVD
  5. 05Exploit-DB و searchsploit
  6. 06GitHub و Metasploit
  7. 07الفحص بـ Nmap NSE
  8. 08الفحص بـ Nuclei
  9. 09الفحص بـ Nikto
  10. 10الفحص بـ OpenVAS
  11. 11فحص بصلاحيات ومن غيرها
  12. 12تجميع وتنظيم النتايج
  13. 13False Positives والتأكد اليدوي
  14. 14ترتيب الأولويات
  15. 15أتمتة الفحص بـ Python
  16. 16مراجعة شاملة