
أداة اكتشاف محتوى الويب وواجهات برمجة التطبيقات عالية السرعة التي تخترق المسارات باستخدام مجموعات بيانات Swagger المجمعة، وتدعم المسح العميق، وقوائم الكلمات المخصصة، والمسح المتزامن للمضيفين.

لأطول فترة، كان اكتشاف المحتوى يركز على إيجاد الملفات والمجلدات. بينما هذا الأسلوب فعال لخوادم الويب القديمة التي تستضيف ملفات ثابتة أو تستجيب بـ 3xx عند مسار جزئي، لم يعد فعالاً للتطبيقات الحديثة، خاصة واجهات برمجة التطبيقات (APIs).
مع الوقت، شهدنا استثمار الكثير من الوقت في جعل أدوات اكتشاف المحتوى أسرع لاستخدام قوائم كلمات أكبر، لكن فن اكتشاف المحتوى لم يشهد ابتكاراً جديداً.
Kiterunner هي أداة قادرة ليس فقط على أداء اكتشاف المحتوى التقليدي بسرعات فائقة، بل أيضاً على تخمين المسارات/النقاط النهائية في التطبيقات الحديثة.
أطر العمل الحديثة مثل Flask وRails وExpress وDjango وغيرها تتبع نموذج تعريف المسارات بشكل صريح والتي تتوقع طرق HTTP معينة، ورؤوس، ومعاملات، وقيم.
عند استخدام أدوات اكتشاف المحتوى التقليدية، غالباً ما تفوت هذه المسارات ولا يمكن اكتشافها بسهولة.
من خلال تجميع مجموعة من مواصفات Swagger وتكثيفها في مخططنا الخاص، يمكن لـ Kiterunner استخدام هذه المجموعة لتخمين نقاط نهاية API عن طريق إرسال طريقة HTTP الصحيحة، والرؤوس، والمسار، والمعاملات، والقيم لكل طلب ترسله.
تم جمع ملفات Swagger من عدة مصادر بيانات، بما في ذلك مسح واسع للإنترنت لأكثر من 40 مساراً شائعاً لـ Swagger. شملت المصادر الأخرى GitHub عبر BigQuery، وAPIs.guru.
يمكنك تنزيل نسخة مبنية مسبقاً من https://github.com/assetnote/kiterunner/releases.
make build
ln -s $(pwd)/dist/kr /usr/local/bin/kr
kr kb compile routes.json routes.kite
kr scan hosts.txt -w routes.kite -x 20 -j 100 --ignore-length=1053
يمكن العثور على مجموعات بيانات JSON أدناه:
- [routes-large.json](https://wordlists-cdn.assetnote.io/rawdata/kiterunner/routes-large.json.tar.gz) (118MB مضغوط، 2.6GB بعد فك الضغط)
- [routes-small.json](https://wordlists-cdn.assetnote.io/rawdata/kiterunner/routes-small.json.tar.gz) (14MB مضغوط، 228MB بعد فك الضغط)
بدلاً من ذلك، من الممكن تنزيل ملفات `.kite` المترجمة من الروابط أدناه:
- [routes-large.kite](https://wordlists-cdn.assetnote.io/data/kiterunner/routes-large.kite.tar.gz) (40MB مضغوط، 183M بعد فك الضغط)
- [routes-small.kite](https://wordlists-cdn.assetnote.io/data/kiterunner/routes-small.kite.tar.gz) (2MB مضغوط، 35MB بعد فك الضغط)
## AUR
يمكن للمستخدمين الذين يستخدمون توزيعة قائمة على Arch تنزيل الثنائي المبني مسبقًا من [AUR](https://aur.archlinux.org/packages/kiterunner-bin/)
يمكنك استخدام "مساعد AUR" مثل `yay` لتثبيت kiterunner```
yay -S kiterunner-bin
kr [scan|brute] [flags]
- `<input>` يمكن أن يكون ملفًا، أو نطاقًا، أو URI. سنقوم بمعالجته لك. راجع [تنسيق الإدخال/المضيف](#inputhost-formatting) لمزيد من التفاصيل```
# Just have a list of hosts and no wordlist
kr scan hosts.txt -A=apiroutes-210328:20000 -x 5 -j 100 --fail-status-codes 400,401,404,403,501,502,426,411
# You have your own wordlist but you want assetnote wordlists too
kr scan target.com -w routes.kite -A=apiroutes-210328:20000 -x 20 -j 1 --fail-status-codes 400,401,404,403,501,502,426,411
# Bruteforce like normal but with the first 20000 words
kr brute https://target.com/subapp/ -A=aspx-210328:20000 -x 20 -j 1
# Use a dirsearch style wordlist with %EXT%
kr brute https://target.com/subapp/ -w dirsearch.txt -x 20 -j 1 -exml,asp,aspx,ashx -D
Usage: kite scan [flags]
Flags: -A, --assetnote-wordlist strings use the wordlists from wordlist.assetnote.io. specify the type/name to use, e.g. apiroutes-210228. You can specify an additional maxlength to use only the first N values in the wordlist, e.g. apiroutes-210228;20000 will only use the first 20000 lines in that wordlist --blacklist-domain strings domains that are blacklisted for redirects. We will not follow redirects to these domains --delay duration delay to place inbetween requests to a single host --disable-precheck whether to skip host discovery --fail-status-codes ints which status codes blacklist as fail. if this is set, this will override success-status-codes --filter-api strings only scan apis matching this ksuid --force-method string whether to ignore the methods specified in the ogl file and force this method -H, --header strings headers to add to requests (default [x-forwarded-for: 127.0.0.1]) -h, --help help for scan --ignore-length strings a range of content length bytes to ignore. you can have multiple. e.g. 100-105 or 1234 or 123,34-53. This is inclusive on both ends --kitebuilder-full-scan perform a full scan without first performing a phase scan. -w, --kitebuilder-list strings ogl wordlist to use for scanning -x, --max-connection-per-host int max connections to a single host (default 3) -j, --max-parallel-hosts int max number of concurrent hosts to scan at once (default 50) --max-redirects int maximum number of redirects to follow (default 3) -d, --preflight-depth int when performing preflight checks, what directory depth do we attempt to check. 0 means that only the docroot is checked (default 1) --profile-name string name for profile output file --progress a progress bar while scanning. by default enabled only on Stderr (default true) --quarantine-threshold int if the host return N consecutive hits, we quarantine the host as wildcard. Set to 0 to disable (default 10) --success-status-codes ints which status codes whitelist as success. this is the default mode -t, --timeout duration timeout to use on all requests (default 3s) --user-agent string user agent to use for requests (default "Chrome. Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36") --wildcard-detection can be set to false to disable wildcard redirect detection (default true)