Pemaksa jalur web tingkat lanjut
dirsearch sedang dikembangkan secara aktif oleh @maurosoria dan @shelld3v
Jangkau server Discord kami untuk berkomunikasi dengan tim sebaik-baiknya
Persyaratan: python 3.9 atau lebih tinggi
Pilih salah satu opsi instalasi berikut:
git clone https://github.com/maurosoria/dirsearch.git --depth 1
( DIANJURKAN )docker build -t "dirsearch:v0.4.3" .
(informasi lebih lanjut dapat ditemukan di sini)pip3 install dirsearch
atau pip install dirsearch
sudo apt-get install dirsearch
(tidak digunakan lagi) Ringkasan:
%EXT%
dengan ekstensi dari -e flag.%EXT%
(seperti SecLists), -f | --force-extensions saklar diperlukan untuk menambahkan ekstensi ke setiap kata dalam daftar kata, serta /
.wordlist1.txt,wordlist2.txt
.Contoh:
index.%EXT%
Meneruskan asp dan aspx sebagai ekstensi akan menghasilkan kamus berikut:
index
index.asp
index.aspx
admin
Meneruskan php dan html sebagai ekstensi dengan tanda -f / --force-extensions akan menghasilkan kamus berikut:
admin
admin.php
admin.html
admin/
login.html
Meneruskan jsp dan jspa sebagai ekstensi dengan tanda -O / --overwrite-extensions akan menghasilkan kamus berikut:
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
Secara default, config.ini
di dalam direktori dirsearch Anda digunakan sebagai file konfigurasi tetapi Anda dapat memilih file lain melalui flag --config
atau variabel lingkungan 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
Beberapa contoh cara menggunakan dirsearch - itulah argumen yang paling umum. Jika Anda membutuhkan semuanya, cukup gunakan argumen -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 memungkinkan Anda untuk menghentikan sementara kemajuan pemindaian dengan CTRL+C, dari sini, Anda dapat menyimpan kemajuan (dan melanjutkannya nanti), melewati target saat ini, atau melewati subdirektori saat ini.
admin/
, ia akan melakukan brute-force admin/*
( *
adalah tempatnya melakukan brute force). Untuk mengaktifkan fitur ini, gunakan tanda -r (atau --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
Ada 2 opsi lagi: --force-recursive dan --deep-recursive
/
a/b/c
=> tambahkan a/
, a/b/
) Jika ada subdirektori yang tidak ingin Anda brute force secara rekursif, gunakan --exclude-subdirs
python3 dirsearch.py -e php,html,js -u https://target -r --exclude-subdirs image/,media/,css/
Nomor thread ( -t | --threads ) mencerminkan jumlah proses brute force yang dipisahkan. Dan semakin besar nomor threadnya, semakin cepat pencarian berjalan. Secara default, jumlah thread adalah 25, tetapi Anda dapat menambahnya jika ingin mempercepat progres.
Meski begitu, kecepatannya masih sangat bergantung pada waktu respons server. Dan sebagai peringatan, kami menyarankan Anda untuk menjaga jumlah thread tidak terlalu besar karena dapat menyebabkan DoS (Denial of Service).
python3 dirsearch.py -e php,htm,js,bak,zip,tgz,txt -u https://target -t 20
Anda dapat beralih ke mode asinkron dengan --async
, biarkan dirsearch menggunakan coroutine alih-alih thread untuk menangani permintaan bersamaan.
Secara teori, mode asinkron menawarkan kinerja yang lebih baik dan penggunaan CPU yang lebih rendah karena tidak memerlukan peralihan antar konteks thread yang berbeda. Selain itu, menekan CTRL+C akan segera menjeda kemajuan tanpa perlu menunggu thread ditangguhkan.
python3 dirsearch.py -e php -u https://target --prefixes .,admin,_
Daftar Kata:
tools
Dihasilkan dengan awalan:
tools
.tools
admintools
_tools
python3 dirsearch.py -e php -u https://target --suffixes ~
Daftar Kata:
index.php
internal
Dihasilkan dengan sufiks:
index.php
internal
index.php~
internal~
Di dalam folder db/
, ada beberapa "file daftar hitam". Jalur dalam file tersebut akan disaring dari hasil pemindaian jika memiliki status yang sama seperti yang disebutkan dalam nama file.
Contoh: Jika Anda menambahkan admin.php
ke db/403_blacklist.txt
, setiap kali Anda melakukan pemindaian, admin.php
mengembalikan 403, hasilnya akan disaring.
Gunakan -i | --termasuk-status dan -x | --exclude-status untuk memilih kode status respons yang diizinkan dan tidak diizinkan
Untuk filter lebih lanjut: --exclude-sizes , --exclude-texts , --exclude-regexps , --exclude-redirects dan --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 memungkinkan Anda mengimpor permintaan mentah dari suatu file. Kontennya akan terlihat seperti ini:
GET /admin HTTP/1.1
Host: admin.example.com
Cache-Control: max-age=0
Accept: */*
Karena dirsearch tidak mungkin mengetahui skema URI, Anda perlu menyetelnya menggunakan flag --scheme
. Secara default, dirsearch secara otomatis mendeteksi skema tersebut.
Format daftar kata yang didukung: huruf besar, huruf kecil, kapitalisasi
admin
index.html
ADMIN
INDEX.HTML
Admin
Index.html
Gunakan -X | --exclude-extensions dengan daftar ekstensi akan menghapus semua jalur di daftar kata yang berisi ekstensi yang diberikan
python3 dirsearch.py -u https://target -X jsp
Daftar Kata:
admin.php
test.jsp
Setelah:
admin.php
python3 dirsearch.py -e php,html,js -u https://target --subdirs /,admin/,folder/
dirsearch mendukung SOCKS dan proxy HTTP, dengan dua opsi: server proxy atau daftar server proxy.
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
Format laporan yang didukung: sederhana , polos , 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
Masih banyak lagi yang bisa ditemukan, cobalah sendiri!
Instal Docker
curl -fsSL https://get.docker.com | bash
Untuk menggunakan buruh pelabuhan Anda memerlukan kekuatan pengguna super
Untuk membuat gambar
docker build -t " dirsearch:v0.4.3 " .
dirsearch adalah nama gambar dan v0.4.3 adalah versinya
Untuk menggunakan
docker run -it --rm " dirsearch:v0.4.3 " -u target -e php,html,js,zip
--proxy-list
--suffixes ~
dan --prefixes .
--remove-extensions
dan --suffixes /
!--cidr
, -F
, -q
dan akan mengurangi sebagian besar suara + negatif palsu saat melakukan brute-force dengan CIDR--skip-on-status 429
akan membantu Anda melewati target setiap kali target mengembalikan 429HEAD
HTTP daripada GET
--timeout 3 --retries 1
Kami telah menerima banyak bantuan dari banyak orang di seluruh dunia untuk menyempurnakan alat ini. Terima kasih banyak kepada semua orang yang telah membantu kami sejauh ini! Lihat CONTRIBUTORS.md untuk mengetahui siapa mereka.
Hak Cipta (C) Mauro Soria ([email protected])
Lisensi: Lisensi Publik Umum GNU, versi 2