الـ Directory Brute Force

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

01 / ملخص الدرس

الـ Directory Brute Force

إزاي تلاقي paths وملفات مخبّية بـ gobuster و ffuf و wordlists زي SecLists، وتفهم الـ Status Codes، وتجرّب Extensions، وتعمل brute force بسيط بـ Python.

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

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

مش كل صفحات الموقع ليها links. فيه صفحات admin، وملفات backup، و folders قديمة، محدش حط لها link، بس لسه موجودة على الـ server.

الفكرة: تجرّب آلاف الأسماء من wordlist، وتشوف الـ server بيرد بإيه. الأدوات: gobuster و ffuf و feroxbuster. والـ wordlists الأشهر في SecLists، زي common dot txt.

لازم تفهم الـ Status Codes: two hundred، الصفحة موجودة. three oh one أو three oh two، redirect، غالباً لصفحة login. four oh three، موجودة بس ممنوع تدخل، وده معناه إن فيه حاجة هنا. و four oh four، مش موجودة. عندنا web server وهمي للتجربة، و function اسمها get بترجّع الـ status. نلِف على الـ wordlist، ونطبع أي حاجة مش four oh four، بنفس شكل gobuster. نشغّل… لقينا admin و backup و uploads. بس فيه ملفات زي login dot php و config dot php dot bak ما ظهرتش، علشان إحنا بنجرّب أسماء من غير extensions.

main.py
# Our lab web server: path -> HTTP status (a real tool sends GET requests)
SITE = {"/": 200, "/admin": 302, "/backup": 403, "/uploads": 200,
        "/config.php.bak": 200, "/login.php": 200}

def get(path):
    return SITE.get(path, 404)

wordlist = ["admin", "images", "backup", "uploads", "test", "login"]

for word in wordlist:
    path = "/" + word
    status = get(path)
    if status != 404:
        print(f"{path:18} (Status: {status})")

المخرجات

/admin             (Status: 302)
/backup            (Status: 403)
/uploads           (Status: 200)

دورك: جرّب كل كلمة مع تلات extensions: من غير، و dot php، و dot php dot bak. وضيف كلمة config للـ wordlist.

تمرين

extensions = ["", ".php", ".php.bak"] ولِف عليهم جُوّه الـ loop.

الحل: نشغّل… ظهر config dot php dot bak، وده ممكن يبقى فيه باسورد الـ database على طول. علشان كده الـ extensions مهمة جداً.

main.py
# Our lab web server: path -> HTTP status (a real tool sends GET requests)
SITE = {"/": 200, "/admin": 302, "/backup": 403, "/uploads": 200,
        "/config.php.bak": 200, "/login.php": 200}

def get(path):
    return SITE.get(path, 404)

wordlist = ["admin", "images", "backup", "uploads", "test", "login"]

extensions = ["", ".php", ".php.bak"]

for word in wordlist + ["config"]:
    for ext in extensions:
        path = "/" + word + ext
        status = get(path)
        if status != 404:
            print(f"{path:18} (Status: {status})")

المخرجات

/admin             (Status: 302)
/backup            (Status: 403)
/uploads           (Status: 200)
/login.php         (Status: 200)
/config.php.bak    (Status: 200)

الدرس الجاي: خدمة مهمة جداً في شبكات Windows: SMB. يلا بينا.

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