تعداد الويب: الـ Headers والتكنولوجيا
إزاي تعرف السيرفر واللغة والـ CMS من الـ HTTP Headers والـ Cookies، وأدوات زي whatweb و curl، وإيه اللي بيكشفه robots.txt و sitemap.xml، وتحلّلهم بـ Python.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
لقينا port eighty مفتوح. قبل ما نهاجم أي حاجة، محتاجين نعرف الموقع ده معمول بإيه: أنهي web server؟ أنهي لغة؟ وفيه CMS زي WordPress ولا لأ؟
أول مكان تبص فيه: الـ HTTP Headers. Server بيقولّك Apache أو nginx أو IIS، وساعات بالإصدار. X Powered By بيقولّك اللغة، زي PHP أو ASP dot NET. واسم الـ cookie نفسه بيفضح، زي PHPSESSID يعني PHP.
تاني مكان: ملفات بيحطها الموقع للـ search engines. robots dot txt بيقول لـ Google: ماتدخلش الـ paths دي، وده بالظبط اللي إحنا عايزين نعرفه. و sitemap dot xml فيه قايمة بصفحات الموقع. وكمان source الصفحة، فيه comments وأسماء ملفات JavaScript. هنا رد HTTP ومحتوى robots dot txt. نحوّل الـ headers لـ dictionary، ونطبع Server و X Powered By. نشغّل… Apache اتنين أربعة تمنتاشر، و PHP سبعة zero. الاتنين إصدارات قديمة.
response = """HTTP/1.1 200 OK
Server: Apache/2.4.18 (Ubuntu)
X-Powered-By: PHP/7.0.33
Set-Cookie: PHPSESSID=8f2k1; path=/
Content-Type: text/html"""
robots = """User-agent: *
Disallow: /admin/
Disallow: /backup/
Disallow: /wp-login.php"""
headers = {}
for line in response.splitlines()[1:]:
key, value = line.split(": ", 1)
headers[key] = value
for key in ["Server", "X-Powered-By"]:
print(f"{key:13} {headers.get(key, '-')}")المخرجات
Server Apache/2.4.18 (Ubuntu) X-Powered-By PHP/7.0.33
دورك: طلّع كل الـ paths اللي بعد Disallow في robots dot txt.
لكل سطر بيبدأ بـ "Disallow": خد الجزء بعد ": ".
الحل: نشغّل… admin و backup و wp login. يعني الموقع WordPress، وفيه folder اسمه backup.
response = """HTTP/1.1 200 OK
Server: Apache/2.4.18 (Ubuntu)
X-Powered-By: PHP/7.0.33
Set-Cookie: PHPSESSID=8f2k1; path=/
Content-Type: text/html"""
robots = """User-agent: *
Disallow: /admin/
Disallow: /backup/
Disallow: /wp-login.php"""
headers = {}
for line in response.splitlines()[1:]:
key, value = line.split(": ", 1)
headers[key] = value
for key in ["Server", "X-Powered-By"]:
print(f"{key:13} {headers.get(key, '-')}")
hidden = [line.split(": ", 1)[1] for line in robots.splitlines() if line.startswith("Disallow")]
print("robots.txt paths:", hidden)المخرجات
Server Apache/2.4.18 (Ubuntu) X-Powered-By PHP/7.0.33 robots.txt paths: ['/admin/', '/backup/', '/wp-login.php']
الدرس الجاي: إزاي تلاقي صفحات وملفات مخبّية مش موجودة في robots خالص، بالـ Directory Brute Force. يلا بينا.
03 / دروس المسار (22)
- 01يعني إيه جمع معلومات (Recon)؟
- 02سلبي ولا نشط؟ والنطاق القانوني
- 03WHOIS: مين صاحب الـ Domain؟
- 04سجلات DNS: كنز المعلومات
- 05اكتشاف الـ Subdomains
- 06Certificate Transparency: الشهادات بتتكلم
- 07Google Dorking
- 08OSINT: الموظفين والإيميلات
- 09الـ Metadata: أسرار جُوّه الملفات
- 10اكتشاف الأجهزة الشغّالة (Host Discovery)
- 11الـ Port Scanning بيشتغل إزاي؟
- 12Nmap: البداية
- 13أنواع الـ Scan والسرعة في Nmap
- 14كشف الخدمات والإصدارات ونظام التشغيل
- 15NSE Scripts وحفظ النتايج
- 16تعداد الويب: الـ Headers والتكنولوجياانت هنا
- 17الـ Directory Brute Force
- 18تعداد SMB
- 19تعداد خدمات تانية: FTP و DNS و SNMP وغيرهم
- 20تنظيم نتايج الـ Recon
- 21أتمتة الـ Recon بـ Python
- 22مراجعة شاملة وخطة Recon