
أنشئ قائمة كلمات مخصصة للـ Fuzzing
CWFF هي أداة تقوم بإنشاء قائمة كلمات خاصة عالية الجودة لاختبار الفحص/اكتشاف المحتوى بأقصى سرعة ممكنة باستخدام التزامن، وهي مستوحاة بشكل كبير من @tomnomnom في Who, What, Where, When, Wordlist #NahamCon2020.

CWFF [-h] [--threads] [--github] [--subdomains] [--recursive] [--js-libraries] [--connected-websites] [--juicy-files] [--use-filter-model] [-o] domain
positional arguments:
domain Target website(ofc)
optional arguments:
-h, --help Show this help message and exit
--threads The number of maximum concurrent threads to use (Default:1000)
--github Collect endpoints from a given github repo (ex:https://github.com/google/flax)
--subdomains Extract endpoints from subdomains also while search in the wayback machine!
--recursive Work on extracted endpoints recursively (Adds more endpoints but less accurate sometimes)!
--js-libraries Extract endpoints from JS libraries also, not just the JS written by them!
--connected-websites Include endpoints extracted from connected websites
--juicy-files Include endpoints extracted from juicy files like sitemap.xml and robots.txt
--use-filter-model Filter result endpoints with filter_model file
-o The output directory for the endpoints and parameters. (Default: website name)
إذًا فهو بشكل أساسي يقوم بجمع النقاط النهائية (endpoints) والمعلمات (parameters) للهدف ونطاقاته الفرعية باستخدام العديد من المصادر التي سنتحدث عنها الآن:
العديد من الأدوات تمر عبر الصفحة العلوية فقط من Wayback لتوفير الوقت، ولكن هنا نمر عبر جميع السجلات في وقت قليل، ولكن هذا أيضًا يجعل الأمر يستغرق وقتًا طويلاً عند استخدام العلم --subdomains.
<script>يحاول CWFF فصل مكتبات JS عن ملفات JS التي كتبها مطورو الموقع بالفعل، ويقوم بذلك من خلال النظر في أسماء ملفات JS.
بشكل افتراضي، يستخرج CWFF النقاط النهائية من ملفات JS التي كتبها المطورون فقط، لاستخدام مكتبات JS (غير مفيدة في الغالب) قم بتفعيل العلم --js-libraries.
--juicy-files، فسيقوم أيضًا باستخراج النقاط النهائية من ملفات مثل Sitemap.xml و robots.txt (قد يتم إضافة المزيد في المستقبل)--github، فسيقوم باستخراج المسارات من ذلك المستودع باستخدام واجهة برمجة تطبيقات GitHub (لا حاجة لمفتاح API).فقط للتوضيح، سيستخدم CWFF مسارات الملفات والأدلة فقط، لذا لن يقوم باستخراج النقاط النهائية من داخل الملفات نفسها!
--connected-websites، سيستخدم CWFF واجهة برمجة تطبيقات موقع builtwith (تحتاج إلى مفتاح ولكنه مجاني) لاستخراج المواقع المتصلة بالهدف من ملف العلاقات، ثم يستخرج النقاط النهائية من مصدر هذه المواقع.ملاحظة: يمكنك الحصول على مفتاح API الخاص بك من هذه الصفحة وتعيين المتغير في ملف
API_keys.py.
بعد جمع النقاط النهائية من كل هذه المصادر، إذا استخدمت العلم --recursive، فسيقوم CWFF باستخراج أجزاء من النقاط النهائية المجمعة بشكل متكرر.
parseq/javadoc/1.1.0/com ستصبح كل هذه النقاط النهائية:
parseq/javadoc/1.1.0/com
parseq/javadoc/1.1.0/
parseq/javadoc/
parseq/
javadoc/
1.1.0/
com
ملاحظة: جميع النقاط النهائية/المعلمات التي تم جمعها يتم تنظيفها وترتيبها بدون تكرار للحصول على نتيجة فريدة.
بالطبع بعد كل هذه المصادر وهذا العمل، سيكون هناك الكثير من النقاط النهائية غير المرغوب فيها/غير المفيدة بين المهمة، وهنا يأتي دور التصفية لتوفير الوقت والموارد.
في CWFF يمكنك اكتشاف وإزالة النقاط النهائية غير المرغوب فيها باستخدام ثلاث طرق:
يمكن تقديم جميع خيارات التصفية هذه عن طريق تعيين المتغيرات في ملف filter_model.py ثم استخدام العلم --use-filter-model عند بدء تشغيل CWFF.
إذا لم تكن لديك فكرة عن كيفية تعيين هذه المتغيرات، فانظر إلى التعليقات التي تركتها في الملف، إنها تلك التي أستخدمها غالبًا وفي لقطة الشاشة خفضت عدد النقاط النهائية المجمعة من 26,177 إلى 3,629.
في حال نسيت استخدام التصفية أثناء تشغيل CWFF، لا تقلق، لقد غطيت ذلك 😄
يمكنك استخدام السكريبت filter.py لتصفية النقاط النهائية التي لديك بالطريقة التالية وسيقوم بتحميل ملف filter_model.py تلقائيًا دون الحاجة إلى إعادة تشغيل CWFF:
python filter.py wordlist.txt output.txt
python3 -m pip install -r requirements.txt
python3 cwff.py --help
إذا كان عملي مفيدًا لك، فلا تتردد في شكري بشراء فنجان قهوة لي.
تم إنشاء CWFF للمساعدة في اختبار الاختراق وهي ليست مسؤولة عن أي استخدام خاطئ أو لأغراض غير قانونية.
نسخ كود من هذه الأداة أو استخدامه في أداة أخرى مسموح به طالما تذكر المصدر :smile