مسار ويب متقدم للقوة الغاشمة
يتم تطوير dirsearch بشكل نشط بواسطة @maurosoria و@shelld3v
قم بالوصول إلى خادم Discord الخاص بنا للتواصل مع الفريق في أحسن الأحوال
المتطلبات: بيثون 3.9 أو أعلى
اختر أحد خيارات التثبيت هذه:
git clone https://github.com/maurosoria/dirsearch.git --depth 1
( موصى به )docker build -t "dirsearch:v0.4.3" .
(مزيد من المعلومات يمكن العثور عليها هنا)pip3 install dirsearch
أو pip install dirsearch
sudo apt-get install dirsearch
(مهمل) ملخص:
%EXT%
بامتدادات من العلامة -e .%EXT%
(مثل SecLists)، -f | --force-extensions مطلوب التبديل لإلحاق امتدادات بكل كلمة في قائمة الكلمات، بالإضافة إلى /
.wordlist1.txt,wordlist2.txt
.أمثلة:
index.%EXT%
سيؤدي تمرير asp و aspx كملحقين إلى إنشاء القاموس التالي:
index
index.asp
index.aspx
admin
سيؤدي تمرير php و html كامتدادات مع علامة -f / --force-extensions إلى إنشاء القاموس التالي:
admin
admin.php
admin.html
admin/
login.html
سيؤدي تمرير jsp و jspa كامتدادات مع علامة -O / --overwrite-extensions إلى إنشاء القاموس التالي:
login.html
login.jsp
login.jspa
Usage: dirsearch.py [-u|--url] target [-e|--extensions] extensions [options]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
Mandatory:
-u URL, --url=URL Target URL(s), can use multiple flags
-l PATH, --urls-file=PATH
URL list file
--stdin Read URL(s) from STDIN
--cidr=CIDR Target CIDR
--raw=PATH Load raw HTTP request from file (use '--scheme' flag
to set the scheme)
--nmap-report=PATH Load targets from nmap report (Ensure the inclusion of
the -sV flag during nmap scan for comprehensive
results)
-s SESSION_FILE, --session=SESSION_FILE
Session file
--config=PATH Path to configuration file (Default:
'DIRSEARCH_CONFIG' environment variable, otherwise
'config.ini')
Dictionary Settings:
-w WORDLISTS, --wordlists=WORDLISTS
Wordlist files or directories contain wordlists
(separated by commas)
-e EXTENSIONS, --extensions=EXTENSIONS
Extension list separated by commas (e.g. php,asp)
-f, --force-extensions
Add extensions to the end of every wordlist entry. By
default dirsearch only replaces the %EXT% keyword with
extensions
-O, --overwrite-extensions
Overwrite other extensions in the wordlist with your
extensions (selected via `-e`)
--exclude-extensions=EXTENSIONS
Exclude extension list separated by commas (e.g.
asp,jsp)
--remove-extensions
Remove extensions in all paths (e.g. admin.php ->
admin)
--prefixes=PREFIXES
Add custom prefixes to all wordlist entries (separated
by commas)
--suffixes=SUFFIXES
Add custom suffixes to all wordlist entries, ignore
directories (separated by commas)
-U, --uppercase Uppercase wordlist
-L, --lowercase Lowercase wordlist
-C, --capital Capital wordlist
General Settings:
-t THREADS, --threads=THREADS
Number of threads
--async Enable asynchronous mode
-r, --recursive Brute-force recursively
--deep-recursive Perform recursive scan on every directory depth (e.g.
api/users -> api/)
--force-recursive Do recursive brute-force for every found path, not
only directories
-R DEPTH, --max-recursion-depth=DEPTH
Maximum recursion depth
--recursion-status=CODES
Valid status codes to perform recursive scan, support
ranges (separated by commas)
--subdirs=SUBDIRS Scan sub-directories of the given URL[s] (separated by
commas)
--exclude-subdirs=SUBDIRS
Exclude the following subdirectories during recursive
scan (separated by commas)
-i CODES, --include-status=CODES
Include status codes, separated by commas, support
ranges (e.g. 200,300-399)
-x CODES, --exclude-status=CODES
Exclude status codes, separated by commas, support
ranges (e.g. 301,500-599)
--exclude-sizes=SIZES
Exclude responses by sizes, separated by commas (e.g.
0B,4KB)
--exclude-text=TEXTS
Exclude responses by text, can use multiple flags
--exclude-regex=REGEX
Exclude responses by regular expression
--exclude-redirect=STRING
Exclude responses if this regex (or text) matches
redirect URL (e.g. '/index.html')
--exclude-response=PATH
Exclude responses similar to response of this page,
path as input (e.g. 404.html)
--skip-on-status=CODES
Skip target whenever hit one of these status codes,
separated by commas, support ranges
--min-response-size=LENGTH
Minimum response length
--max-response-size=LENGTH
Maximum response length
--max-time=SECONDS Maximum runtime for the scan
--exit-on-error Exit whenever an error occurs
Request Settings:
-m METHOD, --http-method=METHOD
HTTP method (default: GET)
-d DATA, --data=DATA
HTTP request data
--data-file=PATH File contains HTTP request data
-H HEADERS, --header=HEADERS
HTTP request header, can use multiple flags
--headers-file=PATH
File contains HTTP request headers
-F, --follow-redirects
Follow HTTP redirects
--random-agent Choose a random User-Agent for each request
--auth=CREDENTIAL Authentication credential (e.g. user:password or
bearer token)
--auth-type=TYPE Authentication type (basic, digest, bearer, ntlm, jwt)
--cert-file=PATH File contains client-side certificate
--key-file=PATH File contains client-side certificate private key
(unencrypted)
--user-agent=USER_AGENT
--cookie=COOKIE
Connection Settings:
--timeout=TIMEOUT Connection timeout
--delay=DELAY Delay between requests
-p PROXY, --proxy=PROXY
Proxy URL (HTTP/SOCKS), can use multiple flags
--proxies-file=PATH
File contains proxy servers
--proxy-auth=CREDENTIAL
Proxy authentication credential
--replay-proxy=PROXY
Proxy to replay with found paths
--tor Use Tor network as proxy
--scheme=SCHEME Scheme for raw request or if there is no scheme in the
URL (Default: auto-detect)
--max-rate=RATE Max requests per second
--retries=RETRIES Number of retries for failed requests
--ip=IP Server IP address
--interface=NETWORK_INTERFACE
Network interface to use
Advanced Settings:
--crawl Crawl for new paths in responses
View Settings:
--full-url Full URLs in the output (enabled automatically in
quiet mode)
--redirects-history
Show redirects history
--no-color No colored output
-q, --quiet-mode Quiet mode
Output Settings:
-o PATH/URL, --output=PATH/URL
Output file or MySQL/PostgreSQL URL (Format:
scheme://[username:password@]host[:port]/database-
name)
--format=FORMAT Report format (Available: simple, plain, json, xml,
md, csv, html, sqlite, mysql, postgresql)
--log=PATH Log file
افتراضيًا، يتم استخدام config.ini
الموجود داخل دليل dirsearch كملف تكوين، ولكن يمكنك تحديد ملف آخر عبر علامة --config
أو متغير البيئة DIRSEARCH_CONFIG
.
# If you want to edit dirsearch default configurations, you can
# edit values in this file. Everything after `#` is a comment
# and won't be applied
[general]
threads = 25
async = False
recursive = False
deep-recursive = False
force-recursive = False
recursion-status = 200-399,401,403
max-recursion-depth = 0
exclude-subdirs = %%ff/,. ; /,..;/,;/,./,../,%%2e/,%%2e%%2e/
random-user-agents = False
max-time = 0
exit-on-error = False
# subdirs = /,api/
# include-status = 200-299,401
# exclude-status = 400,500-999
# exclude-sizes = 0b,123gb
# exclude-text = "Not found"
# exclude-regex = "^403$"
# exclude-redirect = "*/error.html"
# exclude-response = 404.html
# skip-on-status = 429,999
[dictionary]
default-extensions = php,aspx,jsp,html,js
force-extensions = False
overwrite-extensions = False
lowercase = False
uppercase = False
capitalization = False
# exclude-extensions = old,log
# prefixes = .,admin
# suffixes = ~,.bak
# wordlists = /path/to/wordlist1.txt,/path/to/wordlist2.txt
[request]
http-method = get
follow-redirects = False
# headers-file = /path/to/headers.txt
# user-agent = MyUserAgent
# cookie = SESSIONID=123
[connection]
timeout = 7.5
delay = 0
max-rate = 0
max-retries = 1
# # By disabling `scheme` variable, dirsearch will automatically identify the URI scheme
# scheme = http
# proxy = localhost:8080
# proxy-file = /path/to/proxies.txt
# replay-proxy = localhost:8000
[advanced]
crawl = False
[view]
full-url = False
quiet-mode = False
color = True
show-redirects-history = False
[output]
# # Support: plain, simple, json, xml, md, csv, html, sqlite
report-format = plain
autosave-report = True
autosave-report-folder = reports/
# log-file = /path/to/dirsearch.log
# log-file-size = 50000000
بعض الأمثلة حول كيفية استخدام dirsearch - تلك هي الوسائط الأكثر شيوعًا. إذا كنت بحاجة إلى كل شيء، فما عليك سوى استخدام الوسيطة -h .
python3 dirsearch.py -u https://target
python3 dirsearch.py -e php,html,js -u https://target
python3 dirsearch.py -e php,html,js -u https://target -w /path/to/wordlist
يتيح لك dirsearch إيقاف تقدم المسح مؤقتًا باستخدام CTRL+C، ومن هنا، يمكنك حفظ التقدم (والمتابعة لاحقًا)، أو تخطي الهدف الحالي، أو تخطي الدليل الفرعي الحالي.
admin/
، فسيقوم بفرض القوة الغاشمة admin/*
( *
هو المكان الذي يتم فيه فرض القوة الغاشمة). لتمكين هذه الميزة، استخدم العلامة -r (أو --recursive ). python3 dirsearch.py -e php,html,js -u https://target -r
python3 dirsearch.py -e php,html,js -u https://target -r --max-recursion-depth 3 --recursion-status 200-399
هناك خياران إضافيان: --force-cursive و-- deep-recursive
/
a/b/c
=> add a/
, a/b/
) إذا كانت هناك أدلة فرعية لا تريد فرضها بشكل متكرر، فاستخدم --exclude-subdirs
python3 dirsearch.py -e php,html,js -u https://target -r --exclude-subdirs image/,media/,css/
يعكس رقم الخيط ( -t | --threads ) عدد عمليات القوة الغاشمة المنفصلة. وبالتالي، كلما كان رقم الخيط أكبر، كلما كان تشغيل dirsearch أسرع. بشكل افتراضي، يكون عدد المواضيع 25، ولكن يمكنك زيادته إذا كنت تريد تسريع التقدم.
وعلى الرغم من ذلك، لا تزال السرعة تعتمد كثيرًا على وقت استجابة الخادم. وكتحذير، ننصحك بألا يكون عدد المواضيع كبيرًا جدًا لأنه قد يتسبب في حجب الخدمة (DoS).
python3 dirsearch.py -e php,htm,js,bak,zip,tgz,txt -u https://target -t 20
يمكنك التبديل إلى الوضع غير المتزامن عن طريق --async
، واسمح لـ dirsearch باستخدام coroutines بدلاً من سلاسل الرسائل للتعامل مع الطلبات المتزامنة.
من الناحية النظرية، يوفر الوضع غير المتزامن أداءً أفضل واستخدامًا أقل لوحدة المعالجة المركزية لأنه لا يتطلب التبديل بين سياقات مختلفة. بالإضافة إلى ذلك، سيؤدي الضغط على CTRL+C إلى إيقاف التقدم مؤقتًا على الفور دون الحاجة إلى الانتظار حتى يتم تعليق سلاسل الرسائل.
python3 dirsearch.py -e php -u https://target --prefixes .,admin,_
قائمة الكلمات:
tools
تم إنشاؤها باستخدام البادئات:
tools
.tools
admintools
_tools
python3 dirsearch.py -e php -u https://target --suffixes ~
قائمة الكلمات:
index.php
internal
تم إنشاؤها مع اللواحق:
index.php
internal
index.php~
internal~
يوجد داخل مجلد db/
العديد من "ملفات القائمة السوداء". سيتم تصفية المسارات الموجودة في هذه الملفات من نتيجة الفحص إذا كانت لها نفس الحالة المذكورة في اسم الملف.
مثال: إذا قمت بإضافة admin.php
إلى db/403_blacklist.txt
، فكلما قمت بإجراء فحص فإن admin.php
يُرجع 403، فسيتم تصفيته من النتيجة.
استخدم -i | --include-status و- x | --exclude-status لتحديد رموز حالة الاستجابة المسموح بها وغير المسموح بها
لمزيد من المرشحات المتقدمة: --exclude-sizes و --exclude-texts و --exclude-regexps و --exclude-redirects و --exclude-response
python3 dirsearch.py -e php,html,js -u https://target --exclude-sizes 1B,243KB
python3 dirsearch.py -e php,html,js -u https://target --exclude-texts "403 Forbidden"
python3 dirsearch.py -e php,html,js -u https://target --exclude-regexps "^Error$"
python3 dirsearch.py -e php,html,js -u https://target --exclude-redirects "https://(.*).okta.com/*"
python3 dirsearch.py -e php,html,js -u https://target --exclude-response /error.html
يتيح لك dirsearch استيراد الطلب الأولي من ملف. سيكون المحتوى شيئًا يشبه هذا:
GET /admin HTTP/1.1
Host: admin.example.com
Cache-Control: max-age=0
Accept: */*
نظرًا لعدم وجود طريقة لـ dirsearch لمعرفة ما هو مخطط URI، فأنت بحاجة إلى تعيينه باستخدام علامة --scheme
. افتراضيًا، يقوم dirsearch بالكشف عن المخطط تلقائيًا.
تنسيقات قائمة الكلمات المدعومة: الأحرف الكبيرة والصغيرة والأحرف الكبيرة
admin
index.html
ADMIN
INDEX.HTML
Admin
Index.html
استخدم -X | --exclude-excludes مع قائمة الامتدادات ستزيل جميع المسارات في قائمة الكلمات التي تحتوي على الامتدادات المحددة
python3 dirsearch.py -u https://target -X jsp
قائمة الكلمات:
admin.php
test.jsp
بعد:
admin.php
python3 dirsearch.py -e php,html,js -u https://target --subdirs /,admin/,folder/
يدعم dirsearch وكيل SOCKS وHTTP، مع خيارين: خادم وكيل أو قائمة خوادم الوكيل.
python3 dirsearch.py -e php,html,js -u https://target --proxy 127.0.0.1:8080
python3 dirsearch.py -e php,html,js -u https://target --proxy socks5://10.10.0.1:8080
python3 dirsearch.py -e php,html,js -u https://target --proxylist proxyservers.txt
تنسيقات التقارير المدعومة: بسيط ، عادي ، json ، xml ، md ، csv ، html ، sqlite ، mysql ، postgresql
python3 dirsearch.py -e php -l URLs.txt --format plain -o report.txt
python3 dirsearch.py -e php -u https://target --format html -o target.json
cat urls.txt | python3 dirsearch.py --stdin
python3 dirsearch.py -u https://target --max-time 360
python3 dirsearch.py -u https://target --auth admin:pass --auth-type basic
python3 dirsearch.py -u https://target --header-list rate-limit-bypasses.txt
هناك المزيد لتكتشفه، جرب بنفسك!
قم بتثبيت عامل الميناء
curl -fsSL https://get.docker.com | bash
لاستخدام عامل الإرساء، تحتاج إلى قوة المستخدم الخارق
لإنشاء الصورة
docker build -t " dirsearch:v0.4.3 " .
dirsearch هو اسم الصورة و v0.4.3 هو الإصدار
للاستخدام
docker run -it --rm " dirsearch:v0.4.3 " -u target -e php,html,js,zip
--proxy-list
--suffixes ~
و --prefixes .
--remove-extensions
و --suffixes /
!--cidr
و -F
و -q
وسيقلل معظم الضوضاء + السلبيات الكاذبة عند التأثير الغاشم باستخدام CIDR--skip-on-status 429
سيساعدك على تخطي هدف كلما أعاد 429HEAD
HTTP بدلاً من GET
--timeout 3 --retries 1
لقد تلقينا الكثير من المساعدة من العديد من الأشخاص حول العالم لتحسين هذه الأداة. شكرا جزيلا لكل من ساعدنا حتى الآن! راجع CONTRIBUTORS.md لمعرفة من هم.
حقوق الطبع والنشر (C) ماورو سوريا ([email protected])
الترخيص: رخصة جنو العامة، الإصدار 2