🌐 Ataki na API i WebSockets
API i WebSockets są powszechnie stosowane w nowoczesnych aplikacjach webowych. Ich podatności mogą prowadzić do wycieku danych, eskalacji uprawnień i przejęcia sesji użytkowników.
🔎 Testowanie API REST i GraphQL
API REST i GraphQL często posiadają błędy związane z uwierzytelnianiem, autoryzacją oraz niewłaściwą walidacją danych wejściowych.
1️⃣ Wykrywanie API w aplikacji
- Sprawdzenie dokumentacji API (np.
swagger.json
lubgraphql/schema
):
curl -s https://example.com/swagger.json
curl -s https://example.com/graphql/schema
- Analiza ruchu HTTP w Burp Suite lub mitmproxy.
2️⃣ Ataki na API REST
2.1 IDOR w API
Niektóre API pozwalają na dostęp do zasobów innych użytkowników poprzez manipulację parametrami:
GET /api/user/123/profile
Jeśli zmiana 123
na 124
zwraca dane innego użytkownika, API jest podatne na IDOR.
2.2 Brak ograniczeń w żądaniach (Rate Limiting Bypass)
Niektóre API nie ograniczają liczby żądań, co umożliwia ataki brute-force.
hydra -L users.txt -P passwords.txt https://example.com/api/login -t 10
Rozwiązanie: Ograniczenie liczby prób logowania i użycie CAPTCHA.
2.3 Ataki na nagłówki API (JWT Manipulation)
Tokeny JWT mogą być zmanipulowane, jeśli używają słabego klucza.
jwt_tool mytoken.jwt -d
Atakujący może podmienić nagłówek JWT:
{
"alg": "none",
"typ": "JWT"
}
Jeśli serwer akceptuje niepodpisane tokeny, można przejąć konto użytkownika.
3️⃣ Ataki na GraphQL
GraphQL pozwala na dynamiczne zapytania, co może prowadzić do nieautoryzowanego dostępu do danych.
3.1 Wykrywanie GraphQL
Sprawdzenie endpointu:
curl -X POST https://example.com/graphql -d '{"query":"{__schema{types{name}}}"}'
Jeśli zwróci schemat API, aplikacja jest podatna na nadmierne ujawnianie danych.
3.2 Atak DoS na GraphQL (Deep Query Attack)
Zapytania mogą przeciążać serwer:
query {
user(id: "123") {
friends {
friends {
friends {
name
}
}
}
}
}
Rozwiązanie: Ograniczenie głębokości zapytań i wprowadzenie limitów.
3.3 Brak kontroli uprawnień w GraphQL
Jeśli GraphQL nie wymaga autoryzacji dla pewnych operacji:
query { allUsers { id, email, password } }
To oznacza, że dowolny użytkownik może pobrać dane wszystkich kont.
🔥 Ataki na WebSockets
WebSockets umożliwiają dwukierunkową komunikację w czasie rzeczywistym, ale ich brak walidacji może prowadzić do ataków.
4️⃣ Przechwytywanie i manipulacja WebSockets
Przechwycenie ruchu w Burp Suite:
- Przejdź do zakładki
WebSockets history
. - Przechwyć i zmodyfikuj wiadomość WebSocket.
- Wysłanie zmienionych danych może ujawnić podatność.
4.1 IDOR w WebSockets
Podobnie jak w API REST, jeśli WebSocket pozwala na zmianę ID użytkownika:
{"action":"getUser","id":"123"}
Zmiana 123
na 124
może ujawnić dane innego użytkownika.
4.2 WebSocket Injection
Niektóre aplikacje nie walidują poprawnie wejścia:
{"action":"sendMessage","message":"<script>alert('XSS')</script>"}
Jeśli wiadomość jest wyświetlana bez sanitacji, możliwy jest atak XSS.
4.3 Brak kontroli autoryzacji w WebSockets
Jeśli WebSocket nie sprawdza autoryzacji użytkownika, można wykonywać operacje jako inny użytkownik:
{"action":"transferFunds","amount":10000,"to":"hacker"}
Rozwiązanie: Każda wiadomość WebSocket powinna być podpisana tokenem JWT.
🔐 Jak zabezpieczyć API i WebSockets?
✅ Ogranicz uprawnienia użytkowników i stosuj weryfikację ID w API. ✅ Waliduj dane wejściowe i nie dopuszczaj do manipulacji tokenami JWT. ✅ Monitoruj ruch API pod kątem nietypowych żądań i prób brute-force. ✅ Stosuj uwierzytelnianie dla WebSockets i sprawdzaj sesję użytkownika. ✅ Wprowadź limity zapytań dla GraphQL i WebSockets.
API i WebSockets są kluczowymi elementami aplikacji webowych, ale ich podatności mogą prowadzić do poważnych ataków. Kolejnym krokiem będzie Testowanie aplikacji w chmurze (AWS, Azure, GCP)! 🚀