GitHub و Metasploit
مصادر تانية للـ exploits: إزاي تدوّر على PoC في GitHub وتقيّمه بالـ stars وتاريخ آخر تعديل، ونظرة سريعة على Metasploit و search و use، وإزاي تفلتر وترتّب نتايج البحث بـ Python.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
في الدرس اللي فات شفنا Exploit DB و searchsploit. بس مش كل exploit بيوصل لـ Exploit DB. كتير من الـ PoC بيتنشر الأول على GitHub، وفيه كمان framework كامل اسمه Metasploit. النهارده الاتنين.
نبدأ بـ GitHub. لو دوّرت برقم الـ CVE، غالبًا هتلاقي repositories فيها PoC، يعني Proof of Concept. الـ PoC ده code بيثبت إن الثَغْرة شغّالة. بس خد بالك: أي حد يقدر ينشر على GitHub، فمش كله موثوق.
تقيّم الـ repository إزاي قبل ما تثق فيه؟ الـ stars: كتر الناس اللي عملتله star. تاريخ آخر تعديل: قديم قوي يبقى ساعات مهجور. اقرا الـ code نفسه، زي ما قلنا بالظبط في Exploit DB: ممكن يكون فيه backdoor.
دلوقتي Metasploit. ده framework للاستغلال، فيه آلاف الـ modules جاهزة. تفتحه بـ msfconsole. search علشان تدوّر على module. use علشان تختار واحد. options علشان تشوف الإعدادات المطلوبة، زي الـ target.
امتى تستخدم إيه؟ GitHub و Exploit DB: PoC بسيط، بتقراه وتشغّله بإيدك، وبتفهم بيعمل إيه. Metasploit: أسرع وفيه modules مترتّبة، بس بيعمل حاجات كتير ورا الكواليس. في الاتنين، افهم قبل ما تشغّل على هدف حقيقي. هنا نتيجة بحث GitHub على رقم الـ CVE، محفوظة في list. كل repo فيه الاسم والـ stars وتاريخ آخر تعديل، وبنطبعهم زي ما هُمّا. نشغّل… تلات repositories، واحد منهم بصفر stars.
# Saved results of a GitHub search for "CVE-2021-41773"
repos = [
{"full_name": "blasty/CVE-2021-41773", "stars": 312, "updated": "2021-10-06"},
{"full_name": "iilegacyyii/PoC-CVE-2021-41773", "stars": 24, "updated": "2021-10-07"},
{"full_name": "anon/apache-pwn", "stars": 0, "updated": "2023-02-11"},
]
for r in repos:
print(f"{r['stars']:4}* {r['full_name']} ({r['updated']})")المخرجات
312* blasty/CVE-2021-41773 (2021-10-06) 24* iilegacyyii/PoC-CVE-2021-41773 (2021-10-07) 0* anon/apache-pwn (2023-02-11)
دورك: رتّب الـ repositories بالـ stars من الأكبر للأصغر، وشيل أي repo بصفر stars لأنه غالبًا فاضي أو مهجور.
repos.sort(key=lambda r: r["stars"], reverse=True) وبعدين جُوّه الـ loop: if r["stars"] == 0: continue
الحل: نشغّل… اتنين مرتّبين بالـ stars، والفاضي اختفى.
# Saved results of a GitHub search for "CVE-2021-41773"
repos = [
{"full_name": "blasty/CVE-2021-41773", "stars": 312, "updated": "2021-10-06"},
{"full_name": "iilegacyyii/PoC-CVE-2021-41773", "stars": 24, "updated": "2021-10-07"},
{"full_name": "anon/apache-pwn", "stars": 0, "updated": "2023-02-11"},
]
repos.sort(key=lambda r: r["stars"], reverse=True)
for r in repos:
if r["stars"] == 0:
continue
print(f"{r['stars']:4}* {r['full_name']} ({r['updated']})")المخرجات
312* blasty/CVE-2021-41773 (2021-10-06) 24* iilegacyyii/PoC-CVE-2021-41773 (2021-10-07)
كده خلّصنا البحث اليدوي: NVD و Exploit DB و GitHub و Metasploit. الدرس الجاي نبدأ الفحص الأوتوماتيك، وأول أداة: Nmap NSE. يلا بينا.
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مراجعة شاملة