GitHub و Metasploit

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

01 / ملخص الدرس

GitHub و Metasploit

مصادر تانية للـ exploits: إزاي تدوّر على PoC في GitHub وتقيّمه بالـ stars وتاريخ آخر تعديل، ونظرة سريعة على Metasploit و search و use، وإزاي تفلتر وترتّب نتايج البحث بـ Python.

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

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

في الدرس اللي فات شفنا 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.

main.py
# 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، والفاضي اختفى.

main.py
# 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)
  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مراجعة شاملة