الفحص بـ Nmap NSE
إزاي تستخدم الـ Nmap Scripting Engine في فحص الثغرات: الـ categories زي vuln و safe، وتشغيل script معيّن، وقراية النتيجة، وليه VULNERABLE مش دايمًا معناها ثغرة أكيدة، وتفلتر النتايج بـ Python.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
خلّصنا البحث اليدوي. دلوقتي ندخل على الفحص الأوتوماتيك: أدوات بتدوّر على الثغرات بدالك. وأول أداة، وإنت أصلًا عندك من الكورس اللي فات: Nmap.
Nmap مش بس بيعمل scan للـ ports. جُوّاه محرّك اسمه NSE، يعني Nmap Scripting Engine. ده مجموعة scripts مكتوبة بلغة Lua. كل script بيعمل حاجة: يكتشف خدمة، أو يفحص ثَغْرة، أو حتى يجرّب استغلال بسيط.
الـ scripts مترتّبة في categories. vuln: بيفحص ثغرات معروفة. safe: scripts مش بتأذي الهدف. exploit: بيجرّب يستغل فعلًا، وده أخطر. خد بالك: category زي exploit ممكن تأثّر على الخدمة، فما تشغّلهاش على production من غير إذن.
إزاي تشغّلها؟ dash dash script وبعده اسم الـ category أو الـ script. script vuln بيشغّل كل scripts الـ vuln. وتقدر تحدّد script بالاسم، زي http dash vuln dash الـ CVE. وممكن تبعت arguments بـ dash dash script dash args.
وأهم حاجة في الدرس: النتيجة بتقول VULNERABLE، بس دي مش شهادة نهائية. ساعات الـ script بيتأكد فعلًا من الثَغْرة. وساعات بيخمّن من الإصدار بس، فيطلع False Positive. اقرا سطر State كويس: VULNERABLE، ولا LIKELY VULNERABLE، ولا NOT VULNERABLE. هنا نتيجة Nmap NSE على port واحد، محفوظة ومختصرة في list. كل سطر فيه اسم الـ script والسطر اللي طبعه، وبنطبعهم كلهم زي ما هُمّا. نشغّل… أربع سطور: الـ server header، والثَغْرة، والـ enum.
# Saved output of: nmap -sV --script vuln -p80 TARGET (one port, shortened)
# Each line NSE printed under the port, as (script, line).
output = [
("http-server-header", "Apache/2.4.49 (Unix)"),
("http-vuln-cve2021-41773", "State: VULNERABLE"),
("http-vuln-cve2021-41773", " Path traversal in Apache 2.4.49"),
("http-enum", "/icons/: Potentially interesting folder"),
]
for script, line in output:
print(f"[{script}] {line}")المخرجات
[http-server-header] Apache/2.4.49 (Unix) [http-vuln-cve2021-41773] State: VULNERABLE [http-vuln-cve2021-41773] Path traversal in Apache 2.4.49 [http-enum] /icons/: Potentially interesting folder
دورك: إحنا مهتمين بفحص الثغرات بس. اطبع السطور اللي من scripts الـ vuln بس، يعني اسم الـ script بيبدأ بـ http dash vuln dash. سيب الباقي.
جُوّه الـ loop: if not script.startswith("http-vuln-"): continue
الحل: نشغّل… سطرين بس، بتاعين الثَغْرة.
# Saved output of: nmap -sV --script vuln -p80 TARGET (one port, shortened)
# Each line NSE printed under the port, as (script, line).
output = [
("http-server-header", "Apache/2.4.49 (Unix)"),
("http-vuln-cve2021-41773", "State: VULNERABLE"),
("http-vuln-cve2021-41773", " Path traversal in Apache 2.4.49"),
("http-enum", "/icons/: Potentially interesting folder"),
]
for script, line in output:
if not script.startswith("http-vuln-"):
continue
print(f"[{script}] {line}")المخرجات
[http-vuln-cve2021-41773] State: VULNERABLE [http-vuln-cve2021-41773] Path traversal in Apache 2.4.49
كده عندنا أول أداة فحص أوتوماتيك. الدرس الجاي أداة أحدث وأسرع للـ web، بتشتغل بـ templates: Nuclei. يلا بينا.
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مراجعة شاملة