Overview
HTTP Flood is a volumetric Layer 7 (application layer) attack method that sends a high volume of HTTP GET and POST requests to overwhelm a target web server or application. This attack aims to exhaust server resources by flooding it with seemingly legitimate HTTP traffic.This attack method uses random payloads and rotates between GET and POST requests to simulate realistic traffic patterns.
How it works
The HTTP Flood attack operates by:- Request Generation: Creates HTTP requests with random payloads based on the configured packet size
- Method Selection: Automatically chooses between GET and POST requests
- Packets ≤ 512 bytes: 50% chance of GET or POST
- Packets > 512 bytes: Always POST (more efficient for large payloads)
- GET Requests: Appends random payload to URL path (
/randomstring) - POST Requests: Sends random payload in request body
- Connection Handling: Creates a new HTTP client for each request with 5-second timeout and 3 retries
- Proxy Rotation: Randomly selects from available proxies for each request
- User-Agent Rotation: Applies random user agents if configured
When to use
HTTP Flood is effective for:- Web application stress testing: Testing how your web server handles high traffic volumes
- CDN bypass attempts: Since it uses legitimate HTTP traffic, some CDNs may pass it through
- Application-layer resilience: Testing application logic under load
- Server capacity testing: Determining maximum concurrent request handling
Usage
Basic HTTP Flood attack:Parameters
Target URL including protocol (http:// or https://)
Attack duration in seconds
Delay between packets in milliseconds per thread
Size of random payload in bytes. Affects GET/POST method selection.
Number of concurrent threads (0 = number of CPU cores)
Show detailed attack logs including proxy usage per request
Allow running without proxies (not recommended for production targets)
Expected behavior
Console output
Standard mode:Network behavior
- Connections: New TCP connection per request (no keep-alive)
- Request distribution: ~50% GET, ~50% POST for small packets; mostly POST for large packets
- Payload: Random alphanumeric strings
- Timeout: 5 seconds per request
- Retries: Up to 3 attempts per request
Technical implementation
Implementation details frominternal/attacks/http/flood.go:20-52:
- Uses
net/httpstandard library for HTTP requests - Generates random payloads using
randomString()helper - Discards response bodies to minimize memory usage
- Reports success only when response is received (status code ignored)
- Integrates with engine’s proxy rotation and statistics collection
Performance considerations
Optimizing request rate
Optimizing request rate
- Reduce
--delayfor higher packets per second - Increase
--threadsto utilize more CPU cores - Use smaller
--packet-sizefor faster request generation - Ensure sufficient proxy pool to avoid rate limiting
Resource usage
Resource usage
- Each thread maintains a ticker for packet timing
- HTTP clients are created per request (not pooled)
- Memory usage scales with thread count and active connections
- CPU usage depends on payload generation and TLS handshakes
Proxy considerations
Proxy considerations
- More proxies = better distribution and harder to block
- SOCKS5 proxies typically faster than HTTP proxies
- Proxy health affects success rate
- Configure proxies in your
proxies.txtfile
Related attack methods
HTTP Bypass
Stealth HTTP attack with browser-like behavior
HTTP Slowloris
Slow HTTP attack that keeps connections open
TCP Flood
Layer 4 TCP connection flood