To establish common ground, I would like to start by explaining some theory behind DoS attacks on the HTTP attack vector.
An HTTP DoS attack is usually not based on a vulnerability or known flaw in a web server or a service, instead – its the attempt to bring a server down by using all of its available resources and its service pool. That being said, the common HTTP DoS tools usually operate by generating massive amounts of requests to a specific set of URLs on a website in order to choke the resource pool and denying the service.
One very important element in the process, is locating the “Perfect URL”, which is the URL that causes the most load on the server when requested, requiring the server to process as much data as possible before presenting the output to the client. and because of that, the best vector is always to go for the website’s search engine, since that will always require some computation power.
What i came to realize is that a simple engine can be written, to run a dictionary against a search engine, and by observing the amount of results presented back from the website for each keyword, one can determine using an automated tool – which is the best search term to create the most load on the server, and build the DoS URL based on that.
Ready, Get Set, Go!
Lets break the idea into what we want to achieve. we want to run multiple requests to a web server on the search URL. Then, we want to run dictionary as the search term, and by parsing the response page for the place where the number of results is returned – to find the phrase that returns most results (max) and crown it as the “Perfect URL” for a DoS attack.
Using Python, I wrote such a tool that gets as input : search url, regex for finding the number of results and a dictionary file, and does what i wrote above, multithreaded of course ).
Usage looks something like :
python dos_recon.py http://www.site.com/search/?q= 'results\s\:\s(\d+)' wordlist.txt
The tool then opens several threads, each asking for a word out of the dictionary, and adds it to the search string. It then looks for the Regular Expression in the result page and grabs the number of results. Finally, it shows as output, the best URL that produced the highest number of results so far.
Looks something like this :
python dos_recon.py http://www.site.com/search/?q= 'results\s\:\s(\d+)' dictionary.txt -- Loading Dictionary -- -- Loading Complete -- WORD:hug COUNT:471 URL:http://www.site.com/search/?q=hug WORD:tree COUNT:13454 URL:http://www.site.com/search/?q=tree WORD:woman COUNT:110565 URL:http://www.site.com/search/?q=woman WORD:man COUNT:203721 URL:http://www.site.com/search/?q=man
As you can see. the result indicated that the word “man” has produced the most search results ( 203721 ) , and therefore the best URL to run an HTTP DoS attack against this site will be http://www.site.com/search/?q=man
In a DoS attack scheme, this kind of tool will/should be used as part of the Reconnaissance phase, detecting a good attack URL ( or URLs ) and then running a DoS tool against it.
I am sharing this as an educational tool, designed to only be used in lab environment and not in the wild, its is meant for research purposes only and any malicious usage of this tool is prohibited.
File : dos_recon.py ( zip file )