الفحص بـ Nikto

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

01 / ملخص الدرس

الفحص بـ Nikto

Nikto: فاحص web server كلاسيكي بيدوّر على ملفات افتراضية وإعدادات غلط وإصدارات قديمة وheaders ناقصة، إزاي تشغّله وتقرا نتايجه، وتطلّع الـ paths اللي محتاجة مراجعة يدوية بـ Python.

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

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

Nuclei بيدوّر على ثغرات معروفة بالـ templates. بس فيه نوع تاني من المشاكل: إعدادات غلط وملفات منسية على الـ web server. وده تخصص Nikto.

Nikto أداة قديمة ومعروفة، موجودة في Kali جاهزة. بتفحص الـ web server وبتدوّر على: ملفات وصفحات افتراضية، زي صفحات الـ default. Directory indexing مفتوح. إصدارات قديمة. Security headers ناقصة.

التشغيل: nikto dash h وبعده الـ target. لو الموقع HTTPS، ضيف dash ssl. و dash o علشان تحفَظ النتيجة في ملف، وده مهم علشان التقرير بعدين.

عيوب Nikto لازم تعرفها. بيعمل دوشة، يعني requests كتير وواضحة، فأي نظام مراقبة هيشوفه. وبيطلّع False Positives كتير. فاعتبر نتيجته بداية بس، كل سطر محتاج مراجعة بإيدك قبل ما يدخل التقرير. هنا نتيجة Nikto محفوظة ومختصرة في list. كل finding فيه معرّف والرسالة. بعض المعرّفات رقم OSVDB، وده رقم ثَغْرة قديم، وبعضها كلام زي server أو headers. نشغّل… أربع findings مختلفة.

main.py
# Saved output of: nikto -h http://TARGET  (shortened, as (id, message))
findings = [
    ("server", "Apache/2.4.49 appears to be outdated"),
    ("OSVDB-3233", "/icons/README: Apache default file found"),
    ("OSVDB-3268", "/config/: Directory indexing found"),
    ("headers", "X-Frame-Options header is not present"),
]

for fid, msg in findings:
    print(f"[{fid}] {msg}")

المخرجات

[server] Apache/2.4.49 appears to be outdated
[OSVDB-3233] /icons/README: Apache default file found
[OSVDB-3268] /config/: Directory indexing found
[headers] X-Frame-Options header is not present

دورك: عايزين نراجع الـ paths بإيدينا. أي رسالة بتبدأ بـ slash معناها path على الموقع. جمّعهم في list، وخُد أول حتة من الرسالة بس بـ split على الـ colon، واطبع الليستة علشان نراجعها.

تمرين

جُوّه الـ loop: if msg.startswith("/"): paths.append(msg.split(":")[0])

الحل: نشغّل… اتنين paths جاهزين للمراجعة اليدوية.

main.py
# Saved output of: nikto -h http://TARGET  (shortened, as (id, message))
findings = [
    ("server", "Apache/2.4.49 appears to be outdated"),
    ("OSVDB-3233", "/icons/README: Apache default file found"),
    ("OSVDB-3268", "/config/: Directory indexing found"),
    ("headers", "X-Frame-Options header is not present"),
]

paths = []
for fid, msg in findings:
    if msg.startswith("/"):
        paths.append(msg.split(":")[0])
print("check by hand:", paths)

المخرجات

check by hand: ['/icons/README', '/config/']

لحد دلوقتي كل أدواتنا للـ web. الدرس الجاي أداة أكبر، بتفحص الشبكة كلها مش الـ web بس، وبتطلّع تقرير كامل: OpenVAS. يلا بينا.

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مراجعة شاملة