Klockan Ă€r 02:47. Du sitter med en kall kopp kaffe och tror att ditt API Ă€r sĂ€kert. Men nĂ„gonstans i mörkret, bakom en oanvĂ€nd parameter eller en misskonfigurerad header, lĂ€cker din applikation data som en sil. Det kanske Ă€r anvĂ€ndar-ID:n, interna jobbtitlar eller till och med lösenordshashar som sipprar ut. Hur hittar man dessa osynliga springor? LĂ„t oss prata om hur du blir en digital lĂ€ckdetektiv â med rĂ€tt verktyg och lite fiffiga knep.
NÀr API:et blir en pratglad skvallerkÀring #
TĂ€nk dig att ditt API Ă€r som ett hus med hundratals dörrar (parametrar). Vissa dörrar Ă€r lĂ„sta (sĂ€kra), andra stĂ€ngda men olĂ„sta (kĂ€nsliga), och nĂ„gra stĂ„r pĂ„ glĂ€nt (lĂ€ckande). Fuzzing Ă€r som att gĂ„ runt och försiktigt trycka pĂ„ varje dörrhandtag â inte för att bryta sig in, utan för att höra vilka som gnisslar “psst, hĂ€r finns nĂ„got intressant!”.
Verktyg som ffuf
Àr din ultraljudsapparat för att kartlÀgga dessa dörrar. Med en ordlista (t.ex. burp-parameter-names.txt
) skickar du ut smĂ„ vibrationer och lyssnar efter ekon. Men precis som i en överfull korridor mĂ„ste du filtrera bort bruset â dĂ€rför Ă€r -fs 19
din virtuella hörselkĂ„pa som dĂ€mpar generiska “ja ja”-svar.
đ§ Jakten pĂ„ de parametrar som viskar för mycket #
Kör du kommandot:
ffuf -w ordlista.txt -u 'http://MĂ
LET/?FUZZ=testvÀrde' -fs 19
…blir det som att skicka ut en svĂ€rm nyfikna myror. Varje myra (parameter) rapporterar tillbaka: “Hittade inget”, “HĂ€r var det tomt” eller â ibland â “OJ, HĂR FINNS EN HEL HYLLA MED DATA!”.
Guldregeln: Lita inte bara pĂ„ HTTP-statuskoder. En 200:a kan vara en lögnare i förklĂ€dnad. Kolla alltid exakt vad som ligger i svaret â en JSON-nyckel som position
eller user_role
Àr ofta en röd flagga.
![[bild.png]]
đ NĂ€r “id=123” blir en nyckel till hela organisationen #
Anta att du hittat en parameter som id
. Testar du manuellt med id=1
, id=2
… blir det som att leta efter en nĂ„l i en höstack med tĂ„ng. DĂ€rför blir ett Python-skript din magnet:
import requests, sys
```python
def brute():
for val in range(10000):
r = requests.get(f"{sys.argv[1]}/?id={val}")
if "position" in r.text:
print(f"â TRĂFF! ID {val} lĂ€cker: {r.text}")
**Varför detta fungerar:** MÄnga utvecklare antar att hög entropi (t.ex. UUID) = sÀkerhet. Men om systemet anvÀnder sekventiella ID:n, blir det som att ha ett dörrlÄs dÀr varje nyckel Àr föregÄende nummer +1.
---
## đš Konsten att lura rate limits â en headerhaxares guide
Rate limits Àr som nattvakter som rÀknar antal intrÀden. Men vad hÀnder om du byter kostym varje gÄng du gÄr in? Genom att manipulera headers som `X-Forwarded-For` eller `X-Forwarded-IP`, blir du en mÀsterexpert i digital kamouflage:
```php
// SÄrbar logik
if(!in_array($_SERVER['HTTP_X_FORWARDED_FOR'], $whitelist)) {
header("HTTP/1.1 401 Unauthorized");
}
HÀr Àr tricket: Backends som blint litar pÄ dessa headers Àr som vakter som kollar legitimationer ritade med krita. Byter du IP för varje request (X-Forwarded-For: 1.3.3.1
, 1.3.3.2
, osv.), blir det som att komma inklÀttrande genom ett fönster medan vakten tittar Ät andra hÄllet.
Nu Àr det din tur att bli en sÀkerhetsfÀltskogare #
Du behöver inte vara en hackermÀstare för att börja. Börja med att:
- Skapa en sandlĂ„da â en lokal testmiljö dĂ€r du kan experimentera fritt
- LĂ€r dig lĂ€sa svarens kroppssprĂ„k â en liten storleksĂ€ndring kan vara en skrikande varning
- Var nyfiken, men respektfull â testa aldrig pĂ„ system du inte har tillstĂ„nd att granska
Kom ihĂ„g: Varje lĂ€cka du hĂ„ller stĂ€ngt Ă€r som att sĂ€tta ett plĂ„ster pĂ„ internetets sĂ„rbara hud. Det handlar inte om perfektion â det handlar om att göra det lite svĂ„rare för de som har ont uppsĂ„t.
SĂ„, vad vĂ€ntar du pĂ„? đ Starta terminalen, vĂ€lj en ordlista â och lĂ„t jakten börja. Vem vet vilka dolda dörrar du hittar bakom nĂ€sta parameter…