Wstęp do kursu Kali Linux – Testy penetracyjne aplikacji webowych
Cele kursu i czego się nauczysz
Instalacja i konfiguracja Kali Linux
Wymagania systemowe
Podstawowe narzędzia w Kali Linux
Terminal i zarządzanie systemem
Metodologia testów penetracyjnych
Testy penetracyjne to kontrolowane ataki symulujące działania rzeczywistych napastników w celu wykrycia luk w zabezpieczeniach. Proces pentestingu składa się z kilku kluczowych etapów oraz bazuje na uznanych standardach branżowych.
Passive Recon – zbieranie informacji bez pozostawiania śladów
Passive Recon (pasywne rozpoznanie) to etap testów penetracyjnych, w którym zbieramy informacje o celu bez bezpośredniego kontaktu z jego infrastrukturą. Dzięki temu pozostajemy niewidoczni dla systemów monitorujących ruch sieciowy.
Active Recon – interaktywne skanowanie
Active Recon (aktywne rozpoznanie) to etap, w którym wchodzimy w interakcję z celem, wysyłając zapytania sieciowe w celu identyfikacji dostępnych usług, podatności i ukrytych zasobów.
Enumeracja subdomen i Subdomain Takeover
Powierzchnia ataku organizacji to nie jedna domena, lecz dziesiątki, czasem tysiące subdomen — często zapomnianych. Subdomain Takeover to przejęcie subdomeny wskazującej (przez rekord DNS) na nieistniejący już zasób zewnętrzny. Atakujący rejestruje ten zasób i zaczyna serwować własną treść pod zaufaną domeną ofiary.
Injection Attacks (SQL Injection, Command Injection, LDAP Injection)
Ataki typu Injection polegają na wstrzyknięciu złośliwego kodu do aplikacji webowej w celu manipulacji danymi lub wykonania nieautoryzowanych poleceń. W tej sekcji omówimy najczęściej spotykane rodzaje ataków: SQL Injection, Command Injection oraz LDAP Injection.
Broken Authentication & Session Management
Luki w uwierzytelnianiu i zarządzaniu sesjami umożliwiają atakującym przejęcie kont użytkowników, odczytanie sesji, a nawet eskalację uprawnień. W tej sekcji omówimy najczęstsze ataki oraz sposoby ich przeprowadzania.
Cross-Site Scripting (XSS)
Cross-Site Scripting (XSS) to jeden z najczęściej wykorzystywanych wektorów ataku na aplikacje webowe. Polega na wstrzyknięciu złośliwego kodu JavaScript do aplikacji, co może prowadzić do przejęcia sesji użytkownika, wykradania danych lub wykonywania nieautoryzowanych operacji.
Insecure Direct Object References (IDOR) & Broken Access Control
IDOR (Insecure Direct Object References) i Broken Access Control to jedne z najpoważniejszych podatności w aplikacjach webowych, umożliwiające nieautoryzowany dostęp do danych innych użytkowników poprzez manipulację parametrami.
Security Misconfigurations i ataki na pliki
Błędne konfiguracje systemów i serwerów mogą prowadzić do przejęcia dostępu do aplikacji, eskalacji uprawnień oraz wycieku wrażliwych danych. W tej sekcji omówimy, jak wykorzystać tego typu podatności oraz jak się przed nimi zabezpieczyć.
Server-Side Request Forgery (SSRF) & Remote Code Execution (RCE)
SSRF i RCE to jedne z najbardziej niebezpiecznych podatności w aplikacjach webowych. Pozwalają atakującym na wykonywanie nieautoryzowanych żądań wewnętrznych oraz zdalne wykonywanie kodu na serwerze.
Cross-Site Request Forgery (CSRF)
CSRF (Cross-Site Request Forgery) to atak, w którym napastnik zmusza zalogowanego użytkownika do wykonania niezamierzonej akcji w aplikacji, której ten użytkownik ufa. Aplikacja wykonuje żądanie, bo przeglądarka automatycznie dołącza ciasteczka sesyjne — nawet jeśli żądanie pochodzi z obcej domeny.
XML External Entity (XXE)
XXE to podatność występująca, gdy aplikacja parsuje dane XML dostarczone przez użytkownika, a parser ma włączoną obsługę encji zewnętrznych (external entities). Pozwala to atakującemu odczytywać pliki serwera, przeprowadzać SSRF, eksfiltrować dane, a w niektórych przypadkach doprowadzić do RCE lub DoS.
File Upload Vulnerabilities i Web Shells
Niewłaściwa walidacja przesyłanych plików to jedna z najszybszych dróg do Remote Code Execution. Jeśli atakujący umieści na serwerze plik wykonywalny (np. skrypt PHP) i zdoła go uruchomić, uzyskuje web shell — interaktywny dostęp do systemu przez przeglądarkę.
Insecure Deserialization
Serializacja zamienia obiekt na ciąg bajtów (do zapisu lub transmisji), a deserializacja odtwarza obiekt z tych danych. Niebezpieczna deserializacja występuje, gdy aplikacja deserializuje dane kontrolowane przez użytkownika bez weryfikacji — co może prowadzić do manipulacji logiką, eskalacji uprawnień, a najczęściej do Remote Code Execution. To kategoria A08 w OWASP Top 10.
Ataki na OAuth 2.0, OIDC i SAML
Nowoczesne aplikacje rzadko zarządzają hasłami samodzielnie — delegują uwierzytelnianie do dostawców tożsamości przez OAuth 2.0, OpenID Connect (OIDC) i SAML (logowanie „Zaloguj się przez Google/Microsoft", SSO firmowe). Błędy w implementacji tych protokołów prowadzą do przejęcia kont (Account Takeover) bez znajomości hasła ofiary.
Logika biznesowa i Race Conditions
Nie każda podatność to wstrzyknięcie kodu. Błędy logiki biznesowej wynikają z błędnych założeń projektowych — aplikacja działa „zgodnie z kodem", ale niezgodnie z intencją. Tych luk nie wykryje skaner: wymagają zrozumienia procesu biznesowego. Race conditions to ich szczególny, czasowy wariant. To obszar OWASP A04 – Insecure Design.
Ataki po stronie klienta (CORS, Clickjacking, Prototype Pollution, postMessage)
Poza XSS istnieje cała rodzina podatności działających w przeglądarce ofiary. Wynikają z błędnej konfiguracji mechanizmów bezpieczeństwa przeglądarki lub z niebezpiecznego kodu JavaScript po stronie klienta. Mogą prowadzić do kradzieży danych, przejęcia akcji użytkownika, a nawet do XSS i RCE w aplikacjach Node.
[Zaawansowane] HTTP Request Smuggling i Web Cache Poisoning
To moduł dla zaawansowanych. Obie techniki wykorzystują rozbieżności w interpretacji żądań między warstwami infrastruktury (front-end/proxy/CDN a serwer back-end). Pozwalają zatruwać kolejkę żądań innych użytkowników, omijać kontrole bezpieczeństwa i masowo serwować złośliwą treść.
Automatyzacja i eksploatacja
Automatyzacja testów penetracyjnych pozwala zwiększyć efektywność pracy pentestera, eliminując powtarzalne zadania i przyspieszając proces wykrywania podatności. W tej sekcji omówimy, jak pisać własne skrypty do pentestów oraz jak skutecznie korzystać z Metasploit Framework.
Reverse Shell i Post-Exploitation
Po udanym przejęciu systemu atakujący może chcieć utrzymać dostęp, przechwycić dane, wykonać dalsze eskalacje uprawnień lub zainstalować backdoora. W tej sekcji omówimy, jak tworzyć reverse shell, przejmować sesje oraz utrwalać dostęp do systemu.
Łamanie haseł offline (Hashcat i John the Ripper)
W module Broken Authentication atakowaliśmy logowanie online (Hydra, Burp Intruder). Tutaj zajmujemy się łamaniem offline — gdy po post-exploitation (np. hashdump, dump bazy, plik /etc/shadow) mamy hashe i chcemy odzyskać hasła bez kontaktu z systemem ofiary. Brak rate-limitu i blokad sprawia, że to znacznie potężniejsza technika.
Ataki na uwierzytelnianie wieloskładnikowe (2FA Bypass)
Uwierzytelnianie wieloskładnikowe (2FA) ma na celu zwiększenie bezpieczeństwa użytkownika poprzez dodatkowy etap weryfikacji, np. kod SMS, aplikację TOTP (Time-Based One-Time Password) lub klucz U2F. Jednak różne implementacje 2FA mogą być podatne na obejście.
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 aplikacji w chmurze (AWS, Azure, GCP)
Aplikacje wdrażane w chmurze często cierpią na błędne konfiguracje oraz niewłaściwie skonfigurowane uprawnienia, co może prowadzić do przejęcia zasobów, wycieku danych oraz eskalacji uprawnień w środowisku chmurowym.
Bezpieczeństwo aplikacji LLM/AI (OWASP Top 10 for LLM)
W module Automatyzacja i eksploatacja używaliśmy AI jako narzędzia pentestera. Tutaj odwracamy perspektywę: testujemy same aplikacje oparte o LLM — chatboty, asystentów, agentów i pipeline'y RAG. To szybko rosnąca powierzchnia ataku z własną listą OWASP Top 10 for LLM Applications.
Podatne zależności, SCA i DevSecOps
Większość kodu nowoczesnej aplikacji to cudze biblioteki. Jedna podatna zależność (jak Log4Shell) potrafi skompromitować całą aplikację, mimo że własny kod jest bezpieczny. To kategoria A06 – Vulnerable and Outdated Components w OWASP Top 10. Ten moduł pokazuje, jak wykrywać podatne komponenty i jak wpleść bezpieczeństwo w pipeline CI/CD (DevSecOps / shift-left).
Case Studies i ćwiczenia praktyczne
Testowanie aplikacji w kontrolowanym środowisku to najlepszy sposób na naukę testów penetracyjnych. W tej sekcji omówimy platformy do ćwiczeń, laby pentesterskie oraz przykłady rzeczywistych scenariuszy ataków.
Analiza rzeczywistych incydentów i exploitacji
Analiza rzeczywistych ataków pozwala lepiej zrozumieć, jakie techniki stosują cyberprzestępcy oraz jakie błędy w zabezpieczeniach prowadzą do naruszeń. W tej sekcji omówimy kilka głośnych przypadków oraz wyciągniemy wnioski dla pentesterów.
Tworzenie profesjonalnych raportów pentesterskich
Profesjonalny raport z testów penetracyjnych jest kluczowym dokumentem, który zawiera wyniki testów, opis znalezionych podatności oraz zalecenia dotyczące poprawy bezpieczeństwa. W tej sekcji omówimy, jak skutecznie raportować podatności oraz jakie elementy powinien zawierać dobrze przygotowany raport.
Podsumowanie i dalsza nauka
Gratulacje! 🎉 Ukończyłeś kurs pentestingu aplikacji webowych, zdobywając umiejętności wykrywania i eksploatacji podatności. W tej sekcji podsumujemy najważniejsze zagadnienia oraz wskażemy dalszą ścieżkę rozwoju w zawodzie pentestera.