1. Introduction
Not always the links of a web page are visible to the user, finding web links is also one of the most important parts of the pentest. Searching for hidden web links adds information and value to testers. There are a variety of tools to make this easier, such as Dirbuster, Dirb, Gobuster … but each has its own limitations.
DirBuster is written in Java and has only GUI interface.
Dirb is also a popular scan tool but does not support multithreading, scans that do not support multithreading are a lot of inconveniences.
Gobuster is also a very powerful tool written in Go, but the installation is more difficult on win or ubuntu than Dirsearch .
Dirsearch is an open source tool written in Python that works in the style of brute-forcing the structure of directories and files of the web. It can run on Windows, Linux, macOS. Dirsearch uses simple but effective command lines, it supports a lot of options such as multithreading, searching by list extensions, delay between requests, cookie set, user-agent, headers, proxy … That’s why dirsearch become the common tool most hackers and pentester use.
2. Install
First we need to clone dirsearch from GitHub
1 2 3 4 5 6 7 8 9 | ~$ <span class="token function">git</span> clone https://github.com/maurosoria/dirsearch.git Cloning into <span class="token string">'dirsearch'</span> <span class="token punctuation">..</span> . remote: Enumerating objects: 5, done. remote: Counting objects: 100% <span class="token punctuation">(</span> 5/5 <span class="token punctuation">)</span> , done. remote: Compressing objects: 100% <span class="token punctuation">(</span> 5/5 <span class="token punctuation">)</span> , done. remote: Total 1818 <span class="token punctuation">(</span> delta 0 <span class="token punctuation">)</span> , reused 3 <span class="token punctuation">(</span> delta 0 <span class="token punctuation">)</span> , pack-reused 1813 Receiving objects: 100% <span class="token punctuation">(</span> 1818/1818 <span class="token punctuation">)</span> , 17.69 MiB <span class="token operator">|</span> 2.38 MiB/s, done. Resolving deltas: 100% <span class="token punctuation">(</span> 1059/1059 <span class="token punctuation">)</span> , done. |
3. Configuration
There are many dirsearch runs like python, bash, Symbolic Link, alias configuration, you can choose one of the following.
1. Run in Python
As I mentioned above, dirsearch is written in Python, so just run dirsearch.py with Python3.
1 2 3 4 | $ <span class="token function">cd</span> dirsearch/ ~/dirsearch$ python3 dirsearch.py URL target is missing, try using -u <span class="token operator"><</span> url <span class="token operator">></span> |
2. Run with Bash
1 2 3 4 | $ <span class="token function">cd</span> dirsearch/ ~/dirsearch$ ./dirsearch.py URL target is missing, try using -u <span class="token operator"><</span> url <span class="token operator">></span> |
3. Use alias
Open .bashrc
and add alias dirsearch='python3 ~/dirsearch/dirsearch.py'
1 2 | ~$ <span class="token function">nano</span> ~/.bashrc |
1 2 | ~$ <span class="token function">source</span> ~/.bashrc |
Done, you just need to run the command dirsearch on the terminal when you stand in any directory.
1 2 3 | ~$ dirsearch URL target is missing, try using -u <span class="token operator"><</span> url <span class="token operator">></span> |
4. Use Symbolic Link
Can create a link to the / bin directory. It is the same as above you can also run the command dirsearch on the terminal when you stand in any directory.
1 2 3 4 | ~$ sudo ln -s ~/dirsearch/dirsearch.py /bin/dirsearch ~$ dirsearch URL target is missing, try using -u <url> |
4. Use dirsearch
To see the details of the options and the effects of each option, just add the -h option:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | ~$ dirsearch -h Usage: dirsearch <span class="token punctuation">[</span> -u <span class="token operator">|</span> --url <span class="token punctuation">]</span> target <span class="token punctuation">[</span> -e <span class="token operator">|</span> --extensions <span class="token punctuation">]</span> extensions <span class="token punctuation">[</span> options <span class="token punctuation">]</span> Options: -h, --help show this <span class="token function">help</span> message and <span class="token keyword">exit</span> Mandatory: -u URL, --url <span class="token operator">=</span> URL URL target -L URLLIST, --url-list <span class="token operator">=</span> URLLIST URL list target -e EXTENSIONS, --extensions <span class="token operator">=</span> EXTENSIONS Extension list separated by comma <span class="token punctuation">(</span> Example: php,asp <span class="token punctuation">)</span> -E, --extensions-list Use predefined list of common extensions Dictionary Settings: -w WORDLIST, --wordlist <span class="token operator">=</span> WORDLIST Customize wordlist <span class="token punctuation">(</span> separated by comma <span class="token punctuation">)</span> -l, --lowercase -f, --force-extensions Force extensions <span class="token keyword">for</span> every wordlist entry <span class="token punctuation">(</span> like <span class="token keyword">in</span> DirBuster <span class="token punctuation">)</span> General Settings: -s DELAY, --delay <span class="token operator">=</span> DELAY Delay between requests <span class="token punctuation">(</span> float number <span class="token punctuation">)</span> -r, --recursive Bruteforce recursively -R RECURSIVE_LEVEL_MAX, --recursive-level-max <span class="token operator">=</span> RECURSIVE_LEVEL_MAX Max recursion level <span class="token punctuation">(</span> subdirs <span class="token punctuation">)</span> <span class="token punctuation">(</span> Default: 1 <span class="token punctuation">[</span> only rootdir + 1 dir <span class="token punctuation">]</span> <span class="token punctuation">)</span> --suppress-empty, --suppress-empty --scan-subdir <span class="token operator">=</span> SCANSUBDIRS, --scan-subdirs <span class="token operator">=</span> SCANSUBDIRS Scan subdirectories of the given -u <span class="token operator">|</span> --url <span class="token punctuation">(</span> separated by comma <span class="token punctuation">)</span> --exclude-subdir <span class="token operator">=</span> EXCLUDESUBDIRS, --exclude-subdirs <span class="token operator">=</span> EXCLUDESUBDIRS Exclude the following subdirectories during recursive scan <span class="token punctuation">(</span> separated by comma <span class="token punctuation">)</span> -t THREADSCOUNT, --threads <span class="token operator">=</span> THREADSCOUNT Number of Threads -x EXCLUDESTATUSCODES, --exclude-status <span class="token operator">=</span> EXCLUDESTATUSCODES Exclude status code, separated by comma <span class="token punctuation">(</span> example: 301, 500 <span class="token punctuation">)</span> --exclude-texts <span class="token operator">=</span> EXCLUDETEXTS Exclude responses by texts, separated by comma <span class="token punctuation">(</span> example: <span class="token string">"Not found"</span> , <span class="token string">"Error"</span> <span class="token punctuation">)</span> --exclude-regexps <span class="token operator">=</span> EXCLUDEREGEXPS Exclude responses by regexps, separated by comma <span class="token punctuation">(</span> example: <span class="token string">"Not foun[a-z]{1}"</span> , <span class="token string">"^Error$"</span> <span class="token punctuation">)</span> -c COOKIE, --cookie <span class="token operator">=</span> COOKIE --ua <span class="token operator">=</span> USERAGENT, --user-agent <span class="token operator">=</span> USERAGENT -F, --follow-redirects -H HEADERS, --header <span class="token operator">=</span> HEADERS Headers to add <span class="token punctuation">(</span> example: --header <span class="token string">"Referer: example.com"</span> --header <span class="token string">"User-Agent: IE"</span> --random-agents, --random-user-agents Connection Settings: --timeout <span class="token operator">=</span> TIMEOUT Connection <span class="token function">timeout</span> --ip <span class="token operator">=</span> IP Resolve name to IP address --proxy <span class="token operator">=</span> HTTPPROXY, --http-proxy <span class="token operator">=</span> HTTPPROXY Http Proxy <span class="token punctuation">(</span> example: localhost:8080 --http-method <span class="token operator">=</span> HTTPMETHOD Method to use, default: GET, possible also: HEAD <span class="token punctuation">;</span> POST --max-retries <span class="token operator">=</span> MAXRETRIES -b, --request-by-hostname By default dirsearch will request by IP <span class="token keyword">for</span> speed. This forces requests by <span class="token function">hostname</span> Reports: --simple-report <span class="token operator">=</span> SIMPLEOUTPUTFILE Only found paths --plain-text-report <span class="token operator">=</span> PLAINTEXTOUTPUTFILE Found paths with status codes --json-report <span class="token operator">=</span> JSONOUTPUTFILE |
We can see that the options of dirsearch are very diverse, but we should focus on important options such as -u, -e, -r, -t, -w, -x .
For example, the target is http://testphp.vulnweb.com/
In order to scan, we must pass 2 arguments à -u, -e , where -u is the url we want to scan, -e is the extension we want to search, and we can search for many extensions one by one. at, each extension is separated by a comma.
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | ~$ dirsearch -u http://testphp.vulnweb.com/ -e php,html,txt _ <span class="token operator">|</span> <span class="token keyword">.</span> _ _ _ _ _ _ <span class="token operator">|</span> _ v0.3.9 <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token operator">|</span> _ <span class="token punctuation">)</span> <span class="token punctuation">(</span> /_ <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token punctuation">(</span> _ <span class="token operator">|</span> <span class="token punctuation">)</span> Extensions: php, html, txt <span class="token operator">|</span> HTTP method: get <span class="token operator">|</span> Threads: 10 <span class="token operator">|</span> Wordlist size: 6748 Error Log: /home/justx/dirsearch/logs/errors-20-05-24_13-50-24.log Target: http://testphp.vulnweb.com/ <span class="token punctuation">[</span> 13:50:24 <span class="token punctuation">]</span> Starting: <span class="token punctuation">[</span> 13:50:31 <span class="token punctuation">]</span> 400 - 172B - /%2e%2e/google.com <span class="token punctuation">[</span> 13:50:39 <span class="token punctuation">]</span> 301 - 184B - /.idea - <span class="token operator">></span> http://testphp.vulnweb.com/.idea/ <span class="token punctuation">[</span> 13:50:39 <span class="token punctuation">]</span> 200 - 967B - /.idea/ <span class="token punctuation">[</span> 13:50:39 <span class="token punctuation">]</span> 200 - 6B - /.idea/.name <span class="token punctuation">[</span> 13:50:39 <span class="token punctuation">]</span> 200 - 266B - /.idea/misc.xml <span class="token punctuation">[</span> 13:50:39 <span class="token punctuation">]</span> 200 - 171B - /.idea/encodings.xml <span class="token punctuation">[</span> 13:50:39 <span class="token punctuation">]</span> 200 - 275B - /.idea/modules.xml <span class="token punctuation">[</span> 13:50:39 <span class="token punctuation">]</span> 200 - 143B - /.idea/scopes/scope_settings.xml <span class="token punctuation">[</span> 13:50:39 <span class="token punctuation">]</span> 200 - 173B - /.idea/vcs.xml <span class="token punctuation">[</span> 13:50:41 <span class="token punctuation">]</span> 200 - 12KB - /.idea/workspace.xml <span class="token punctuation">[</span> 13:50:57 <span class="token punctuation">]</span> 200 - 92B - /_mmServerScripts/MMHTTPDB.php <span class="token punctuation">[</span> 13:51:06 <span class="token punctuation">]</span> 301 - 184B - /admin - <span class="token operator">></span> http://testphp.vulnweb.com/admin/ <span class="token punctuation">[</span> 13:51:10 <span class="token punctuation">]</span> 200 - 278B - /admin/ <span class="token punctuation">[</span> 13:51:10 <span class="token punctuation">]</span> 200 - 278B - /admin/?/login <span class="token punctuation">[</span> 13:52:04 <span class="token punctuation">]</span> 403 - 263B - /cgi-bin <span class="token punctuation">[</span> 13:52:04 <span class="token punctuation">]</span> 403 - 263B - /cgi-bin/ <span class="token punctuation">[</span> 13:52:13 <span class="token punctuation">]</span> 301 - 184B - /Connections - <span class="token operator">></span> http://testphp.vulnweb.com/Connections/ <span class="token punctuation">[</span> 13:52:16 <span class="token punctuation">]</span> 200 - 224B - /crossdomain.xml <span class="token punctuation">[</span> 13:52:18 <span class="token punctuation">]</span> 200 - 1B - /CVS/Root <span class="token punctuation">[</span> 13:52:18 <span class="token punctuation">]</span> 301 - 184B - /CVS - <span class="token operator">></span> http://testphp.vulnweb.com/CVS/ <span class="token punctuation">[</span> 13:52:18 <span class="token punctuation">]</span> 200 - 611B - /CVS/ <span class="token punctuation">[</span> 13:52:33 <span class="token punctuation">]</span> 200 - 894B - /favicon.ico <span class="token punctuation">[</span> 13:52:48 <span class="token punctuation">]</span> 301 - 184B - /images - <span class="token operator">></span> http://testphp.vulnweb.com/images/ <span class="token punctuation">[</span> 13:52:51 <span class="token punctuation">]</span> 200 - 5KB - /index.php <span class="token punctuation">[</span> 13:52:51 <span class="token punctuation">]</span> 200 - 3KB - /index.bak <span class="token punctuation">[</span> 13:52:53 <span class="token punctuation">]</span> 200 - 3KB - /index.zip <span class="token punctuation">[</span> 13:53:06 <span class="token punctuation">]</span> 200 - 5KB - /login.php <span class="token punctuation">[</span> 13:53:35 <span class="token punctuation">]</span> 301 - 184B - /pictures - <span class="token operator">></span> http://testphp.vulnweb.com/pictures/ <span class="token punctuation">[</span> 13:53:46 <span class="token punctuation">]</span> 301 - 184B - /secured - <span class="token operator">></span> http://testphp.vulnweb.com/secured/ <span class="token punctuation">[</span> 13:54:03 <span class="token punctuation">]</span> 301 - 184B - /Templates - <span class="token operator">></span> http://testphp.vulnweb.com/Templates/ <span class="token punctuation">[</span> 13:54:11 <span class="token punctuation">]</span> 302 - 14B - /userinfo.php - <span class="token operator">></span> login.php Task Completed |
As you can see above is the parameters that the program has set to run, the bottom is the result of performing the scan, it is divided into columns clearly visible. The first column is the time, the second column is the status code of the response, the third column is the size, and the last column is the directory or file that performed the scan.
So how to pause when it is running, just press <Ctrl> + C the program will pause and there are 2 options are e and c , where e is exit to exit the program completely and c continue to continue scan on the spot you paused.
More advanced is that you can remove status code
that you do not want to avoid excessive information disturbance. For example, you need to remove directories or files with unwanted status code
just add the option -x <status code to remove> , also can remove multiple status code
at once, each status code
is separated by a comma. For example, if we need to remove directories or files with a status code
400 and 403, we need to add options -x 403,400 .
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | ~$ dirsearch -u http://testphp.vulnweb.com/ -e php,html,txt -x 403,400 _ <span class="token operator">|</span> <span class="token keyword">.</span> _ _ _ _ _ _ <span class="token operator">|</span> _ v0.3.9 <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token operator">|</span> _ <span class="token punctuation">)</span> <span class="token punctuation">(</span> /_ <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token punctuation">(</span> _ <span class="token operator">|</span> <span class="token punctuation">)</span> Extensions: php, html, txt <span class="token operator">|</span> HTTP method: get <span class="token operator">|</span> Threads: 10 <span class="token operator">|</span> Wordlist size: 6748 Error Log: /home/justx/dirsearch/logs/errors-20-05-24_14-14-04.log Target: http://testphp.vulnweb.com/ <span class="token punctuation">[</span> 14:14:05 <span class="token punctuation">]</span> Starting: <span class="token punctuation">[</span> 14:14:14 <span class="token punctuation">]</span> 301 - 184B - /.idea - <span class="token operator">></span> http://testphp.vulnweb.com/.idea/ <span class="token punctuation">[</span> 14:14:14 <span class="token punctuation">]</span> 200 - 967B - /.idea/ <span class="token punctuation">[</span> 14:14:14 <span class="token punctuation">]</span> 200 - 6B - /.idea/.name <span class="token punctuation">[</span> 14:14:15 <span class="token punctuation">]</span> 200 - 171B - /.idea/encodings.xml <span class="token punctuation">[</span> 14:14:15 <span class="token punctuation">]</span> 200 - 143B - /.idea/scopes/scope_settings.xml <span class="token punctuation">[</span> 14:14:15 <span class="token punctuation">]</span> 200 - 266B - /.idea/misc.xml <span class="token punctuation">[</span> 14:14:15 <span class="token punctuation">]</span> 200 - 275B - /.idea/modules.xml <span class="token punctuation">[</span> 14:14:15 <span class="token punctuation">]</span> 200 - 173B - /.idea/vcs.xml <span class="token punctuation">[</span> 14:14:16 <span class="token punctuation">]</span> 200 - 12KB - /.idea/workspace.xml <span class="token punctuation">[</span> 14:14:31 <span class="token punctuation">]</span> 200 - 92B - /_mmServerScripts/MMHTTPDB.php <span class="token punctuation">[</span> 14:14:39 <span class="token punctuation">]</span> 301 - 184B - /admin - <span class="token operator">></span> http://testphp.vulnweb.com/admin/ <span class="token punctuation">[</span> 14:14:43 <span class="token punctuation">]</span> 200 - 278B - /admin/ <span class="token punctuation">[</span> 14:14:43 <span class="token punctuation">]</span> 200 - 278B - /admin/?/login <span class="token punctuation">[</span> 14:15:47 <span class="token punctuation">]</span> 301 - 184B - /Connections - <span class="token operator">></span> http://testphp.vulnweb.com/Connections/ <span class="token punctuation">[</span> 14:15:50 <span class="token punctuation">]</span> 200 - 224B - /crossdomain.xml <span class="token punctuation">[</span> 14:15:51 <span class="token punctuation">]</span> 200 - 611B - /CVS/ <span class="token punctuation">[</span> 14:15:51 <span class="token punctuation">]</span> 301 - 184B - /CVS - <span class="token operator">></span> http://testphp.vulnweb.com/CVS/ <span class="token punctuation">[</span> 14:15:51 <span class="token punctuation">]</span> 200 - 1B - /CVS/Root <span class="token punctuation">[</span> 14:16:05 <span class="token punctuation">]</span> 200 - 894B - /favicon.ico <span class="token punctuation">[</span> 14:16:17 <span class="token punctuation">]</span> 301 - 184B - /images - <span class="token operator">></span> http://testphp.vulnweb.com/images/ <span class="token punctuation">[</span> 14:16:19 <span class="token punctuation">]</span> 200 - 5KB - /index.php <span class="token punctuation">[</span> 14:16:20 <span class="token punctuation">]</span> 200 - 3KB - /index.bak <span class="token punctuation">[</span> 14:16:21 <span class="token punctuation">]</span> 200 - 3KB - /index.zip <span class="token punctuation">[</span> 14:16:31 <span class="token punctuation">]</span> 200 - 5KB - /login.php <span class="token punctuation">[</span> 14:17:03 <span class="token punctuation">]</span> 301 - 184B - /pictures - <span class="token operator">></span> http://testphp.vulnweb.com/pictures/ <span class="token punctuation">[</span> 14:17:16 <span class="token punctuation">]</span> 301 - 184B - /secured - <span class="token operator">></span> http://testphp.vulnweb.com/secured/ <span class="token punctuation">[</span> 14:17:35 <span class="token punctuation">]</span> 301 - 184B - /Templates - <span class="token operator">></span> http://testphp.vulnweb.com/Templates/ <span class="token punctuation">[</span> 14:17:43 <span class="token punctuation">]</span> 302 - 14B - /userinfo.php - <span class="token operator">></span> login.php Task Completed |
Compared to the results above, it looks a lot more compact, right? The removal of status code depends on each different case, depending on the needs of the person who needs scanning so that the removal becomes more effective.
This brute-forcing scan depends a lot on the library of words we need to try and call it wordlist, so we don’t want to use dirsearch’s default wordlist, but we use other private libraries to scan. So more effectively, dirsearch supports an option that makes this extremely useful, -w . You can refer to the wordlist of potassium. Some notes you need to make sure that the path to your wordlist is correct, so using absolute paths is a best way to avoid not finding wordlist causing errors that cannot load wordlist. For example -w /home/justx/common.txt .
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ~$ dirsearch -u http://testphp.vulnweb.com/ -e php,html,txt -x 403,400 -w /home/justx/common.txt _ <span class="token operator">|</span> <span class="token keyword">.</span> _ _ _ _ _ _ <span class="token operator">|</span> _ v0.3.9 <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token operator">|</span> _ <span class="token punctuation">)</span> <span class="token punctuation">(</span> /_ <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token punctuation">(</span> _ <span class="token operator">|</span> <span class="token punctuation">)</span> Extensions: php, html, txt <span class="token operator">|</span> HTTP method: get <span class="token operator">|</span> Threads: 10 <span class="token operator">|</span> Wordlist size: 100 Error Log: /home/justx/dirsearch/logs/errors-20-05-24_14-42-29.log Target: http://testphp.vulnweb.com/ <span class="token punctuation">[</span> 14:42:30 <span class="token punctuation">]</span> Starting: <span class="token punctuation">[</span> 14:42:32 <span class="token punctuation">]</span> 301 - 184B - /CVS - <span class="token operator">></span> http://testphp.vulnweb.com/CVS/ <span class="token punctuation">[</span> 14:42:33 <span class="token punctuation">]</span> 301 - 184B - /admin - <span class="token operator">></span> http://testphp.vulnweb.com/admin/ Task Completed |
Looks at the results seem very little, collected less information and you think this tool is not good, but not like I said this type of scan depends a lot on the library that we use, so choose wordlist It will also help to make the information gathering process more efficient.
For further scanning into directories dirsearch supports a -r option, for example you can scan http://testphp.vulnweb.com/admin/
but you want the program to continue scanning in that directory. then you can use this option instead of manually scanning by changing the url.
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ~$ dirsearch -u http://testphp.vulnweb.com/ -e php,html,txt -x 403,400 -w /usr/share/wordlists/dirb/common.txt -r _ <span class="token operator">|</span> <span class="token keyword">.</span> _ _ _ _ _ _ <span class="token operator">|</span> _ v0.3.9 <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token operator">|</span> _ <span class="token punctuation">)</span> <span class="token punctuation">(</span> /_ <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token punctuation">(</span> _ <span class="token operator">|</span> <span class="token punctuation">)</span> Extensions: php, html, txt <span class="token operator">|</span> HTTP method: get <span class="token operator">|</span> Threads: 10 <span class="token operator">|</span> Wordlist size: 4614 <span class="token operator">|</span> Recursion level: 1 Error Log: /home/justx/dirsearch/logs/errors-20-05-24_15-35-04.log Target: http://testphp.vulnweb.com/ <span class="token punctuation">[</span> 15:35:05 <span class="token punctuation">]</span> Starting: <span class="token punctuation">[</span> 15:35:06 <span class="token punctuation">]</span> 200 - 5KB - / <span class="token punctuation">[</span> 15:35:16 <span class="token punctuation">]</span> 301 - 184B - /admin - <span class="token operator">></span> http://testphp.vulnweb.com/admin/ <span class="token punctuation">[</span> 15:35:44 <span class="token punctuation">]</span> 301 - 184B - /CVS - <span class="token operator">></span> http://testphp.vulnweb.com/CVS/ <span class="token punctuation">[</span> 15:35:44 <span class="token punctuation">]</span> 200 - 1B - /CVS/Entries <span class="token punctuation">[</span> 15:35:44 <span class="token punctuation">]</span> 200 - 8B - /CVS/Repository <span class="token punctuation">[</span> 15:35:44 <span class="token punctuation">]</span> 200 - 1B - /CVS/Root <span class="token punctuation">[</span> 15:35:44 <span class="token punctuation">]</span> 200 - 224B - /crossdomain.xml <span class="token punctuation">[</span> 15:36:00 <span class="token punctuation">]</span> 200 - 894B - /favicon.ico <span class="token punctuation">[</span> 15:36:13 <span class="token punctuation">]</span> 301 - 184B - /images - <span class="token operator">></span> http://testphp.vulnweb.com/images/ <span class="token punctuation">[</span> 15:36:15 <span class="token punctuation">]</span> 200 - 5KB - /index.php <span class="token punctuation">[</span> 15:36:44 <span class="token punctuation">]</span> 301 - 184B - /pictures - <span class="token operator">></span> http://testphp.vulnweb.com/pictures/ <span class="token punctuation">[</span> 15:37:01 <span class="token punctuation">]</span> 301 - 184B - /secured - <span class="token operator">></span> http://testphp.vulnweb.com/secured/ <span class="token punctuation">[</span> 15:37:31 <span class="token punctuation">]</span> Starting: admin/ <span class="token punctuation">[</span> 15:37:33 <span class="token punctuation">]</span> 200 - 278B - /admin/ <span class="token punctuation">[</span> 15:40:09 <span class="token punctuation">]</span> Starting: CVS/ <span class="token punctuation">[</span> 15:40:11 <span class="token punctuation">]</span> 200 - 611B - /CVS/ <span class="token punctuation">[</span> 15:40:53 <span class="token punctuation">]</span> 200 - 1B - /CVS/Entries <span class="token punctuation">[</span> 15:41:52 <span class="token punctuation">]</span> 200 - 1B - /CVS/Root <span class="token punctuation">[</span> 15:42:28 <span class="token punctuation">]</span> Starting: images/ <span class="token punctuation">[</span> 15:42:29 <span class="token punctuation">]</span> 200 - 393B - /images/ <span class="token punctuation">[</span> 15:44:49 <span class="token punctuation">]</span> Starting: pictures/ <span class="token punctuation">[</span> 15:44:59 <span class="token punctuation">]</span> 200 - 3KB - /pictures/ <span class="token punctuation">[</span> 15:47:18 <span class="token punctuation">]</span> 200 - 771B - /pictures/WS_FTP.LOG <span class="token punctuation">[</span> 15:47:23 <span class="token punctuation">]</span> Starting: secured/ <span class="token punctuation">[</span> 15:48:07 <span class="token punctuation">]</span> 200 - 0B - /secured/ <span class="token punctuation">[</span> 15:49:05 <span class="token punctuation">]</span> 200 - 0B - /secured/index.php <span class="token punctuation">[</span> 15:49:33 <span class="token punctuation">]</span> 200 - 45KB - /secured/phpinfo.php Task Completed |
After finding files or directories at level one they continue to scan into each folder it has found, so the scan results are deeper than normal scan levels.
And the next option I would recommend is -t , one of the strengths of dirsearch, this option helps multithreaded programs increase scan speed, a brute-forcing program with multithreading running will help reduce go runtime a lot of times, with large wordlist you will see clearly the effect of running multithreading is like.
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | ~$ dirsearch -u http://testphp.vulnweb.com/ -e php,html,txt -x 403,400 -w /usr/share/wordlists/dirb/common.txt -r -t 100 _ <span class="token operator">|</span> <span class="token keyword">.</span> _ _ _ _ _ _ <span class="token operator">|</span> _ v0.3.9 <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token operator">|</span> _ <span class="token punctuation">)</span> <span class="token punctuation">(</span> /_ <span class="token punctuation">(</span> _ <span class="token operator">||</span> <span class="token punctuation">(</span> _ <span class="token operator">|</span> <span class="token punctuation">)</span> Extensions: php, html, txt <span class="token operator">|</span> HTTP method: get <span class="token operator">|</span> Threads: 100 <span class="token operator">|</span> Wordlist size: 4614 <span class="token operator">|</span> Recursion level: 1 Error Log: /home/justx/dirsearch/logs/errors-20-05-24_15-35-06.log Target: http://testphp.vulnweb.com/ <span class="token punctuation">[</span> 15:35:07 <span class="token punctuation">]</span> Starting: <span class="token punctuation">[</span> 15:35:09 <span class="token punctuation">]</span> 200 - 5KB - / <span class="token punctuation">[</span> 15:35:11 <span class="token punctuation">]</span> 301 - 184B - /admin - <span class="token operator">></span> http://testphp.vulnweb.com/admin/ <span class="token punctuation">[</span> 15:35:13 <span class="token punctuation">]</span> 200 - 224B - /crossdomain.xml <span class="token punctuation">[</span> 15:35:14 <span class="token punctuation">]</span> 301 - 184B - /CVS - <span class="token operator">></span> http://testphp.vulnweb.com/CVS/ <span class="token punctuation">[</span> 15:35:14 <span class="token punctuation">]</span> 200 - 1B - /CVS/Entries <span class="token punctuation">[</span> 15:35:14 <span class="token punctuation">]</span> 200 - 1B - /CVS/Root <span class="token punctuation">[</span> 15:35:14 <span class="token punctuation">]</span> 200 - 8B - /CVS/Repository <span class="token punctuation">[</span> 15:35:15 <span class="token punctuation">]</span> 200 - 894B - /favicon.ico <span class="token punctuation">[</span> 15:35:17 <span class="token punctuation">]</span> 301 - 184B - /images - <span class="token operator">></span> http://testphp.vulnweb.com/images/ <span class="token punctuation">[</span> 15:35:17 <span class="token punctuation">]</span> 200 - 5KB - /index.php <span class="token punctuation">[</span> 15:35:20 <span class="token punctuation">]</span> 301 - 184B - /pictures - <span class="token operator">></span> http://testphp.vulnweb.com/pictures/ <span class="token punctuation">[</span> 15:35:23 <span class="token punctuation">]</span> 301 - 184B - /secured - <span class="token operator">></span> http://testphp.vulnweb.com/secured/ <span class="token punctuation">[</span> 15:35:51 <span class="token punctuation">]</span> Starting: admin/ <span class="token punctuation">[</span> 15:35:53 <span class="token punctuation">]</span> 200 - 278B - /admin/ <span class="token punctuation">[</span> 15:36:35 <span class="token punctuation">]</span> Starting: CVS/ <span class="token punctuation">[</span> 15:36:40 <span class="token punctuation">]</span> 200 - 611B - /CVS/ <span class="token punctuation">[</span> 15:36:45 <span class="token punctuation">]</span> 200 - 1B - /CVS/Entries <span class="token punctuation">[</span> 15:36:52 <span class="token punctuation">]</span> 200 - 1B - /CVS/Root <span class="token punctuation">[</span> 15:37:05 <span class="token punctuation">]</span> Starting: images/ <span class="token punctuation">[</span> 15:37:07 <span class="token punctuation">]</span> 200 - 393B - /images/ <span class="token punctuation">[</span> 15:37:52 <span class="token punctuation">]</span> Starting: pictures/ <span class="token punctuation">[</span> 15:37:54 <span class="token punctuation">]</span> 200 - 3KB - /pictures/ <span class="token punctuation">[</span> 15:38:11 <span class="token punctuation">]</span> 200 - 771B - /pictures/WS_FTP.LOG <span class="token punctuation">[</span> 15:38:28 <span class="token punctuation">]</span> Starting: secured/ <span class="token punctuation">[</span> 15:38:30 <span class="token punctuation">]</span> 200 - 0B - /secured/ <span class="token punctuation">[</span> 15:38:39 <span class="token punctuation">]</span> 200 - 0B - /secured/index.php <span class="token punctuation">[</span> 15:38:45 <span class="token punctuation">]</span> 200 - 45KB - /secured/phpinfo.php Task Completed |
Looking at the results and compared with the results of the previous section at the same time scanning all scanning options are the same except in the next section with more threads, the efficiency in terms of time increases significantly, which is shown as the same scan at the time. 15:35 then only 10 threads
will end at 15:49 , which means it takes about 14 phút
but for 100 threads
it takes only 3 phút
to scan all wordlist of the same size, it’s great to have the thread right.
There are also some options such as exporting reports, cookie set, set headers, timeout … are also very useful options you can refer to. Hope this tool will help you in finding hidden folders or files of a website.
5. Documents
https://medium.com/@irfaanshakeel/dirsearch-to-find-hidden-web-directories-d0357fbe47b0