Powrót do strony głównej

Luki w aplikacjach webowych: XSS SQLi enumeration

Artykuł analizuje trzy powszechne luki w aplikacjach webowych: user enumeration, XSS i wstrzykiwanie SQL. Opisano mechanizmy eksploatacji, ryzyka i praktyczne metody eliminacji z przykładami kodu. Zalecenia dla pentestów i sanityzacji.

XSS SQLi i enumeration: jak hakerzy łamią aplikacje webowe
Advertisement 728x90

Trzy najważniejsze luki w aplikacjach webowych: od wykrywania użytkowników po SQLi i XSS

W 2025 roku liczba ataków na aplikacje webowe wzrosła o 89% w porównaniu do poprzedniego roku. Złośliwi hakerzy wykorzystują typowe braki w zabezpieczeniach, by zdobyć dostęp do systemów. Specjaliści ds. pentestu wyróżniają trzy kluczowe zagrożenia: wykrywanie użytkowników, XSS oraz iniekcje SQL. Każda z nich może prowadzić do nieautoryzowanego dostępu, kradzieży danych lub podniesienia uprawnień.

Wykrywanie użytkowników (User Enumeration)

Ta luka powstaje, gdy serwer zwraca różne odpowiedzi na żądania z istniejącymi i nieistniejącymi loginami. Haker analizuje te różnice i przeprowadza skuteczne ataki brute-force.

Oznaki podatności:

Google AdInline article slot
  • Różne komunikaty: «Użytkownik nie został znaleziony» vs «Niepoprawne hasło».
  • Różnice czasowe: 50 ms dla zarejestrowanego użytkownika, 2000 ms dla nieistniejącego.

Po identyfikacji prawidłowych logowania atakujący uzyskuje dostęp do konta i rozszerza zakres testów z wyższymi uprawnieniami.

Przestrzeń międzystronicowa (XSS)

XSS umożliwia wstrzykiwanie kodu JavaScript do stron przeglądarki użytkowników. Przeglądarka wykonuje ten skrypt jak autentyczny kod. Najbardziej typowy rodzaj to reflected XSS — łatwy do wywołania.

Skutki:

Google AdInline article slot
  • Kradzież ciasteczek i tokenów sesji wysyłanych na zewnętrzny serwer.
  • Przechwycenie sesji: działania w imieniu ofiary (zmiana hasła, transakcje).
  • Fiszowanie poprzez podszywanie się pod interfejs.
  • Rozprzestrzenianie malware przez przekierowania.

Iniekcje SQL

Hacker modyfikuje zapytania SQL poprzez dane wprowadzone przez użytkownika. Przykład: wpisanie 'admin' -- obejmuje sprawdzanie hasła, ignorując resztę zapytania po komentarzu.

Zapytania typu SELECT * FROM users WHERE login='input' AND password='input' stają się narażone bez odpowiedniej ochrony.

Ryzyka:

Google AdInline article slot
  • Dostęp do danych: loginy, hasła, płatności.
  • Modyfikacja: zmiana sald, dodawanie administratorów.
  • Usunięcie tabel.
  • Eksploatacja do RCE poprzez DBMS.

Jak usunąć luki

Dla wykrywania użytkowników: jednolite odpowiedzi na wszystkich etapach uwierzytelniania – logowanie, rejestracja, odzyskiwanie konta. Utrzymuj stały czas odpowiedzi za pomocą paddingu lub ograniczenia szybkości.

XSS eliminuje się poprzez sanitację na wyjściu. Zaszyfruj:

  • W HTML: <&lt;, >&gt;.
  • W atrybutach: \"&quot;.
  • W JS: escape dla ciągów.

Wykorzystaj biblioteki takie jak DOMPurify do bezpiecznego HTML z dozwolonymi tagami (pogrubienie, kursywa w komentarzach).

SQL wymaga zapytań przygotowanych lub ORM. Przykład w PDO:

$stmt = $pdo->prepare("SELECT * FROM users WHERE login = ? AND password = ?");
$stmt->execute([$login, $password]);

Parametry są przetwarzane przez sterownik, co uniemożliwia wykonanie wejścia jako kodu. Dla dynamicznych zapytań — escape za pomocą mysqli_real_escape_string lub podobnych funkcji.

Kluczowe informacje

  • Wykrywanie użytkowników to najczęściej spotykana luka, wykrywalna po różnicach czasowych i komunikatach.
  • XSS skupia się na kodowaniu wyjściowym; walidacja wejściowa nie wystarcza.
  • SQLi rozwiązujemy parametryzacją; nigdy nie łączy się ciągów w zapytaniach.
  • Regularny pentest wykrywa łańcuchy ataków: wykrywanie → XSS → SQLi.

Pentest symuluje rzeczywiste ataki i dostarcza szczegółowy raport z PoC, ryzykami i zaleceniami naprawczymi. Bez niego systemy pozostają niewidzialne dla rozwijających się zagrożeń.

— Editorial Team

Advertisement 728x90

Czytaj dalej