تعداد الويب: الـ Headers والتكنولوجيا

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

01 / ملخص الدرس

تعداد الويب: الـ Headers والتكنولوجيا

إزاي تعرف السيرفر واللغة والـ CMS من الـ HTTP Headers والـ Cookies، وأدوات زي whatweb و curl، وإيه اللي بيكشفه robots.txt و sitemap.xml، وتحلّلهم بـ Python.

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

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

لقينا 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. الاتنين إصدارات قديمة.

main.py
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.

main.py
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)
  1. 01يعني إيه جمع معلومات (Recon)؟
  2. 02سلبي ولا نشط؟ والنطاق القانوني
  3. 03WHOIS: مين صاحب الـ Domain؟
  4. 04سجلات DNS: كنز المعلومات
  5. 05اكتشاف الـ Subdomains
  6. 06Certificate Transparency: الشهادات بتتكلم
  7. 07Google Dorking
  8. 08OSINT: الموظفين والإيميلات
  9. 09الـ Metadata: أسرار جُوّه الملفات
  10. 10اكتشاف الأجهزة الشغّالة (Host Discovery)
  11. 11الـ Port Scanning بيشتغل إزاي؟
  12. 12Nmap: البداية
  13. 13أنواع الـ Scan والسرعة في Nmap
  14. 14كشف الخدمات والإصدارات ونظام التشغيل
  15. 15NSE Scripts وحفظ النتايج
  16. 16تعداد الويب: الـ Headers والتكنولوجياانت هنا
  17. 17الـ Directory Brute Force
  18. 18تعداد SMB
  19. 19تعداد خدمات تانية: FTP و DNS و SNMP وغيرهم
  20. 20تنظيم نتايج الـ Recon
  21. 21أتمتة الـ Recon بـ Python
  22. 22مراجعة شاملة وخطة Recon