مراجعة شاملة
مراجعة لكل الكورس: من الخدمة والإصدار، للـ CVE والخطورة، للبحث اليدوي، لأدوات الفحص، للتأكد اليدوي وترتيب الأولويات، ومثال Python بيمشي الرحلة كلها لحد سطر في التقرير.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
وصلنا لآخر درس في الكورس. تعالى نراجع الرحلة كلها: من خدمة وإصدار لقيناهم في الـ recon، لحد ثَغْرة متأكدين منها ومترتّبة في التقرير.
الجزء الأول: المصطلحات. الثَغْرة: غلطة ممكن تتستغل. CVE: رقم الثَغْرة، و CWE: نوع الغلطة. CVSS: الخطورة من صفر لعشرة. EPSS: احتمال الاستغلال. و KEV: ثغرات بتتهاجم فعلًا.
الجزء التاني: البحث اليدوي. NVD: المصدر الرسمي للـ CVEs. Exploit DB و searchsploit: exploits جاهزة. GitHub: PoC، بس قيّمه واقرا الـ code. و Metasploit: modules جاهزة. والقاعدة: اقرا أي exploit قبل ما تشغّله.
الجزء التالت: أدوات الفحص. Nmap NSE: scripts للثغرات. Nuclei: templates سريعة للـ web. Nikto: إعدادات الـ web server. OpenVAS: فحص شامل للشبكة. والفحص بصلاحيات بيشوف أكتر بكتير من الفحص من بره.
الجزء الرابع، والأهم: التحليل. جمّع النتايج وشيل التكرار. أكّد كل ثَغْرة بإيدك، بأمان، علشان تفرز الـ False Positives. ورتّب بالـ KEV والـ EPSS والـ CVSS والسياق. وفي الآخر، أتمت الخطوات دي بـ Python. هنا الرحلة كلها في مثال صغير. عندنا هدف لقينا عليه Apache اتنين أربعة تسعة وأربعين، و dict صغير فيه ثغرات معروفة لكل إصدار. بندوّر على الإصدار في الـ dict ونطبع اللي لقيناه. نشغّل… لقينا CVE ألفين واحد وعشرين، وهي في KEV.
# Course review: the whole flow, from a found service to one report line.
target = {"host": "10.10.10.5", "port": 80, "service": "Apache", "version": "2.4.49"}
known = {
("Apache", "2.4.49"): {"cve": "CVE-2021-41773", "cvss": 7.5, "kev": True},
("Samba", "3.0.20"): {"cve": "CVE-2007-2447", "cvss": 10.0, "kev": False},
}
vuln = known.get((target["service"], target["version"]))
print(target["service"], target["version"], "->", vuln)المخرجات
Apache 2.4.49 -> {'cve': 'CVE-2021-41773', 'cvss': 7.5, 'kev': True}دورك، آخر تمرين في الكورس: كمّل الرحلة لحد التقرير. لو لقينا ثَغْرة وأكّدناها بإيدنا، احسب الأولوية: P1 لو في KEV، وإلا P2. واطبع سطر فيه الأولوية والجهاز والـ port والـ CVE والـ CVSS.
if vuln and verified: prio = "P1" if vuln["kev"] else "P2" وبعدين اطبع السطر
الحل: نشغّل… سطر جاهز للتقرير: P1 على port تمانين.
# Course review: the whole flow, from a found service to one report line.
target = {"host": "10.10.10.5", "port": 80, "service": "Apache", "version": "2.4.49"}
known = {
("Apache", "2.4.49"): {"cve": "CVE-2021-41773", "cvss": 7.5, "kev": True},
("Samba", "3.0.20"): {"cve": "CVE-2007-2447", "cvss": 10.0, "kev": False},
}
vuln = known.get((target["service"], target["version"]))
print(target["service"], target["version"], "->", vuln)
verified = True # we confirmed it by hand, safely
if vuln and verified:
prio = "P1" if vuln["kev"] else "P2"
print(f"[{prio}] {target['host']}:{target['port']} {vuln['cve']} CVSS {vuln['cvss']}")المخرجات
Apache 2.4.49 -> {'cve': 'CVE-2021-41773', 'cvss': 7.5, 'kev': True}
[P1] 10.10.10.5:80 CVE-2021-41773 CVSS 7.5مبروك، خلّصت كورس فحص الثغرات. دلوقتي تقدر تاخد خريطة الهدف وتحوّلها لثغرات حقيقية، متأكد منها ومترتّبة. افتكر دايمًا: اشتغل بإذن مكتوب، وجُوّه الـ scope، ومن غير ما تأذي حد. أشوفك في الكورس الجاي.
03 / دروس المسار (16)
- 01يعني إيه ثغرة؟ ومن الـ Recon للـ Vulnerabilities
- 02CVE و CWE: أسماء الثغرات
- 03الخطورة: CVSS و EPSS و KEV
- 04البحث في NVD
- 05Exploit-DB و searchsploit
- 06GitHub و Metasploit
- 07الفحص بـ Nmap NSE
- 08الفحص بـ Nuclei
- 09الفحص بـ Nikto
- 10الفحص بـ OpenVAS
- 11فحص بصلاحيات ومن غيرها
- 12تجميع وتنظيم النتايج
- 13False Positives والتأكد اليدوي
- 14ترتيب الأولويات
- 15أتمتة الفحص بـ Python
- 16مراجعة شاملةانت هنا