{"id":268,"date":"2026-10-22T15:50:22","date_gmt":"2026-10-22T15:50:22","guid":{"rendered":"https:\/\/hackerstop.pl\/?page_id=268"},"modified":"2026-10-22T15:50:23","modified_gmt":"2026-10-22T15:50:23","slug":"testy-penetracyjne-kompleksowy-przewodnik-techniczny-od-hackerstop-pl","status":"publish","type":"page","link":"https:\/\/hackerstop.pl\/?page_id=268","title":{"rendered":"Testy penetracyjne \u2013 kompleksowy przewodnik techniczny od HackerStop.pl"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cyberbezpiecze\u0144stwo \u2022 Ethical Hacking \u2022 Pentesting \u2022 Bezpiecze\u0144stwo aplikacji i infrastruktury IT<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Testy penetracyjne (penetration testing, pentesting) s\u0105 kontrolowanym procesem weryfikacji bezpiecze\u0144stwa system\u00f3w informatycznych, kt\u00f3rego celem jest ustalenie, czy rzeczywiste s\u0142abo\u015bci konfiguracji, oprogramowania, architektury lub procedur operacyjnych mog\u0105 doprowadzi\u0107 do naruszenia poufno\u015bci, integralno\u015bci albo dost\u0119pno\u015bci danych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Profesjonalny pentest nie polega wy\u0142\u0105cznie na uruchomieniu skanera podatno\u015bci. Wymaga analizy powierzchni ataku, formu\u0142owania hipotez, kontrolowanej walidacji wykrytych s\u0142abo\u015bci, oceny mo\u017cliwych skutk\u00f3w biznesowych oraz przygotowania zalece\u0144, kt\u00f3re pozwol\u0105 skutecznie ograniczy\u0107 ryzyko.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W tym opracowaniu przechodzimy przez osiem kluczowych obszar\u00f3w: od podstaw metodyki, przez narz\u0119dzia i testowanie aplikacji WWW, a\u017c po ocen\u0119 ryzyka, raportowanie oraz retesty. Przyk\u0142ady praktyczne odnosz\u0105 si\u0119 do w\u0142asnych system\u00f3w i autoryzowanych laboratori\u00f3w testowych.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Czym s\u0105 testy penetracyjne i czym r\u00f3\u017cni\u0105 si\u0119 od skanowania podatno\u015bci?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.1. Cel i zakres test\u00f3w penetracyjnych<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pentest ma odpowiedzie\u0107 na trzy zasadnicze pytania:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Czy istnieje podatno\u015b\u0107? Czy system zawiera b\u0142\u0105d techniczny, niew\u0142a\u015bciw\u0105 konfiguracj\u0119 lub luk\u0119 w kontroli dost\u0119pu?<\/li>\n\n\n\n<li>Czy podatno\u015b\u0107 mo\u017cna wykorzysta\u0107 w okre\u015blonych warunkach? Czy istnieje realistyczna \u015bcie\u017cka prowadz\u0105ca od s\u0142abo\u015bci do nieautoryzowanego dost\u0119pu lub innego naruszenia bezpiecze\u0144stwa?<\/li>\n\n\n\n<li>Jakie s\u0105 konsekwencje? Jakie zasoby, dane, konta lub procesy biznesowe mog\u0105 zosta\u0107 zagro\u017cone?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowo serwer WWW mo\u017ce udost\u0119pnia\u0107 nieaktualn\u0105 wersj\u0119 biblioteki. Sam numer wersji nie przes\u0105dza jeszcze o podatno\u015bci w danym wdro\u017ceniu. Trzeba ustali\u0107, czy biblioteka jest faktycznie u\u017cywana, czy dotyczy jej okre\u015blony warunek podatno\u015bci oraz czy konfiguracja i zabezpieczenia kompensacyjne zmieniaj\u0105 realny poziom ryzyka.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podobnie otwarty port TCP nie jest automatycznie luk\u0105 bezpiecze\u0144stwa. Mo\u017ce by\u0107 konieczny do dzia\u0142ania us\u0142ugi. Znaczenie ma to, czy us\u0142uga powinna by\u0107 osi\u0105galna z danego segmentu sieci, czy wymaga uwierzytelnienia i czy jest odpowiednio utwardzona.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.2. Pentest a skanowanie podatno\u015bci<\/h3>\n\n\n\n<figure class=\"wp-block-table has-extra-small-font-size\"><table class=\"has-fixed-layout\"><tbody><tr><th>Kryterium<\/th><th>Skanowanie podatno\u015bci<\/th><th>Test penetracyjny<\/th><\/tr><tr><td>G\u0142\u00f3wny cel<\/td><td>Wykrywanie znanych s\u0142abo\u015bci<\/td><td>Weryfikacja mo\u017cliwo\u015bci naruszenia bezpiecze\u0144stwa<\/td><\/tr><tr><td>Spos\u00f3b dzia\u0142ania<\/td><td>Automatyczne kontrole i sygnatury<\/td><td>Automatyzacja po\u0142\u0105czona z analiz\u0105 eksperck\u0105<\/td><\/tr><tr><td>Wynik<\/td><td>Lista potencjalnych podatno\u015bci<\/td><td>Zweryfikowane ustalenia i scenariusze ryzyka<\/td><\/tr><tr><td>Fa\u0142szywe alarmy<\/td><td>Mog\u0105 wyst\u0119powa\u0107 cz\u0119sto<\/td><td>S\u0105 ograniczane przez walidacj\u0119<\/td><\/tr><tr><td>Kontekst biznesowy<\/td><td>Zwykle ograniczony<\/td><td>Istotny element oceny<\/td><\/tr><tr><td>Zakres<\/td><td>Cz\u0119sto szeroki i powtarzalny<\/td><td>Zdefiniowany cel i regu\u0142y testu<\/td><\/tr><tr><td>Efekt ko\u0144cowy<\/td><td>Priorytetyzacja poprawek<\/td><td>Ocena odporno\u015bci oraz rekomendacje naprawcze<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Oba podej\u015bcia s\u0105 komplementarne. Skanowanie pozwala szybko zidentyfikowa\u0107 szerok\u0105 grup\u0119 potencjalnych problem\u00f3w, natomiast pentest sprawdza, kt\u00f3re z nich maj\u0105 istotne znaczenie w konkretnym \u015brodowisku.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.3. Rodzaje podatno\u015bci wykrywanych podczas pentest\u00f3w<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W praktyce testy mog\u0105 obejmowa\u0107 kilka warstw:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Warstwa sieciowa: niepotrzebnie wystawione us\u0142ugi, s\u0142abe regu\u0142y ACL, b\u0142\u0119dy segmentacji, niew\u0142a\u015bciwie zabezpieczone protoko\u0142y administracyjne.<\/li>\n\n\n\n<li>Warstwa systemowa: b\u0142\u0119dne uprawnienia, niebezpieczne konfiguracje, nieaktualne komponenty, nadmierne uprawnienia proces\u00f3w.<\/li>\n\n\n\n<li>Warstwa aplikacyjna: SQL injection, b\u0142\u0119dy kontroli dost\u0119pu, XSS, SSRF, niebezpieczne deserializacje i b\u0142\u0119dy obs\u0142ugi sesji.<\/li>\n\n\n\n<li>Warstwa to\u017csamo\u015bci: s\u0142abe mechanizmy uwierzytelniania, b\u0142\u0119dy resetowania hase\u0142, nieprawid\u0142owa konfiguracja MFA i b\u0142\u0119dne przypisanie r\u00f3l.<\/li>\n\n\n\n<li>Warstwa operacyjna: nadmierne uprawnienia kont serwisowych, ujawnione sekrety, niebezpieczne procesy wdro\u017ceniowe i niedostateczne monitorowanie.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Szczeg\u00f3lnie istotne s\u0105 podatno\u015bci wynikaj\u0105ce z po\u0142\u0105czenia kilku pozornie ma\u0142o gro\u017anych s\u0142abo\u015bci. Przyk\u0142adowo publicznie dost\u0119pny panel administracyjny, brak MFA i s\u0142aba kontrola pr\u00f3b logowania mog\u0105 \u0142\u0105cznie stworzy\u0107 znacznie wi\u0119ksze ryzyko ni\u017c ka\u017cda z tych cech oceniana osobno.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.4. Podstawowe standardy i ramy metodyczne<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Profesjonalne testy powinny opiera\u0107 si\u0119 na rozpoznawalnej metodyce:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OWASP Web Security Testing Guide (WSTG) \u2013 przewodnik testowania bezpiecze\u0144stwa aplikacji WWW.<\/li>\n\n\n\n<li>OWASP ASVS \u2013 wymagania weryfikacyjne dla bezpiecze\u0144stwa aplikacji.<\/li>\n\n\n\n<li>PTES (Penetration Testing Execution Standard) \u2013 ramy organizacji procesu test\u00f3w penetracyjnych.<\/li>\n\n\n\n<li>NIST SP 800-115 \u2013 wytyczne dotycz\u0105ce testowania bezpiecze\u0144stwa informacji i oceny zabezpiecze\u0144.<\/li>\n\n\n\n<li>CVSS \u2013 system oceny technicznej dotkliwo\u015bci podatno\u015bci, kt\u00f3ry nale\u017cy uzupe\u0142nia\u0107 analiz\u0105 ryzyka w konkretnym \u015brodowisku.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Standard nie zast\u0119puje planowania testu. Zakres, dopuszczalne techniki, warunki przerwania i zasady post\u0119powania z danymi musz\u0105 by\u0107 okre\u015blone przed rozpocz\u0119ciem dzia\u0142a\u0144.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.5. Zasady autoryzacji i bezpiecze\u0144stwa test\u00f3w<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Przed rozpocz\u0119ciem nale\u017cy okre\u015bli\u0107:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>W\u0142a\u015bciciela systemu i osob\u0119 zatwierdzaj\u0105c\u0105 test.<\/li>\n\n\n\n<li>Adresy IP, domeny, aplikacje i \u015brodowiska obj\u0119te zakresem.<\/li>\n\n\n\n<li>Systemy wy\u0142\u0105czone z testu, w tym zasoby podmiot\u00f3w trzecich.<\/li>\n\n\n\n<li>Dozwolone techniki i ograniczenia dotycz\u0105ce obci\u0105\u017cenia.<\/li>\n\n\n\n<li>Okno testowe, kana\u0142 kontaktu awaryjnego i procedur\u0119 przerwania.<\/li>\n\n\n\n<li>Zasady ochrony danych, przechowywania dowod\u00f3w oraz ich usuni\u0119cia po zako\u0144czeniu.<\/li>\n\n\n\n<li>Warunki raportowania incydentu wykrytego podczas test\u00f3w.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">W przypadku hostingu wsp\u00f3\u0142dzielonego szczeg\u00f3lnie wa\u017cne jest rozr\u00f3\u017cnienie w\u0142asnej witryny od infrastruktury operatora i innych klient\u00f3w. Zgoda na testowanie aplikacji nie musi oznacza\u0107 zgody na testowanie ca\u0142ej platformy hostingowej.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Rodzaje test\u00f3w: black box, grey box i white box<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Podzia\u0142 na black box, grey box i white box opisuje przede wszystkim poziom informacji udost\u0119pnionych testerowi przed rozpocz\u0119ciem badania, a nie poziom zaawansowania technik.<\/p>\n\n\n\n<figure class=\"wp-block-image is-style-default\"><img decoding=\"async\" src=\"https:\/\/images.openai.com\/static-rsc-4\/gV60KGFkR0DfvtetsYj1oxU7kGGoJUO1D0Nd7kRTE7Pd5uiKoCnPqw54yaTs6XILLWvylrY0398CGyroqdKmtXtzzJLTfEnG1C-a-zmmO5Jc0GaP8xuRcAi_ria5Rq27Jc9NULw8o-bC3Gl7fNjRn44XyUtAjqP6PSS421sOk0g?purpose=inline\" alt=\"Penetration Testing Types: 3 Classifications | Datami\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Black box \u2014 test z minimaln\u0105 wiedz\u0105<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tester otrzymuje cel i zakres, ale nie dostaje wewn\u0119trznej dokumentacji, kodu \u017ar\u00f3d\u0142owego ani uprzywilejowanych danych dost\u0119powych. Bada system z perspektywy zewn\u0119trznego napastnika.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.openai.com\/static-rsc-4\/3f0iv-MJjPDQgCgxJcVeBXmpvS7rnnv5xzch1AVIYCNGMkgvpGBGmone9XVfXNQVtAhScsvsrdcLp51dXkT6k-QtgMk1G1C0puovhycLj36e8AaqJBk5KRnGwPdEzGkhhpljWLwuypHy_7n04JDS8TKBsisIXp4dKuxYyW_ELuQ?purpose=inline\" alt=\"Your Guide to Penetration Testing\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Grey box \u2014 test z ograniczon\u0105 wiedz\u0105<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tester otrzymuje przyk\u0142adowo konto zwyk\u0142ego u\u017cytkownika, opis architektury lub dokumentacj\u0119 API. Mo\u017ce bada\u0107 problemy, kt\u00f3re ujawniaj\u0105 si\u0119 dopiero po zalogowaniu.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.openai.com\/static-rsc-4\/S4Q6b3-ZvmUFDW9i4IdLHJxXivgvNAvo961xOujCwqc0fp9DIVnSlwG9Gq1YM1Wwxys0s7fbAvhGj7U4L3cXKiid8PQb4Ab5x55mlqSK-LvC5wvFvCwroJqXf0wvrdZ6Df0HdEguuy_WIhVRIKidiaZfdeLTHMFk8rMX_sm-5iI?purpose=inline\" alt=\"Black Box vs White Box Penetration Testing in 2026 Guide\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">White box \u2014 test z szerok\u0105 wiedz\u0105<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tester ma dost\u0119p do kodu \u017ar\u00f3d\u0142owego, konfiguracji, dokumentacji technicznej, a czasem r\u00f3wnie\u017c do informacji o infrastrukturze i kont testowych o r\u00f3\u017cnych uprawnieniach.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.1. Black box \u2014 zewn\u0119trzna perspektywa ataku<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W te\u015bcie black box pierwszym zadaniem jest ustalenie rzeczywistej powierzchni ataku. Obejmuje to domeny, publiczne punkty ko\u0144cowe, dost\u0119pne us\u0142ugi i mechanizmy uwierzytelniania, ale wy\u0142\u0105cznie w granicach zatwierdzonego zakresu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowe obszary analizy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>jakie us\u0142ugi s\u0105 publicznie osi\u0105galne;<\/li>\n\n\n\n<li>czy interfejsy administracyjne s\u0105 dost\u0119pne z Internetu;<\/li>\n\n\n\n<li>czy informacje ujawniane przez b\u0142\u0119dy i nag\u0142\u00f3wki HTTP u\u0142atwiaj\u0105 identyfikacj\u0119 technologii;<\/li>\n\n\n\n<li>czy aplikacja umo\u017cliwia dost\u0119p do danych bez odpowiedniego uwierzytelnienia;<\/li>\n\n\n\n<li>czy ograniczenia pr\u00f3b logowania i odzyskiwania konta dzia\u0142aj\u0105 prawid\u0142owo.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ograniczenie: brak dost\u0119pu do informacji wewn\u0119trznych mo\u017ce spowodowa\u0107, \u017ce cz\u0119\u015b\u0107 podatno\u015bci pozostanie niewykryta. Black box nie jest automatycznie bardziej realistyczny ani bardziej kompletny od pozosta\u0142ych metod \u2014 odpowiada po prostu na inne pytania.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.2. Grey box \u2014 badanie dzia\u0142ania aplikacji po zalogowaniu<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Grey box jest cz\u0119sto bardzo efektywny w testowaniu aplikacji biznesowych, paneli klienta, system\u00f3w CMS i API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tester mo\u017ce dysponowa\u0107 dwoma kontami testowymi o odmiennych uprawnieniach. Dzi\u0119ki temu bada, czy aplikacja prawid\u0142owo egzekwuje autoryzacj\u0119 na poziomie poszczeg\u00f3lnych obiekt\u00f3w, a nie tylko ca\u0142ych ekran\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowy problem: u\u017cytkownik A mo\u017ce odczyta\u0107 w\u0142asne zam\u00f3wienie, a u\u017cytkownik B \u2014 swoje. Je\u017celi zmiana identyfikatora zam\u00f3wienia w \u017c\u0105daniu pozwala u\u017cytkownikowi A uzyska\u0107 dost\u0119p do zam\u00f3wienia B, wyst\u0119puje potencjalny b\u0142\u0105d kontroli dost\u0119pu na poziomie obiektu, klasyfikowany cz\u0119sto jako BOLA (Broken Object Level Authorization).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Test powinien wykorzystywa\u0107 przygotowane dane syntetyczne i potwierdza\u0107, \u017ce dost\u0119p do cudzego obiektu jest faktycznie blokowany. Nie ma potrzeby odczytywania rzeczywistych danych innych klient\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.3. White box \u2014 analiza z dost\u0119pem do implementacji<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">White box pozwala przej\u015b\u0107 od obserwacji zachowania systemu do analizy mechanizmu, kt\u00f3ry to zachowanie powoduje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W zale\u017cno\u015bci od zakresu mo\u017cna sprawdza\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>walidacj\u0119 danych wej\u015bciowych;<\/li>\n\n\n\n<li>budowanie zapyta\u0144 do bazy danych;<\/li>\n\n\n\n<li>kontrol\u0119 uprawnie\u0144 w warstwie us\u0142ug i repozytori\u00f3w;<\/li>\n\n\n\n<li>obs\u0142ug\u0119 wyj\u0105tk\u00f3w i ujawnianie danych w logach;<\/li>\n\n\n\n<li>zarz\u0105dzanie sekretami i tokenami;<\/li>\n\n\n\n<li>zale\u017cno\u015bci programistyczne oraz ich podatno\u015bci;<\/li>\n\n\n\n<li>konfiguracj\u0119 \u015brodowisk, kontener\u00f3w i pipeline&#8217;\u00f3w CI\/CD.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dost\u0119p do kodu u\u0142atwia wykrycie \u015bcie\u017cek, kt\u00f3rych nie da si\u0119 \u0142atwo wywo\u0142a\u0107 z interfejsu u\u017cytkownika. Nie dowodzi jednak samodzielnie, \u017ce b\u0142\u0105d jest osi\u0105galny w produkcji. Wyniki nale\u017cy korelowa\u0107 z konfiguracj\u0105 wdro\u017cenia i zachowaniem aplikacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2.4. Jak dobra\u0107 rodzaj testu?<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Sytuacja<\/th><th>Zalecane podej\u015bcie<\/th><\/tr><tr><td>Ocena zewn\u0119trznej ekspozycji us\u0142ug<\/td><td>Black box<\/td><\/tr><tr><td>Sprawdzenie separacji danych u\u017cytkownik\u00f3w<\/td><td>Grey box<\/td><\/tr><tr><td>Audyt w\u0142asnej aplikacji rozwijanej wewn\u0119trznie<\/td><td>White box + testy dynamiczne<\/td><\/tr><tr><td>Ocena bezpiecze\u0144stwa API<\/td><td>Grey box + analiza kontraktu i kodu<\/td><\/tr><tr><td>Ocena ca\u0142ego procesu wytwarzania oprogramowania<\/td><td>White box + przegl\u0105d CI\/CD<\/td><\/tr><tr><td>Sprawdzenie odporno\u015bci przed wdro\u017ceniem<\/td><td>Po\u0142\u0105czenie metod, dobrane do ryzyka<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">W praktyce najwi\u0119cej warto\u015bci daje cz\u0119sto podej\u015bcie hybrydowe: test zewn\u0119trzny identyfikuje ekspozycj\u0119, test uwierzytelniony sprawdza logik\u0119 biznesow\u0105, a analiza kodu wyja\u015bnia przyczyn\u0119 wykrytych problem\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Metodyka test\u00f3w penetracyjnych \u2014 od rozpoznania do raportu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Test penetracyjny powinien przebiega\u0107 wed\u0142ug kontrolowanego, powtarzalnego procesu. Dzi\u0119ki temu wyniki mo\u017cna odtworzy\u0107, por\u00f3wna\u0107 po wdro\u017ceniu poprawek i wykorzysta\u0107 do oceny dojrza\u0142o\u015bci zabezpiecze\u0144.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cykl testu penetracyjnego<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">01<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Planowanie i autoryzacja<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zakres, cele, ograniczenia, regu\u0142y zaanga\u017cowania.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">02<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Rozpoznanie<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inwentaryzacja zasob\u00f3w i identyfikacja powierzchni ataku.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">03<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Skanowanie i enumeracja<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Us\u0142ugi, technologie, konfiguracje i potencjalne s\u0142abo\u015bci.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">04<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Analiza i walidacja<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Weryfikacja hipotez bez zb\u0119dnego ryzyka dla systemu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">05<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ocena wp\u0142ywu<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ustalenie mo\u017cliwych skutk\u00f3w i \u015bcie\u017cek eskalacji ryzyka.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">06<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Raportowanie<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dowody, ocena ryzyka, przyczyny i plan naprawczy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">07<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Retest<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sprawdzenie poprawek i regresji bezpiecze\u0144stwa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.1. Etap pierwszy \u2014 planowanie i regu\u0142y zaanga\u017cowania<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zanim tester wy\u015ble pierwsze \u017c\u0105danie do badanego systemu, musi okre\u015bli\u0107 granice dzia\u0142a\u0144. W praktyce przygotowuje si\u0119 dokument Rules of Engagement (RoE), czyli zasady prowadzenia testu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dokument powinien zawiera\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>list\u0119 domen, adres\u00f3w IP, aplikacji i interfejs\u00f3w API;<\/li>\n\n\n\n<li>\u015brodowisko obj\u0119te testem: produkcyjne, testowe lub laboratoryjne;<\/li>\n\n\n\n<li>zakres test\u00f3w uwierzytelnionych i nieautoryzowanych;<\/li>\n\n\n\n<li>dopuszczalne techniki i ograniczenia automatyzacji;<\/li>\n\n\n\n<li>zasady test\u00f3w obci\u0105\u017ceniowych, je\u015bli zosta\u0142y osobno zatwierdzone;<\/li>\n\n\n\n<li>osoby kontaktowe, okno serwisowe i procedur\u0119 awaryjn\u0105;<\/li>\n\n\n\n<li>zasady przechowywania danych i materia\u0142\u00f3w dowodowych;<\/li>\n\n\n\n<li>warunki uznania testu za zako\u0144czony.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nale\u017cy tak\u017ce ustali\u0107, czy badanie obejmuje integracje z zewn\u0119trznymi us\u0142ugami, dostawcami p\u0142atno\u015bci, CDN, poczt\u0105 elektroniczn\u0105 lub systemami to\u017csamo\u015bci. Zasoby podmiot\u00f3w trzecich wymagaj\u0105 odpowiednich uprawnie\u0144 do testowania.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kryterium jako\u015bci: tester powinien m\u00f3c jednoznacznie wykaza\u0107, \u017ce ka\u017cde istotne dzia\u0142anie mie\u015bci\u0142o si\u0119 w zatwierdzonym zakresie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.2. Etap drugi \u2014 rozpoznanie powierzchni ataku<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Powierzchnia ataku to wszystkie elementy systemu, przez kt\u00f3re potencjalny napastnik mo\u017ce oddzia\u0142ywa\u0107 na jego zasoby. Obejmuje nie tylko porty sieciowe, lecz tak\u017ce formularze, endpointy API, panele administracyjne, mechanizmy odzyskiwania konta, integracje i procesy automatyzacji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rozpoznanie powinno odpowiedzie\u0107 na nast\u0119puj\u0105ce pytania:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Jakie zasoby nale\u017c\u0105 do organizacji i s\u0105 obj\u0119te testem?<\/li>\n\n\n\n<li>Jakie us\u0142ugi s\u0105 osi\u0105galne z poszczeg\u00f3lnych segment\u00f3w sieci?<\/li>\n\n\n\n<li>Jakie technologie i komponenty tworz\u0105 system?<\/li>\n\n\n\n<li>Kt\u00f3re funkcje wymagaj\u0105 uwierzytelnienia?<\/li>\n\n\n\n<li>Jakie granice zaufania wyst\u0119puj\u0105 pomi\u0119dzy komponentami?<\/li>\n\n\n\n<li>Kt\u00f3re zasoby zawieraj\u0105 dane krytyczne?<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">W przypadku aplikacji WWW mapa powierzchni ataku mo\u017ce obejmowa\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>g\u0142\u00f3wn\u0105 witryn\u0119 oraz subdomeny;<\/li>\n\n\n\n<li>panele administracyjne i logowania;<\/li>\n\n\n\n<li>publiczne endpointy REST i GraphQL;<\/li>\n\n\n\n<li>funkcje uploadu plik\u00f3w;<\/li>\n\n\n\n<li>wyszukiwarki, formularze i mechanizmy importu;<\/li>\n\n\n\n<li>integracje OAuth i SSO;<\/li>\n\n\n\n<li>zadania cron oraz interfejsy serwisowe;<\/li>\n\n\n\n<li>\u015brodowiska staging, development i kopie testowe.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Samo odkrycie subdomeny nie dowodzi, \u017ce nale\u017cy ona do zakresu testu. W\u0142asno\u015b\u0107 zasobu i uprawnienie do jego badania musz\u0105 zosta\u0107 potwierdzone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.3. Etap trzeci \u2014 skanowanie i enumeracja<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Enumeracja polega na ustaleniu szczeg\u00f3\u0142\u00f3w us\u0142ug i mechanizm\u00f3w, kt\u00f3re s\u0105 dost\u0119pne w danym \u015brodowisku. Na tym etapie mo\u017cna wykorzysta\u0107 skanery port\u00f3w, narz\u0119dzia do analizy HTTP, kontrolery konfiguracji TLS oraz skanery podatno\u015bci.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik\u00f3w automatycznych nie nale\u017cy interpretowa\u0107 bez kontekstu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowo skaner mo\u017ce wykry\u0107 star\u0105 wersj\u0119 serwera. Aby ustali\u0107 znaczenie wyniku, trzeba sprawdzi\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>czy wykrycie wersji jest wiarygodne;<\/li>\n\n\n\n<li>czy komponent jest obj\u0119ty konkretnym CVE;<\/li>\n\n\n\n<li>czy podatno\u015b\u0107 dotyczy u\u017cywanego modu\u0142u i konfiguracji;<\/li>\n\n\n\n<li>czy dostawca nie zastosowa\u0142 poprawki wstecznej;<\/li>\n\n\n\n<li>czy istniej\u0105 warunki wst\u0119pne wykorzystania podatno\u015bci;<\/li>\n\n\n\n<li>czy mechanizmy kompensacyjne zmieniaj\u0105 ekspozycj\u0119.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">W \u015brodowiskach produkcyjnych enumeracj\u0119 nale\u017cy prowadzi\u0107 z kontrolowan\u0105 intensywno\u015bci\u0105. Nadmierna r\u00f3wnoleg\u0142o\u015b\u0107, agresywne testy protoko\u0142\u00f3w lub du\u017ca liczba \u017c\u0105da\u0144 mog\u0105 zak\u0142\u00f3ci\u0107 prac\u0119 us\u0142ug.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.4. Etap czwarty \u2014 analiza i walidacja podatno\u015bci<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ka\u017cde ustalenie powinno przej\u015b\u0107 weryfikacj\u0119. Warto rozr\u00f3\u017cni\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wykrycie: narz\u0119dzie wskaza\u0142o potencjalny problem.<\/li>\n\n\n\n<li>Potwierdzenie: istniej\u0105 dowody, \u017ce problem wyst\u0119puje w badanym systemie.<\/li>\n\n\n\n<li>Ocena mo\u017cliwo\u015bci wykorzystania: ustalono, w jakich warunkach problem mo\u017ce zosta\u0107 wykorzystany.<\/li>\n\n\n\n<li>Ocena wp\u0142ywu: okre\u015blono skutki dla danych, uprawnie\u0144 lub dost\u0119pno\u015bci.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowo komunikat o potencjalnym SQL injection nie jest wystarczaj\u0105cym dowodem. Tester powinien zweryfikowa\u0107, czy r\u00f3\u017cnica w odpowiedzi rzeczywi\u015bcie wynika z niebezpiecznego przetwarzania danych, a nie np. z b\u0142\u0119du walidacji, cache lub niestabilno\u015bci backendu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Walidacja powinna by\u0107 mo\u017cliwie ma\u0142o inwazyjna. Nie nale\u017cy pobiera\u0107 rzeczywistych danych klient\u00f3w, usuwa\u0107 rekord\u00f3w ani wykonywa\u0107 nieodwracalnych operacji tylko po to, aby udowodni\u0107 istnienie podatno\u015bci.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.5. Etap pi\u0105ty \u2014 analiza \u015bcie\u017cek ataku<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pojedyncza podatno\u015b\u0107 mo\u017ce mie\u0107 ograniczony wp\u0142yw, ale kilka s\u0142abo\u015bci mo\u017ce utworzy\u0107 \u0142a\u0144cuch prowadz\u0105cy do powa\u017cnego naruszenia bezpiecze\u0144stwa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowy, hipotetyczny \u0142a\u0144cuch ryzyka:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Publicznie dost\u0119pny endpoint ujawnia zbyt du\u017co informacji.<\/li>\n\n\n\n<li>U\u017cytkownik o niskich uprawnieniach mo\u017ce odczyta\u0107 nieprawid\u0142owo chroniony obiekt.<\/li>\n\n\n\n<li>Ten sam b\u0142\u0105d wyst\u0119puje w funkcji udost\u0119pniaj\u0105cej dokumenty.<\/li>\n\n\n\n<li>System nie rejestruje dost\u0119pu do tych obiekt\u00f3w w spos\u00f3b umo\u017cliwiaj\u0105cy skuteczn\u0105 detekcj\u0119.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Ocena powinna uwzgl\u0119dnia\u0107 zar\u00f3wno podatno\u015bci techniczne, jak i mo\u017cliwo\u015b\u0107 wykrycia zdarzenia przez mechanizmy monitorowania.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nie zawsze konieczne jest doprowadzenie do pe\u0142nej kompromitacji systemu. Cz\u0119sto wystarczy bezpiecznie udokumentowany dow\u00f3d naruszenia granicy uprawnie\u0144, aby wykaza\u0107 ryzyko i przygotowa\u0107 zalecenia naprawcze.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.6. Etap sz\u00f3sty \u2014 raportowanie i komunikacja<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Raport powinien by\u0107 zrozumia\u0142y dla dw\u00f3ch grup odbiorc\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>kierownictwa, kt\u00f3re podejmuje decyzje dotycz\u0105ce akceptacji ryzyka i finansowania poprawek;<\/li>\n\n\n\n<li>zespo\u0142u technicznego, kt\u00f3ry musi odtworzy\u0107 problem i go naprawi\u0107.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ka\u017cde ustalenie powinno zawiera\u0107 identyfikator, tytu\u0142, poziom ryzyka, opis, warunki wyst\u0105pienia, dowody, potencjalne skutki i zalecenia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W raporcie trzeba odr\u00f3\u017cni\u0107 brak wykrytych podatno\u015bci od potwierdzenia bezpiecze\u0144stwa. Wynik negatywny oznacza jedynie, \u017ce w okre\u015blonym zakresie i przy zastosowanych metodach nie potwierdzono danego problemu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.7. Etap si\u00f3dmy \u2014 retest i zamkni\u0119cie ustale\u0144<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Retest sprawdza, czy wdro\u017cona poprawka usuwa przyczyn\u0119 problemu, a nie tylko maskuje objawy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prawid\u0142owy retest obejmuje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>odtworzenie pierwotnego scenariusza;<\/li>\n\n\n\n<li>potwierdzenie, \u017ce nieautoryzowana operacja jest blokowana;<\/li>\n\n\n\n<li>sprawdzenie poprawnego dzia\u0142ania legalnego przypadku u\u017cycia;<\/li>\n\n\n\n<li>weryfikacj\u0119 logowania i alertowania, je\u015bli by\u0142y cz\u0119\u015bci\u0105 zalecenia;<\/li>\n\n\n\n<li>kontrol\u0119 potencjalnej regresji w s\u0105siednich funkcjach;<\/li>\n\n\n\n<li>aktualizacj\u0119 statusu ustalenia.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ustalenie mo\u017cna oznaczy\u0107 jako naprawione, cz\u0119\u015bciowo naprawione, nienaprawione lub nieweryfikowalne. Ten ostatni status jest istotny, je\u015bli zmieni\u0142 si\u0119 zakres albo \u015brodowisko nie jest ju\u017c dost\u0119pne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Narz\u0119dzia pentestera \u2014 zastosowania, ograniczenia i interpretacja wynik\u00f3w<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Profesjonalny warsztat pentestera obejmuje narz\u0119dzia do enumeracji sieci, testowania HTTP, analizy aplikacji, diagnostyki protoko\u0142\u00f3w, przegl\u0105du kodu i raportowania.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.1. Nmap \u2014 rozpoznanie us\u0142ug sieciowych<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nmap s\u0142u\u017cy do wykrywania host\u00f3w, otwartych port\u00f3w i us\u0142ug. Pozwala r\u00f3wnie\u017c analizowa\u0107 wybrane w\u0142a\u015bciwo\u015bci us\u0142ug i konfiguracji sieciowych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad podstawowego skanowania w\u0142asnego laboratorium:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nmap -sT -sV --top-ports 100 192.0.2.10<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Co oznaczaj\u0105 parametry?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>-sT<\/code> \u2014 skanowanie TCP z u\u017cyciem po\u0142\u0105cze\u0144 systemowych.<\/li>\n\n\n\n<li><code>-sV<\/code> \u2014 pr\u00f3ba identyfikacji wersji us\u0142ug.<\/li>\n\n\n\n<li><code>--top-ports 100<\/code> \u2014 kontrola 100 najcz\u0119\u015bciej spotykanych port\u00f3w.<\/li>\n\n\n\n<li><code>192.0.2.10<\/code> \u2014 przyk\u0142adowy adres dokumentacyjny, nie rzeczywisty cel testu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Adresy z zakresu <code>192.0.2.0\/24<\/code> s\u0105 przeznaczone do dokumentacji i przyk\u0142ad\u00f3w. W rzeczywistym badaniu nale\u017cy podstawi\u0107 adres autoryzowanego hosta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Typowy wynik mo\u017ce wskaza\u0107 porty 22\/TCP, 80\/TCP i 443\/TCP. Interpretacja nie powinna ko\u0144czy\u0107 si\u0119 na nazwach us\u0142ug. Trzeba okre\u015bli\u0107, czy dany port powinien by\u0107 osi\u0105galny z Internetu, jakie uwierzytelnianie stosuje us\u0142uga oraz czy dost\u0119p jest ograniczony do wymaganych \u017ar\u00f3de\u0142.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wa\u017cne rozr\u00f3\u017cnienie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>open<\/code> \u2014 us\u0142uga przyjmuje po\u0142\u0105czenia na badanym porcie;<\/li>\n\n\n\n<li><code>closed<\/code> \u2014 host jest osi\u0105galny, ale port nie ma nas\u0142uchuj\u0105cej us\u0142ugi;<\/li>\n\n\n\n<li><code>filtered<\/code> \u2014 filtracja uniemo\u017cliwia jednoznaczne ustalenie stanu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nmap nie potwierdza samodzielnie, \u017ce otwarty port stanowi podatno\u015b\u0107. Jest narz\u0119dziem rozpoznawczym.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.2. Burp Suite \u2014 analiza komunikacji HTTP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Burp Suite jest platform\u0105 do testowania bezpiecze\u0144stwa aplikacji WWW. Umo\u017cliwia przechwytywanie i analizowanie \u017c\u0105da\u0144 HTTP, modyfikowanie parametr\u00f3w, badanie odpowiedzi oraz por\u00f3wnywanie zachowania aplikacji dla r\u00f3\u017cnych danych wej\u015bciowych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podstawowy proces pracy:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Uruchomienie lokalnego proxy testowego.<\/li>\n\n\n\n<li>Skonfigurowanie przegl\u0105darki testowej.<\/li>\n\n\n\n<li>Przechwycenie \u017c\u0105dania do aplikacji.<\/li>\n\n\n\n<li>Analiza metody HTTP, \u015bcie\u017cki, parametr\u00f3w, nag\u0142\u00f3wk\u00f3w i ciasteczek.<\/li>\n\n\n\n<li>Weryfikacja, czy aplikacja egzekwuje oczekiwane regu\u0142y bezpiecze\u0144stwa.<\/li>\n\n\n\n<li>Zapisanie minimalnego dowodu potwierdzaj\u0105cego ustalenie.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowe \u017c\u0105danie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/api\/orders\/1042 HTTP\/1.1\nHost: app.example.test\nAccept: application\/json\nCookie: session=&lt;TEST_SESSION&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tester powinien sprawdzi\u0107, czy identyfikator <code>1042<\/code> odnosi si\u0119 do obiektu dost\u0119pnego aktualnie zalogowanemu u\u017cytkownikowi. W przygotowanym laboratorium mo\u017cna por\u00f3wna\u0107 odpowied\u017a z odpowiedzi\u0105 uzyskan\u0105 dla obiektu nale\u017c\u0105cego do drugiego konta testowego.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nale\u017cy oceni\u0107 nie tylko kod statusu HTTP, ale r\u00f3wnie\u017c tre\u015b\u0107 odpowiedzi, skutki uboczne i zachowanie logiki biznesowej. Status <code>200 OK<\/code> nie zawsze oznacza nieautoryzowany dost\u0119p, a <code>403 Forbidden<\/code> nie dowodzi automatycznie, \u017ce wszystkie \u015bcie\u017cki dost\u0119pu s\u0105 prawid\u0142owo zabezpieczone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.3. OWASP ZAP \u2014 testowanie aplikacji WWW<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">OWASP ZAP to otwarto\u017ar\u00f3d\u0142owe narz\u0119dzie do analizy bezpiecze\u0144stwa aplikacji internetowych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mo\u017cna je wykorzysta\u0107 do:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>przegl\u0105du komunikacji HTTP;<\/li>\n\n\n\n<li>pasywnego wykrywania problem\u00f3w z nag\u0142\u00f3wkami i konfiguracj\u0105;<\/li>\n\n\n\n<li>identyfikacji znanych wzorc\u00f3w ryzyka;<\/li>\n\n\n\n<li>kontrolowanego testowania aplikacji w \u015brodowisku laboratoryjnym;<\/li>\n\n\n\n<li>automatyzacji powtarzalnych kontroli w procesie CI\/CD.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Skanowanie pasywne analizuje obserwowan\u0105 komunikacj\u0119 bez celowego wysy\u0142ania do aplikacji dodatkowych \u017c\u0105da\u0144 atakuj\u0105cych. Testy aktywne mog\u0105 natomiast modyfikowa\u0107 dane wej\u015bciowe i wywo\u0142ywa\u0107 nieoczekiwane zachowania.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wa\u017cne ograniczenie: automatyczny skaner nie rozumie w pe\u0142ni kontekstu biznesowego. Mo\u017ce nie wykry\u0107 b\u0142\u0119d\u00f3w kontroli dost\u0119pu, kt\u00f3re zale\u017c\u0105 od relacji pomi\u0119dzy u\u017cytkownikiem, rekordem i rol\u0105, albo mo\u017ce zg\u0142osi\u0107 problem, kt\u00f3rego nie da si\u0119 potwierdzi\u0107 w danej konfiguracji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.4. Metasploit \u2014 weryfikacja znanych podatno\u015bci<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Metasploit Framework jest frameworkiem wykorzystywanym w autoryzowanych testach bezpiecze\u0144stwa do sprawdzania znanych podatno\u015bci i kontrolowanej walidacji scenariuszy ataku.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wynik takiego testu zale\u017cy od kilku warunk\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>zgodno\u015bci wersji i konfiguracji celu z wymaganiami modu\u0142u;<\/li>\n\n\n\n<li>dost\u0119pno\u015bci us\u0142ugi oraz mo\u017cliwo\u015bci dotarcia do niej;<\/li>\n\n\n\n<li>spe\u0142nienia warunk\u00f3w wst\u0119pnych podatno\u015bci;<\/li>\n\n\n\n<li>obecno\u015bci poprawek, zabezpiecze\u0144 systemowych i mechanizm\u00f3w ochronnych;<\/li>\n\n\n\n<li>poprawno\u015bci konfiguracji samego testu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nieudana pr\u00f3ba nie dowodzi, \u017ce system jest bezpieczny. Mo\u017ce oznacza\u0107, \u017ce podatno\u015b\u0107 nie wyst\u0119puje, ale r\u00f3wnie\u017c \u017ce scenariusz by\u0142 nieodpowiedni albo \u015brodowisko nie spe\u0142nia\u0142o warunk\u00f3w testu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W \u015brodowisku produkcyjnym nale\u017cy zachowa\u0107 szczeg\u00f3ln\u0105 ostro\u017cno\u015b\u0107. Niekt\u00f3re modu\u0142y mog\u0105 zmienia\u0107 stan systemu, destabilizowa\u0107 us\u0142ug\u0119 lub uruchamia\u0107 kod. Zakres i skutki u\u017cycia musz\u0105 by\u0107 wcze\u015bniej zatwierdzone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.5. Wireshark \u2014 analiza ruchu sieciowego<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wireshark pozwala analizowa\u0107 pakiety sieciowe i zachowanie protoko\u0142\u00f3w. Jest przydatny w diagnostyce TLS, DNS, TCP, komunikacji aplikacyjnej oraz problem\u00f3w z segmentacj\u0105 sieci.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowe filtry wy\u015bwietlania:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dns\ntcp.flags.syn == 1\ntls.handshake.type == 1\nhttp.request<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Filtry pomagaj\u0105 zaw\u0119zi\u0107 widok do okre\u015blonego rodzaju komunikacji. Nie s\u0105 mechanizmem blokowania ruchu ani dowodem podatno\u015bci samym w sobie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W analizie nale\u017cy uwzgl\u0119dni\u0107, \u017ce:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>przechwycenie mo\u017ce nie obejmowa\u0107 ca\u0142ej komunikacji;<\/li>\n\n\n\n<li>szyfrowany ruch TLS zwykle nie ujawnia tre\u015bci aplikacyjnej bez odpowiednich materia\u0142\u00f3w deszyfruj\u0105cych;<\/li>\n\n\n\n<li>ruch widoczny na jednym interfejsie nie reprezentuje ca\u0142ej topologii sieci;<\/li>\n\n\n\n<li>dane w plikach PCAP mog\u0105 zawiera\u0107 tokeny, dane osobowe lub inne informacje wra\u017cliwe.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Dlatego pliki przechwyce\u0144 powinny by\u0107 przechowywane i udost\u0119pniane zgodnie z zasadami ochrony dowod\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.6. Kt\u00f3re narz\u0119dzie wybra\u0107?<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Cel<\/th><th>Narz\u0119dzie<\/th><th>Najwa\u017cniejsze ograniczenie<\/th><\/tr><tr><td>Inwentaryzacja us\u0142ug<\/td><td>Nmap<\/td><td>Nie okre\u015bla samodzielnie ryzyka biznesowego<\/td><\/tr><tr><td>Analiza \u017c\u0105da\u0144 WWW<\/td><td>Burp Suite<\/td><td>Wymaga interpretacji zachowania aplikacji<\/td><\/tr><tr><td>Automatyzacja kontroli WWW<\/td><td>OWASP ZAP<\/td><td>Nie zast\u0119puje test\u00f3w logiki biznesowej<\/td><\/tr><tr><td>Walidacja znanych scenariuszy<\/td><td>Metasploit<\/td><td>Nieodpowiedni modu\u0142 mo\u017ce da\u0107 myl\u0105cy wynik lub zaszkodzi\u0107 systemowi<\/td><\/tr><tr><td>Analiza protoko\u0142\u00f3w<\/td><td>Wireshark<\/td><td>Widoczno\u015b\u0107 ograniczona do dost\u0119pnego przechwycenia<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Najwa\u017cniejsz\u0105 kompetencj\u0105 nie jest liczba zainstalowanych narz\u0119dzi, lecz umiej\u0119tno\u015b\u0107 sformu\u0142owania hipotezy, poprawnego przeprowadzenia testu i zinterpretowania dowod\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Testy bezpiecze\u0144stwa aplikacji WWW, WordPressa i API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aplikacje internetowe stanowi\u0105 szczeg\u00f3lnie istotny obszar test\u00f3w penetracyjnych, poniewa\u017c \u0142\u0105cz\u0105 publicznie dost\u0119pny interfejs, logik\u0119 biznesow\u0105, mechanizmy uwierzytelniania, baz\u0119 danych i cz\u0119sto wiele integracji zewn\u0119trznych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W\u0142a\u015bciwym punktem odniesienia dla tego obszaru jest katalog zagro\u017ce\u0144 OWASP Top 10 oraz szczeg\u00f3\u0142owe procedury OWASP Web Security Testing Guide.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.1. Kontrola dost\u0119pu \u2014 IDOR, BOLA i eskalacja uprawnie\u0144<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kontrola dost\u0119pu okre\u015bla, jakie operacje mo\u017ce wykonywa\u0107 dany podmiot na okre\u015blonych zasobach. W prawid\u0142owo zaprojektowanej aplikacji nie wystarczy sprawdzi\u0107, czy u\u017cytkownik jest zalogowany \u2014 trzeba r\u00f3wnie\u017c sprawdzi\u0107, czy ma uprawnienia do konkretnego obiektu i operacji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad: system CRM umo\u017cliwia odczyt klienta za pomoc\u0105 endpointu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/api\/customers\/5821 HTTP\/1.1\nHost: crm.example.test<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aplikacja mo\u017ce poprawnie uwierzytelnia\u0107 u\u017cytkownika, a jednocze\u015bnie nie sprawdza\u0107, czy rekord <code>5821<\/code> nale\u017cy do jego organizacji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To typowy scenariusz b\u0142\u0119du kontroli dost\u0119pu na poziomie obiektu, znany jako BOLA. Termin IDOR (Insecure Direct Object Reference) jest cz\u0119sto u\u017cywany do opisu podobnej sytuacji, w kt\u00f3rej manipulacja referencj\u0105 do zasobu prowadzi do nieautoryzowanego dost\u0119pu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Metodyka bezpiecznej weryfikacji:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Przygotuj dwa konta testowe z odmiennymi uprawnieniami.<\/li>\n\n\n\n<li>Utw\u00f3rz syntetyczne obiekty przypisane do ka\u017cdego konta.<\/li>\n\n\n\n<li>Wykonaj dozwolon\u0105 operacj\u0119 na obiekcie w\u0142a\u015bciciela.<\/li>\n\n\n\n<li>W odizolowanym \u015brodowisku sprawd\u017a pr\u00f3b\u0119 dost\u0119pu do obiektu drugiego konta.<\/li>\n\n\n\n<li>Zweryfikuj, czy aplikacja blokuje odczyt i modyfikacj\u0119.<\/li>\n\n\n\n<li>Sprawd\u017a logi serwera i potwierd\u017a, \u017ce nie nast\u0105pi\u0142a zmiana stanu danych.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Test nale\u017cy powt\u00f3rzy\u0107 dla r\u00f3\u017cnych metod HTTP oraz funkcji, je\u015bli nale\u017c\u0105 do zakresu: odczytu, edycji, eksportu i usuwania. Kontrola dost\u0119pu powinna by\u0107 realizowana po stronie serwera, niezale\u017cnie od tego, czy interfejs u\u017cytkownika ukrywa przycisk lub pole formularza.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.2. SQL injection \u2014 b\u0142\u0119dy w budowaniu zapyta\u0144<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SQL injection wyst\u0119puje, gdy niezaufane dane wej\u015bciowe wp\u0142ywaj\u0105 na struktur\u0119 wykonywanego zapytania SQL zamiast by\u0107 traktowane wy\u0142\u0105cznie jako dane.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowy niebezpieczny wzorzec w PHP:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$sql = \"SELECT id, email FROM users\n        WHERE email = '\" . $_GET&#91;'email'] . \"'\";<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W tym przyk\u0142adzie warto\u015b\u0107 parametru <code>email<\/code> jest bezpo\u015brednio do\u0142\u0105czana do tekstu zapytania. Je\u017celi nie jest w\u0142a\u015bciwie zabezpieczona, mo\u017ce zmieni\u0107 interpretacj\u0119 sk\u0142adni SQL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Preferowanym rozwi\u0105zaniem jest parametryzacja:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$stmt = $pdo-&gt;prepare(\n    'SELECT id, email FROM users WHERE email = :email'\n);\n\n$stmt-&gt;execute(&#91;\n    'email' =&gt; $email\n]);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W drugim wariancie sterownik przekazuje warto\u015b\u0107 parametru oddzielnie od struktury zapytania, co zapobiega traktowaniu danych wej\u015bciowych jako fragmentu sk\u0142adni SQL w tym kontek\u015bcie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nale\u017cy jednak pami\u0119ta\u0107, \u017ce parametryzacja nie zast\u0119puje wszystkich kontroli. Dynamiczne nazwy tabel, kolumn i kierunki sortowania cz\u0119sto wymagaj\u0105 jawnej listy dozwolonych warto\u015bci, poniewa\u017c nie wszystkie elementy sk\u0142adni SQL mo\u017cna bezpo\u015brednio parametryzowa\u0107.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co powinien obejmowa\u0107 test?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>identyfikacj\u0119 parametr\u00f3w wp\u0142ywaj\u0105cych na zapytania;<\/li>\n\n\n\n<li>sprawdzenie sposobu budowania zapyta\u0144 w kodzie;<\/li>\n\n\n\n<li>kontrolowan\u0105 walidacj\u0119 zachowania na danych testowych;<\/li>\n\n\n\n<li>analiz\u0119 obs\u0142ugi b\u0142\u0119d\u00f3w i logowania;<\/li>\n\n\n\n<li>potwierdzenie, \u017ce naprawa dotyczy wszystkich odpowiednich \u015bcie\u017cek kodu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Komunikat b\u0142\u0119du bazy danych mo\u017ce by\u0107 wskaz\u00f3wk\u0105, ale nie jest samodzielnym dowodem mo\u017cliwo\u015bci wykorzystania SQL injection.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.3. Cross-Site Scripting \u2014 XSS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">XSS to klasa podatno\u015bci, w kt\u00f3rej dane kontrolowane przez u\u017cytkownika zostaj\u0105 niebezpiecznie umieszczone w kontek\u015bcie wykonywalnym przegl\u0105darki.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wyr\u00f3\u017cnia si\u0119 trzy podstawowe rodzaje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Stored XSS: niebezpieczne dane s\u0105 zapisywane, a nast\u0119pnie wy\u015bwietlane innym u\u017cytkownikom.<\/li>\n\n\n\n<li>Reflected XSS: dane z \u017c\u0105dania trafiaj\u0105 do odpowiedzi i s\u0105 interpretowane przez przegl\u0105dark\u0119.<\/li>\n\n\n\n<li>DOM-based XSS: podatno\u015b\u0107 wynika z niebezpiecznej obs\u0142ugi danych przez kod JavaScript po stronie klienta.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowy ryzykowny fragment:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>resultElement.innerHTML = userProvidedText;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Je\u017celi <code>userProvidedText<\/code> zawiera niezaufane dane, przegl\u0105darka mo\u017ce potraktowa\u0107 ich cz\u0119\u015b\u0107 jako znaczniki HTML, a w niekt\u00f3rych kontekstach r\u00f3wnie\u017c jako kod.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je\u015bli celem jest wy\u015bwietlenie zwyk\u0142ego tekstu, bezpieczniejszym wyborem jest:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>resultElement.textContent = userProvidedText;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W przypadku konieczno\u015bci renderowania dozwolonego HTML nale\u017cy u\u017cywa\u0107 sprawdzonego sanitizera i okre\u015bli\u0107, kt\u00f3re elementy oraz atrybuty s\u0105 dopuszczalne.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Weryfikacja XSS powinna uwzgl\u0119dnia\u0107 kontekst wyj\u015bcia: HTML, atrybut HTML, URL, JavaScript lub CSS. Jedna metoda kodowania nie zabezpiecza prawid\u0142owo wszystkich tych kontekst\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nag\u0142\u00f3wek CSP (Content Security Policy) mo\u017ce ograniczy\u0107 skutki niekt\u00f3rych b\u0142\u0119d\u00f3w, lecz nie zast\u0119puje prawid\u0142owego kodowania wyj\u015bcia i sanitizacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.4. Uwierzytelnianie, sesje i mechanizmy odzyskiwania konta<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W tej cz\u0119\u015bci testu analizuje si\u0119 ca\u0142y cykl \u017cycia to\u017csamo\u015bci:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>rejestracj\u0119 konta;<\/li>\n\n\n\n<li>logowanie i obs\u0142ug\u0119 b\u0142\u0119d\u00f3w uwierzytelniania;<\/li>\n\n\n\n<li>MFA i odzyskiwanie dost\u0119pu;<\/li>\n\n\n\n<li>zmian\u0119 has\u0142a i adresu e-mail;<\/li>\n\n\n\n<li>uniewa\u017cnianie sesji;<\/li>\n\n\n\n<li>rotacj\u0119 token\u00f3w;<\/li>\n\n\n\n<li>wylogowanie z poszczeg\u00f3lnych urz\u0105dze\u0144.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">W aplikacjach wykorzystuj\u0105cych ciasteczka sesyjne nale\u017cy zweryfikowa\u0107 ustawienia <code>Secure<\/code>, <code>HttpOnly<\/code> i <code>SameSite<\/code>, a tak\u017ce spos\u00f3b generowania, odnawiania i uniewa\u017cniania identyfikator\u00f3w sesji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ka\u017cda z tych w\u0142a\u015bciwo\u015bci ma inne znaczenie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Secure<\/code> ogranicza wysy\u0142anie ciasteczka do po\u0142\u0105cze\u0144 HTTPS.<\/li>\n\n\n\n<li><code>HttpOnly<\/code> blokuje bezpo\u015bredni odczyt ciasteczka przez standardowe API JavaScript.<\/li>\n\n\n\n<li><code>SameSite<\/code> wp\u0142ywa na wysy\u0142anie ciasteczka w kontek\u015bcie \u017c\u0105da\u0144 mi\u0119dzywitrynowych.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u017badna z tych flag nie zast\u0119puje kontroli uprawnie\u0144 po stronie serwera. Warto r\u00f3wnie\u017c pami\u0119ta\u0107, \u017ce <code>SameSite<\/code> nie eliminuje automatycznie wszystkich scenariuszy CSRF.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Szczeg\u00f3lnie wa\u017cne testy obejmuj\u0105 uniewa\u017cnienie starych sesji po zmianie has\u0142a, prawid\u0142owe sprawdzanie jednorazowo\u015bci token\u00f3w resetuj\u0105cych oraz ochron\u0119 przed ponownym wykorzystaniem tokenu po jego uniewa\u017cnieniu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.5. CSRF \u2014 wymuszanie niepo\u017c\u0105danych operacji<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cross-Site Request Forgery polega na doprowadzeniu do wykonania niepo\u017c\u0105danej operacji przez przegl\u0105dark\u0119 u\u017cytkownika, kt\u00f3ry ma aktywn\u0105 sesj\u0119 w podatnej aplikacji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ryzyko zale\u017cy od sposobu uwierzytelniania, ustawie\u0144 ciasteczek i charakteru operacji. Typowe zabezpieczenia obejmuj\u0105:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>tokeny anty-CSRF powi\u0105zane z sesj\u0105;<\/li>\n\n\n\n<li>weryfikacj\u0119 nag\u0142\u00f3wka <code>Origin<\/code> lub odpowiednio kontrolowanego <code>Referer<\/code>;<\/li>\n\n\n\n<li>odpowiednie ustawienia <code>SameSite<\/code>;<\/li>\n\n\n\n<li>wymaganie ponownego potwierdzenia przy operacjach wra\u017cliwych;<\/li>\n\n\n\n<li>niewykorzystywanie metod GET do zmiany stanu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Test powinien sprawdzi\u0107, czy operacje zmieniaj\u0105ce stan wymagaj\u0105 w\u0142a\u015bciwych zabezpiecze\u0144, czy tokeny s\u0105 walidowane po stronie serwera i czy aplikacja nie akceptuje ich nieprawid\u0142owych lub brakuj\u0105cych warto\u015bci.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.6. SSRF \u2014 niebezpieczne \u017c\u0105dania po stronie serwera<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Server-Side Request Forgery wyst\u0119puje wtedy, gdy aplikacja umo\u017cliwia u\u017cytkownikowi wp\u0142ywanie na adres, pod kt\u00f3ry serwer wykonuje \u017c\u0105danie, bez wystarczaj\u0105cej kontroli celu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowe funkcje nara\u017cone na takie ryzyko:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>pobieranie obraz\u00f3w z URL;<\/li>\n\n\n\n<li>import danych z zewn\u0119trznych \u017ar\u00f3de\u0142;<\/li>\n\n\n\n<li>generowanie podgl\u0105du strony;<\/li>\n\n\n\n<li>webhooki;<\/li>\n\n\n\n<li>integracje pobieraj\u0105ce pliki;<\/li>\n\n\n\n<li>funkcje diagnostyczne \u0142\u0105cz\u0105ce si\u0119 z innymi us\u0142ugami.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Problem staje si\u0119 szczeg\u00f3lnie powa\u017cny, je\u015bli serwer mo\u017ce dotrze\u0107 do zasob\u00f3w niedost\u0119pnych z Internetu, np. wewn\u0119trznych paneli administracyjnych lub us\u0142ug infrastrukturalnych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zabezpieczenia powinny obejmowa\u0107 walidacj\u0119 schematu i hosta, listy dozwolonych cel\u00f3w, ograniczenie ruchu wychodz\u0105cego, ponown\u0105 weryfikacj\u0119 po przekierowaniach oraz blokowanie adres\u00f3w wewn\u0119trznych i specjalnych zakres\u00f3w IP. Kontrola powinna uwzgl\u0119dnia\u0107 tak\u017ce rozwi\u0105zywanie DNS i ryzyko zmiany adresu mi\u0119dzy walidacj\u0105 a nawi\u0105zaniem po\u0142\u0105czenia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sama lista blokowanych domen mo\u017ce by\u0107 niewystarczaj\u0105ca, je\u017celi aplikacja dopuszcza alternatywne reprezentacje adres\u00f3w, przekierowania lub nietypowe protoko\u0142y.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.7. Bezpiecze\u0144stwo uploadu plik\u00f3w<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Funkcje przesy\u0142ania plik\u00f3w s\u0105 cz\u0119stym \u017ar\u00f3d\u0142em problem\u00f3w zwi\u0105zanych z walidacj\u0105 danych i uprawnieniami.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nale\u017cy sprawdzi\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>czy serwer weryfikuje rzeczywisty typ pliku, a nie tylko deklaracj\u0119 klienta;<\/li>\n\n\n\n<li>czy rozszerzenia s\u0105 walidowane wzgl\u0119dem listy dozwolonych format\u00f3w;<\/li>\n\n\n\n<li>czy nazwy plik\u00f3w s\u0105 normalizowane i pozbawiane niebezpiecznych \u015bcie\u017cek;<\/li>\n\n\n\n<li>czy limity wielko\u015bci i liczby plik\u00f3w s\u0105 egzekwowane po stronie serwera;<\/li>\n\n\n\n<li>czy pliki s\u0105 przechowywane poza katalogiem wykonywalnym;<\/li>\n\n\n\n<li>czy pobieranie wymaga w\u0142a\u015bciwej autoryzacji;<\/li>\n\n\n\n<li>czy mechanizmy skanowania i kwarantanny dzia\u0142aj\u0105 zgodnie z wymaganiami.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Szczeg\u00f3lne znaczenie ma separacja przechowywania od wykonywania. Nawet poprawnie rozpoznany plik mo\u017ce stwarza\u0107 ryzyko, je\u015bli zostanie zapisany w miejscu, w kt\u00f3rym serwer interpretuje go jako wykonywalny kod.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.8. Testy bezpiecze\u0144stwa WordPressa<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W kontek\u015bcie HackerStop.pl i serwis\u00f3w opartych na WordPressie audyt powinien obejmowa\u0107 wi\u0119cej ni\u017c sam rdze\u0144 CMS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A. Rdze\u0144, motywy i wtyczki<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nale\u017cy zinwentaryzowa\u0107 wersj\u0119 WordPressa, PHP, aktywne motywy, wtyczki i ich zale\u017cno\u015bci. Ka\u017cdy komponent trzeba ocenia\u0107 pod k\u0105tem znanych podatno\u015bci oraz rzeczywistego sposobu u\u017cycia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nie nale\u017cy uznawa\u0107 ka\u017cdej starej wtyczki za podatn\u0105 ani ka\u017cdej aktualizacji za wystarczaj\u0105ce rozwi\u0105zanie wszystkich problem\u00f3w. Warto weryfikowa\u0107 \u017ar\u00f3d\u0142o komponentu, status utrzymania, histori\u0119 poprawek i zgodno\u015b\u0107 wersji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">B. Role i uprawnienia<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nale\u017cy sprawdzi\u0107, czy role <code>administrator<\/code>, <code>editor<\/code>, <code>author<\/code>, <code>contributor<\/code> i <code>subscriber<\/code> maj\u0105 tylko wymagane mo\u017cliwo\u015bci.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W kodzie wtyczek szczeg\u00f3lne znaczenie maj\u0105 kontrole capability, np.:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if ( ! current_user_can( 'manage_options' ) ) {\n    wp_die( 'Brak uprawnie\u0144.' );\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To jedynie uproszczony przyk\u0142ad kontroli dost\u0119pu. W\u0142a\u015bciwa zdolno\u015b\u0107 powinna by\u0107 dobrana do wykonywanej operacji. Trzeba te\u017c sprawdzi\u0107, czy kontrola wyst\u0119puje w ka\u017cdym istotnym handlerze, a nie wy\u0142\u0105cznie w kodzie wy\u015bwietlaj\u0105cym panel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C. Nonce i operacje zmieniaj\u0105ce stan<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress udost\u0119pnia mechanizmy nonce, kt\u00f3re pomagaj\u0105 chroni\u0107 operacje przed okre\u015blonymi scenariuszami CSRF. Nonce nie jest jednak mechanizmem autoryzacji. Kod powinien osobno sprawdza\u0107 uprawnienia u\u017cytkownika i poprawno\u015b\u0107 nonce.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">D. REST API i AJAX<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Testy powinny obj\u0105\u0107 endpointy REST API, akcje AJAX oraz operacje wykonywane przez zaplecze. Nale\u017cy sprawdzi\u0107, czy callbacki weryfikuj\u0105 uprawnienia, czy dane s\u0105 walidowane i sanitizowane oraz czy odpowiedzi nie ujawniaj\u0105 zb\u0119dnych informacji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">E. Konfiguracja i dane wra\u017cliwe<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Warto oceni\u0107 ochron\u0119 <code>wp-config.php<\/code>, kopii zapasowych, log\u00f3w, plik\u00f3w eksportu, sekret\u00f3w API i danych dost\u0119powych do bazy. Publiczne kopie zapasowe mog\u0105 ujawni\u0107 znacznie wi\u0119cej ni\u017c standardowy ekran logowania.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F. Automatyzacja aktualizacji i monitoring<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mechanizm aktualizacji powinien zapewnia\u0107 kontrol\u0119 wersji, mo\u017cliwo\u015b\u0107 odtworzenia poprzedniego stanu i weryfikacj\u0119 dzia\u0142ania witryny po wdro\u017ceniu. Na serwisie produkcyjnym warto testowa\u0107 aktualizacje najpierw w \u015brodowisku staging, zw\u0142aszcza gdy obejmuj\u0105 du\u017ce zmiany PHP lub krytyczne wtyczki.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5.9. Testowanie API REST i GraphQL<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">API nale\u017cy ocenia\u0107 na poziomie uwierzytelniania, autoryzacji, walidacji wej\u015bcia, ogranicze\u0144 zasob\u00f3w i logiki biznesowej.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Najwa\u017cniejsze klasy problem\u00f3w obejmuj\u0105:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>BOLA \u2014 nieprawid\u0142owa kontrola dost\u0119pu do obiekt\u00f3w;<\/li>\n\n\n\n<li>BFLA \u2014 nieprawid\u0142owa kontrola dost\u0119pu do funkcji;<\/li>\n\n\n\n<li>nadmierne ujawnianie w\u0142a\u015bciwo\u015bci obiekt\u00f3w;<\/li>\n\n\n\n<li>b\u0142\u0119dn\u0105 walidacj\u0119 danych wej\u015bciowych;<\/li>\n\n\n\n<li>niew\u0142a\u015bciwe zarz\u0105dzanie tokenami;<\/li>\n\n\n\n<li>brak ogranicze\u0144 cz\u0119stotliwo\u015bci \u017c\u0105da\u0144;<\/li>\n\n\n\n<li>niebezpieczne operacje masowe;<\/li>\n\n\n\n<li>brak limit\u00f3w wielko\u015bci odpowiedzi i kosztownych zapyta\u0144.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">W GraphQL warto dodatkowo oceni\u0107 dost\u0119pno\u015b\u0107 introspekcji, limity g\u0142\u0119boko\u015bci i z\u0142o\u017cono\u015bci zapyta\u0144 oraz kontrol\u0119 uprawnie\u0144 na poziomie resolver\u00f3w. Wy\u0142\u0105czenie introspekcji mo\u017ce ograniczy\u0107 ilo\u015b\u0107 informacji ujawnianych w niekt\u00f3rych wdro\u017ceniach, ale samo w sobie nie zabezpiecza API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W przypadku operacji masowych trzeba sprawdzi\u0107, czy klient nie mo\u017ce nadpisa\u0107 p\u00f3l, kt\u00f3re powinny by\u0107 kontrolowane wy\u0142\u0105cznie przez serwer, takich jak rola, status p\u0142atno\u015bci czy identyfikator w\u0142a\u015bciciela. To obszar cz\u0119sto okre\u015blany jako mass assignment lub niebezpieczne przypisywanie w\u0142a\u015bciwo\u015bci.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Przyk\u0142adowy scenariusz testu w laboratorium<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Poni\u017cszy scenariusz pokazuje, jak mo\u017cna przeprowadzi\u0107 ograniczony test kontroli dost\u0119pu w aplikacji posiadaj\u0105cej w\u0142asne konto u\u017cytkownika i zasoby przypisane do tego konta.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.1. Cel testu<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cel: zweryfikowanie, czy u\u017cytkownik A nie mo\u017ce odczyta\u0107 zasobu nale\u017c\u0105cego do u\u017cytkownika B przez zmian\u0119 identyfikatora obiektu w \u017c\u0105daniu API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zakres:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>aplikacja testowa;<\/li>\n\n\n\n<li>dwa przygotowane konta;<\/li>\n\n\n\n<li>dwa syntetyczne rekordy;<\/li>\n\n\n\n<li>jeden endpoint odczytu;<\/li>\n\n\n\n<li>brak rzeczywistych danych klient\u00f3w;<\/li>\n\n\n\n<li>brak test\u00f3w obci\u0105\u017ceniowych i destrukcyjnych.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.2. Przygotowanie \u015brodowiska<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Przygotuj dwa konta:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Konto<\/th><th>Zas\u00f3b<\/th><th>Oczekiwany dost\u0119p<\/th><\/tr><tr><td><code>test-user-a<\/code><\/td><td><code>record-a<\/code><\/td><td>Odczyt w\u0142asnego rekordu<\/td><\/tr><tr><td><code>test-user-b<\/code><\/td><td><code>record-b<\/code><\/td><td>Odczyt w\u0142asnego rekordu<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Upewnij si\u0119, \u017ce aplikacja ma przygotowane logi \u017c\u0105da\u0144 oraz \u017ce testowe dane mo\u017cna \u0142atwo usun\u0105\u0107 po zako\u0144czeniu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.3. Test funkcjonalny<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Najpierw zaloguj si\u0119 jako u\u017cytkownik A i wykonaj prawid\u0142owe \u017c\u0105danie do w\u0142asnego zasobu. Zapisz:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>metod\u0119 i \u015bcie\u017ck\u0119;<\/li>\n\n\n\n<li>kod statusu;<\/li>\n\n\n\n<li>identyfikator zwr\u00f3conego rekordu;<\/li>\n\n\n\n<li>istotne nag\u0142\u00f3wki;<\/li>\n\n\n\n<li>czas wykonania i identyfikator korelacyjny, je\u015bli jest dost\u0119pny.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nast\u0119pnie, w ramach autoryzowanego testu, sprawd\u017a pr\u00f3b\u0119 odczytu syntetycznego rekordu u\u017cytkownika B.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Oczekiwane zachowanie: serwer odrzuca pr\u00f3b\u0119 dost\u0119pu lub stosuje inn\u0105, \u015bwiadomie zaprojektowan\u0105 polityk\u0119, kt\u00f3ra nie ujawnia chronionych danych.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nie nale\u017cy opiera\u0107 wniosku wy\u0142\u0105cznie na kodzie statusu. Odpowied\u017a nie mo\u017ce zawiera\u0107 danych chronionego rekordu, a pr\u00f3ba nie mo\u017ce wywo\u0142a\u0107 niepo\u017c\u0105danej zmiany stanu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.4. Analiza wynik\u00f3w<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mo\u017cliwe wyniki:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Oczekiwany: u\u017cytkownik A nie uzyskuje dost\u0119pu do rekordu B.<\/li>\n\n\n\n<li>Negatywny: aplikacja zwraca dane rekordu B u\u017cytkownikowi A.<\/li>\n\n\n\n<li>Niejednoznaczny: odpowied\u017a wskazuje na odmow\u0119, ale logi lub zachowanie aplikacji nie pozwalaj\u0105 ustali\u0107, czy autoryzacja jest poprawnie egzekwowana.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">W przypadku wyniku negatywnego nale\u017cy ustali\u0107, w kt\u00f3rej warstwie wyst\u0119puje b\u0142\u0105d: kontrolerze API, warstwie us\u0142ug, zapytaniu do bazy danych czy konfiguracji tenant\u00f3w. Poprawka powinna wynika\u0107 z to\u017csamo\u015bci i uprawnie\u0144 u\u017cytkownika, a nie z za\u0142o\u017cenia, \u017ce identyfikatory zasob\u00f3w s\u0105 trudne do odgadni\u0119cia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.5. Zalecana poprawka<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Logika aplikacji powinna pobiera\u0107 zas\u00f3b w kontek\u015bcie uprawnie\u0144 zalogowanego u\u017cytkownika. Przyk\u0142adowo warstwa danych mo\u017ce filtrowa\u0107 rekordy po identyfikatorze w\u0142a\u015bciciela lub identyfikatorze organizacji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Schematycznie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT id, name\nFROM records\nWHERE id = :record_id\n  AND owner_id = :authenticated_user_id;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To przyk\u0142ad uproszczony. W aplikacji wielodost\u0119pnej nale\u017cy uwzgl\u0119dni\u0107 tak\u017ce granice organizacji, role, delegowane uprawnienia i wymagania logiki biznesowej.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.6. Retest<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Po poprawce powt\u00f3rz oba przypadki:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>U\u017cytkownik A odczytuje w\u0142asny rekord.<\/li>\n\n\n\n<li>U\u017cytkownik A pr\u00f3buje odczyta\u0107 rekord B.<\/li>\n\n\n\n<li>U\u017cytkownik B odczytuje w\u0142asny rekord.<\/li>\n\n\n\n<li>Zesp\u00f3\u0142 weryfikuje logowanie odm\u00f3w i brak wycieku danych.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Dobra poprawka nie tylko blokuje nieautoryzowany dost\u0119p, ale r\u00f3wnie\u017c zachowuje prawid\u0142owe dzia\u0142anie uprawnionych operacji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7. Raport z test\u00f3w penetracyjnych \u2014 CVSS, wp\u0142yw podatno\u015bci i zalecenia naprawcze<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Raport jest najwa\u017cniejszym produktem ko\u0144cowym pentestu. To na jego podstawie w\u0142a\u015bciciel systemu podejmuje decyzje o priorytetach naprawczych, akceptacji ryzyka i inwestycjach w zabezpieczenia.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Raport powinien przedstawia\u0107 nie tylko list\u0119 b\u0142\u0119d\u00f3w, lecz tak\u017ce ich przyczyny, mo\u017cliwe konsekwencje oraz spos\u00f3b weryfikacji naprawy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.1. Struktura profesjonalnego raportu<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">01<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Streszczenie zarz\u0105dcze<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Najwa\u017cniejsze ryzyka, ich wp\u0142yw na organizacj\u0119 i priorytety dzia\u0142a\u0144.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">02<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zakres i metodyka<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Badane zasoby, daty, rodzaje test\u00f3w, ograniczenia i wy\u0142\u0105czenia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">03<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Podsumowanie wynik\u00f3w<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Liczba ustale\u0144 wed\u0142ug poziomu ryzyka i statusu weryfikacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">04<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Szczeg\u00f3\u0142owe ustalenia<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dowody, warunki wyst\u0105pienia, wp\u0142yw, przyczyna i rekomendacja.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">05<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Plan naprawczy<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Priorytety, odpowiedzialno\u015b\u0107, zale\u017cno\u015bci i terminy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">06<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Retest i zamkni\u0119cie<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wyniki ponownej weryfikacji oraz pozosta\u0142e ryzyka.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.2. CVSS \u2014 jak ocenia\u0107 techniczn\u0105 dotkliwo\u015b\u0107 podatno\u015bci?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CVSS (Common Vulnerability Scoring System) jest standardem s\u0142u\u017c\u0105cym do oceny technicznej dotkliwo\u015bci podatno\u015bci. W wersji CVSS 4.0 podstawowa ocena uwzgl\u0119dnia mi\u0119dzy innymi warunki ataku, wymagane uprawnienia, interakcj\u0119 u\u017cytkownika i wp\u0142yw na bezpiecze\u0144stwo zasob\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Warto\u015bci wynik\u00f3w podstawowych s\u0105 zwykle interpretowane nast\u0119puj\u0105co:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Wynik CVSS<\/th><th>Klasyfikacja<\/th><\/tr><tr><td>0,0<\/td><td>Brak dotkliwo\u015bci<\/td><\/tr><tr><td>0,1\u20133,9<\/td><td>Niska<\/td><\/tr><tr><td>4,0\u20136,9<\/td><td>\u015arednia<\/td><\/tr><tr><td>7,0\u20138,9<\/td><td>Wysoka<\/td><\/tr><tr><td>9,0\u201310,0<\/td><td>Krytyczna<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">CVSS nie jest jednak kompletn\u0105 ocen\u0105 ryzyka biznesowego. Wynik nie m\u00f3wi samodzielnie, czy podatny komponent zawiera dane krytyczne, czy system jest publicznie dost\u0119pny ani jakie straty mo\u017ce spowodowa\u0107 incydent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">W raporcie nale\u017cy zatem odr\u00f3\u017cnia\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dotkliwo\u015b\u0107 techniczn\u0105 \u2014 jak powa\u017cna jest podatno\u015b\u0107 wed\u0142ug metodyki CVSS;<\/li>\n\n\n\n<li>ryzyko operacyjne \u2014 jakie jest prawdopodobie\u0144stwo i skutek wykorzystania w konkretnym \u015brodowisku;<\/li>\n\n\n\n<li>priorytet naprawy \u2014 jak szybko organizacja powinna zareagowa\u0107, uwzgl\u0119dniaj\u0105c ekspozycj\u0119, dost\u0119pne zabezpieczenia i znaczenie biznesowe zasobu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowo podatno\u015b\u0107 krytyczna w nieu\u017cywanym systemie testowym, odizolowanym od sieci, mo\u017ce wymaga\u0107 innej kolejno\u015bci dzia\u0142a\u0144 ni\u017c podatno\u015b\u0107 o ni\u017cszej ocenie CVSS w publicznie dost\u0119pnym systemie przetwarzaj\u0105cym dane klient\u00f3w. Nie oznacza to, \u017ce pierwsz\u0105 mo\u017cna zignorowa\u0107 \u2014 oznacza konieczno\u015b\u0107 oceny kontekstu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.3. Przyk\u0142ad kompletnego ustalenia<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">PT-001 \u2014 Nieprawid\u0142owa kontrola dost\u0119pu do API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wysoki priorytet<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142ad hipotetyczny \u2014 nie jest wynikiem rzeczywistego testu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Opis problemu<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Endpoint API zwraca rekord na podstawie jego identyfikatora, ale nie sprawdza, czy zalogowany u\u017cytkownik ma prawo dost\u0119pu do tego rekordu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Warunki wyst\u0105pienia<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">U\u017cytkownik posiada prawid\u0142ow\u0105 sesj\u0119, zna identyfikator innego rekordu i mo\u017ce wywo\u0142a\u0107 endpoint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Potencjalny wp\u0142yw<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nieautoryzowany odczyt danych, naruszenie poufno\u015bci oraz mo\u017cliwe naruszenie separacji klient\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyczyna techniczna<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Warstwa serwerowa sprawdza uwierzytelnienie, ale pomija autoryzacj\u0119 na poziomie konkretnego obiektu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zalecenie naprawcze<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wdro\u017cy\u0107 kontrol\u0119 uprawnie\u0144 po stronie serwera dla ka\u017cdego \u017c\u0105dania odczytu i modyfikacji. Pobiera\u0107 obiekty w kontek\u015bcie u\u017cytkownika lub jego organizacji. Doda\u0107 testy automatyczne obejmuj\u0105ce pr\u00f3by dost\u0119pu mi\u0119dzy kontami.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kryterium retestu<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">U\u017cytkownik A mo\u017ce odczyta\u0107 w\u0142asny rekord, ale nie uzyskuje dost\u0119pu do syntetycznego rekordu u\u017cytkownika B. Test obejmuje wszystkie odpowiednie endpointy oraz operacje zmieniaj\u0105ce stan.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.4. Jak przygotowa\u0107 dowody techniczne?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Dobre ustalenie powinno by\u0107 odtwarzalne przez uprawniony zesp\u00f3\u0142 bez konieczno\u015bci ponownego przeprowadzania ca\u0142ego pentestu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dowody mog\u0105 obejmowa\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>fragment \u017c\u0105dania i odpowiedzi HTTP;<\/li>\n\n\n\n<li>zrzut ekranu z widocznym kontekstem;<\/li>\n\n\n\n<li>istotne wpisy log\u00f3w;<\/li>\n\n\n\n<li>identyfikator \u017c\u0105dania korelacyjnego;<\/li>\n\n\n\n<li>wersj\u0119 testowanego komponentu;<\/li>\n\n\n\n<li>wynik kontrolowanego testu;<\/li>\n\n\n\n<li>odno\u015bnik do odpowiedniego fragmentu kodu;<\/li>\n\n\n\n<li>czas wyst\u0105pienia zdarzenia i warunki testu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nale\u017cy ogranicza\u0107 ilo\u015b\u0107 danych w dowodach. Tokeny sesyjne, has\u0142a, klucze API, dane osobowe i inne sekrety trzeba usuwa\u0107 lub maskowa\u0107. Materia\u0142 dowodowy nie powinien sam stawa\u0107 si\u0119 nowym \u017ar\u00f3d\u0142em wycieku.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7.5. Priorytetyzacja poprawek<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Praktyczny plan naprawczy powinien uwzgl\u0119dnia\u0107 nie tylko poziom podatno\u015bci, lecz tak\u017ce mo\u017cliwo\u015b\u0107 ograniczenia ryzyka.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Priorytet<\/th><th>Przyk\u0142adowa sytuacja<\/th><th>Dzia\u0142anie<\/th><\/tr><tr><td>P0 \u2014 awaryjny<\/td><td>Aktywne naruszenie bezpiecze\u0144stwa lub potwierdzona krytyczna ekspozycja<\/td><td>Natychmiastowa reakcja, ograniczenie ekspozycji i procedura incydentowa<\/td><\/tr><tr><td>P1 \u2014 pilny<\/td><td>Powa\u017cna podatno\u015b\u0107 w publicznej us\u0142udze z realn\u0105 \u015bcie\u017ck\u0105 wykorzystania<\/td><td>Pilna poprawka lub skuteczne zabezpieczenie kompensacyjne<\/td><\/tr><tr><td>P2 \u2014 wysoki<\/td><td>Istotny b\u0142\u0105d wymagaj\u0105cy okre\u015blonych warunk\u00f3w<\/td><td>Zaplanowana naprawa w kr\u00f3tkim terminie<\/td><\/tr><tr><td>P3 \u2014 normalny<\/td><td>Problem o ograniczonym wp\u0142ywie lub wymagaj\u0105cy dodatkowych warunk\u00f3w<\/td><td>Naprawa w zwyk\u0142ym cyklu utrzymania<\/td><\/tr><tr><td>P4 \u2014 planowy<\/td><td>Usprawnienia utwardzaj\u0105ce i zmniejszaj\u0105ce powierzchni\u0119 ataku<\/td><td>W\u0142\u0105czenie do planu rozwoju zabezpiecze\u0144<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Powy\u017csza tabela jest przyk\u0142adowym modelem operacyjnym, a nie uniwersaln\u0105 norm\u0105 termin\u00f3w. Organizacja powinna okre\u015bli\u0107 w\u0142asne SLA dla napraw na podstawie profilu ryzyka, wymaga\u0144 prawnych i znaczenia system\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. Retesty i weryfikacja skuteczno\u015bci wdro\u017conych poprawek<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Zamkni\u0119cie podatno\u015bci nie powinno opiera\u0107 si\u0119 wy\u0142\u0105cznie na deklaracji programisty lub administratora. Konieczne jest sprawdzenie, czy problem zosta\u0142 usuni\u0119ty i czy poprawka nie wprowadzi\u0142a nowych b\u0142\u0119d\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8.1. Trzy poziomy weryfikacji<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Poziom 1 \u2014 test pierwotnego przypadku<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Odtworzenie dok\u0142adnie tego samego scenariusza, kt\u00f3ry doprowadzi\u0142 do wykrycia podatno\u015bci. Je\u017celi test dotyczy\u0142 nieautoryzowanego odczytu rekordu, nale\u017cy ponownie wykona\u0107 pr\u00f3b\u0119 w tych samych warunkach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Poziom 2 \u2014 test granicznych przypadk\u00f3w<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sprawdzenie wariant\u00f3w, kt\u00f3re mog\u0142y zosta\u0107 pomini\u0119te w pierwotnej poprawce. Dla kontroli dost\u0119pu mo\u017ce to obejmowa\u0107 r\u00f3\u017cne role, organizacje, typy rekord\u00f3w oraz metody HTTP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Poziom 3 \u2014 test regresyjny<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Weryfikacja, czy legalne operacje nadal dzia\u0142aj\u0105 prawid\u0142owo. Zabezpieczenie nie powinno polega\u0107 na zablokowaniu ca\u0142ej funkcji, je\u017celi wymaganiem jest bezpieczny dost\u0119p dla uprawnionych u\u017cytkownik\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8.2. Weryfikacja poprawki a przegl\u0105d kodu<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Test dynamiczny pokazuje zachowanie dzia\u0142aj\u0105cego systemu. Przegl\u0105d kodu pozwala natomiast sprawdzi\u0107, czy kontrola bezpiecze\u0144stwa zosta\u0142a wdro\u017cona we w\u0142a\u015bciwym miejscu i czy nie istniej\u0105 alternatywne \u015bcie\u017cki omijaj\u0105ce zabezpieczenie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Najlepszy rezultat uzyskuje si\u0119 przez po\u0142\u0105czenie obu metod:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>przegl\u0105d kodu potwierdza usuni\u0119cie przyczyny;<\/li>\n\n\n\n<li>test dynamiczny potwierdza oczekiwane zachowanie wdro\u017conej aplikacji;<\/li>\n\n\n\n<li>testy regresyjne potwierdzaj\u0105, \u017ce nie uszkodzono innych funkcji.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8.3. Przyk\u0142adowa checklista retestu<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">Lista kontrolna retestu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">0\/7Odtworzono pierwotny przypadek podatno\u015bci.Sprawdzono wszystkie obj\u0119te poprawk\u0105 endpointy.Zweryfikowano konta i role o r\u00f3\u017cnych uprawnieniach.Potwierdzono brak nieautoryzowanego odczytu lub modyfikacji.Sprawdzono logowanie zdarze\u0144 bezpiecze\u0144stwa.Przeprowadzono testy regresyjne funkcji biznesowych.Zaktualizowano status ustalenia i dokumentacj\u0119 dowodow\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wyczy\u015b\u0107 list\u0119<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">8.4. Retest to nie pe\u0142ny pentest<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Retest koncentruje si\u0119 na znanych wcze\u015bniej ustaleniach i ich naprawie. Nie zast\u0119puje pe\u0142nego badania bezpiecze\u0144stwa po du\u017cych zmianach architektury, migracji platformy, przebudowie mechanizm\u00f3w uwierzytelniania lub wdro\u017ceniu nowych integracji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zakres ponownego badania powinien odpowiada\u0107 skali zmian. Je\u017celi poprawka wymaga\u0142a modyfikacji wsp\u00f3lnego mechanizmu autoryzacji, warto rozszerzy\u0107 test na wszystkie komponenty korzystaj\u0105ce z tego mechanizmu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">9. Dodatkowe zagadnienia, kt\u00f3re warto uwzgl\u0119dni\u0107 w profesjonalnym pentestingu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aby artyku\u0142 na HackerStop.pl by\u0142 kompletny, warto rozszerzy\u0107 klasyczny zakres test\u00f3w o bezpiecze\u0144stwo \u015brodowisk chmurowych, kontener\u00f3w, proces\u00f3w CI\/CD oraz mechanizm\u00f3w wykrywania incydent\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">9.1. Segmentacja sieci i bezpiecze\u0144stwo infrastruktury<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Testy powinny sprawdza\u0107, czy podzia\u0142 na segmenty sieci rzeczywi\u015bcie ogranicza komunikacj\u0119 zgodnie z wymaganiami architektury.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Istotne obszary to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>regu\u0142y firewall i ACL;<\/li>\n\n\n\n<li>dost\u0119p administracyjny z Internetu;<\/li>\n\n\n\n<li>separacja \u015brodowisk produkcyjnych i testowych;<\/li>\n\n\n\n<li>dost\u0119p do baz danych wy\u0142\u0105cznie z wymaganych \u017ar\u00f3de\u0142;<\/li>\n\n\n\n<li>konfiguracja VPN i system\u00f3w zdalnego dost\u0119pu;<\/li>\n\n\n\n<li>konta serwisowe i uprawnienia mi\u0119dzy systemami;<\/li>\n\n\n\n<li>monitoring po\u0142\u0105cze\u0144 mi\u0119dzy segmentami.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Sama obecno\u015b\u0107 zapory nie dowodzi prawid\u0142owej segmentacji. Nale\u017cy sprawdzi\u0107, czy regu\u0142y dzia\u0142aj\u0105 zgodnie z za\u0142o\u017ceniami i czy nie istniej\u0105 niepotrzebne wyj\u0105tki.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">9.2. Kontenery i CI\/CD<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">W \u015brodowiskach opartych na Dockerze, Kubernetesie lub automatycznych pipeline&#8217;ach warto oceni\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>uprawnienia proces\u00f3w w kontenerach;<\/li>\n\n\n\n<li>u\u017cywanie kont u\u017cytkownik\u00f3w uprzywilejowanych;<\/li>\n\n\n\n<li>zarz\u0105dzanie sekretami;<\/li>\n\n\n\n<li>konfiguracj\u0119 obraz\u00f3w bazowych;<\/li>\n\n\n\n<li>kontrol\u0119 zale\u017cno\u015bci i pochodzenia artefakt\u00f3w;<\/li>\n\n\n\n<li>uprawnienia runner\u00f3w CI\/CD;<\/li>\n\n\n\n<li>separacj\u0119 \u015brodowisk i token\u00f3w wdro\u017ceniowych;<\/li>\n\n\n\n<li>mo\u017cliwo\u015b\u0107 nieautoryzowanej modyfikacji procesu budowania.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Szczeg\u00f3lnie niebezpieczna jest sytuacja, w kt\u00f3rej przej\u0119cie jednego konta automatyzacji umo\u017cliwia modyfikacj\u0119 kodu, budowanie artefakt\u00f3w i wdra\u017canie ich do produkcji bez niezale\u017cnej kontroli.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">9.3. Testowanie zabezpiecze\u0144 i monitoringu<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pentest mo\u017ce r\u00f3wnie\u017c sprawdzi\u0107, czy systemy ochronne reaguj\u0105 na kontrolowane zdarzenia testowe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Przyk\u0142adowo zesp\u00f3\u0142 mo\u017ce zweryfikowa\u0107, czy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nieudane pr\u00f3by uwierzytelnienia s\u0105 rejestrowane;<\/li>\n\n\n\n<li>nieautoryzowany dost\u0119p do zasobu generuje odpowiedni wpis;<\/li>\n\n\n\n<li>alerty trafiaj\u0105 do w\u0142a\u015bciwego systemu;<\/li>\n\n\n\n<li>logi zawieraj\u0105 kontekst potrzebny do analizy;<\/li>\n\n\n\n<li>mechanizmy detekcji nie generuj\u0105 nadmiernej liczby fa\u0142szywych alarm\u00f3w.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Nie nale\u017cy zak\u0142ada\u0107, \u017ce wykrycie podatno\u015bci automatycznie oznacza mo\u017cliwo\u015b\u0107 wykrycia jej wykorzystania. Bezpiecze\u0144stwo techniczne i zdolno\u015b\u0107 operacyjnego reagowania to powi\u0105zane, ale r\u00f3\u017cne obszary.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">9.4. Bezpieczne zarz\u0105dzanie materia\u0142ami testowymi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Podczas pentestu mog\u0105 powsta\u0107 pliki PCAP, zrzuty ekran\u00f3w, eksporty HTTP, logi i inne dowody. Materia\u0142y te powinny podlega\u0107 kontrolom:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ograniczony dost\u0119p do zespo\u0142u testowego;<\/li>\n\n\n\n<li>szyfrowanie podczas przechowywania i przesy\u0142ania;<\/li>\n\n\n\n<li>maskowanie danych wra\u017cliwych;<\/li>\n\n\n\n<li>kontrola integralno\u015bci materia\u0142\u00f3w;<\/li>\n\n\n\n<li>okre\u015blony termin retencji;<\/li>\n\n\n\n<li>bezpieczne usuni\u0119cie po zako\u0144czeniu projektu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Profesjonalny pentest powinien minimalizowa\u0107 zar\u00f3wno ryzyko badanego systemu, jak i ryzyko zwi\u0105zane z samym procesem testowania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. Podsumowanie \u2014 jak wdro\u017cy\u0107 testy penetracyjne w organizacji?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Testy penetracyjne s\u0105 skuteczne wtedy, gdy stanowi\u0105 cz\u0119\u015b\u0107 ci\u0105g\u0142ego procesu zarz\u0105dzania bezpiecze\u0144stwem, a nie jednorazow\u0105 czynno\u015b\u0107 wykonywan\u0105 przed audytem lub wdro\u017ceniem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Najwa\u017cniejsze zasady:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Zdefiniuj zakres i autoryzacj\u0119. Bez jasnych granic nie da si\u0119 bezpiecznie przeprowadzi\u0107 testu.<\/li>\n\n\n\n<li>Zidentyfikuj powierzchni\u0119 ataku. Nie ograniczaj si\u0119 do port\u00f3w \u2014 analizuj r\u00f3wnie\u017c API, konta, integracje i procesy automatyzacji.<\/li>\n\n\n\n<li>\u0141\u0105cz narz\u0119dzia z analiz\u0105 eksperck\u0105. Skaner generuje hipotezy, a tester weryfikuje ich znaczenie.<\/li>\n\n\n\n<li>Badaj logik\u0119 biznesow\u0105. Wiele powa\u017cnych problem\u00f3w wynika z b\u0142\u0119dnej kontroli dost\u0119pu, a nie z nieaktualnego oprogramowania.<\/li>\n\n\n\n<li>Dokumentuj dowody. Ka\u017cde ustalenie powinno by\u0107 mo\u017cliwe do odtworzenia i zweryfikowania.<\/li>\n\n\n\n<li>Priorytetyzuj naprawy na podstawie ryzyka. Uwzgl\u0119dniaj ekspozycj\u0119, warunki wykorzystania i znaczenie chronionych zasob\u00f3w.<\/li>\n\n\n\n<li>Przeprowadzaj retesty. Potwierd\u017a usuni\u0119cie przyczyny i brak regresji.<\/li>\n\n\n\n<li>Wykorzystuj wyniki do doskonalenia proces\u00f3w. Uzupe\u0142niaj testy o bezpieczne konfiguracje, testy automatyczne, przegl\u0105dy kodu i monitoring.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Warto pami\u0119ta\u0107, \u017ce \u017caden pojedynczy pentest nie gwarantuje pe\u0142nego bezpiecze\u0144stwa systemu. Jego warto\u015b\u0107 polega na ograniczeniu niepewno\u015bci, ujawnieniu rzeczywistych s\u0142abo\u015bci i dostarczeniu organizacji konkretnych, sprawdzalnych dzia\u0142a\u0144 naprawczych.<\/p>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-54a3cfb8 wp-block-group-is-layout-constrained\" style=\"padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--30)\">\n<div class=\"wp-block-group alignwide is-vertical is-content-justification-center is-layout-flex wp-container-core-group-is-layout-05270139 wp-block-group-is-layout-flex\"><div class=\"is-default-size wp-block-site-logo\"><a href=\"https:\/\/hackerstop.pl\/\" class=\"custom-logo-link\" rel=\"home\"><img loading=\"lazy\" decoding=\"async\" width=\"2000\" height=\"2000\" src=\"https:\/\/hackerstop.pl\/wp-content\/uploads\/2026\/04\/Hackerstop.png\" class=\"custom-logo\" alt=\"Hackerstop\" srcset=\"https:\/\/hackerstop.pl\/wp-content\/uploads\/2026\/04\/Hackerstop.png 2000w, https:\/\/hackerstop.pl\/wp-content\/uploads\/2026\/04\/Hackerstop-300x300.png 300w, https:\/\/hackerstop.pl\/wp-content\/uploads\/2026\/04\/Hackerstop-1024x1024.png 1024w, https:\/\/hackerstop.pl\/wp-content\/uploads\/2026\/04\/Hackerstop-150x150.png 150w, https:\/\/hackerstop.pl\/wp-content\/uploads\/2026\/04\/Hackerstop-768x768.png 768w, https:\/\/hackerstop.pl\/wp-content\/uploads\/2026\/04\/Hackerstop-1536x1536.png 1536w\" sizes=\"auto, (max-width: 2000px) 100vw, 2000px\" \/><\/a><\/div>\n\n<h1 class=\"has-link-color wp-elements-1 wp-block-site-title has-text-color has-contrast-color has-large-font-size\"><a href=\"https:\/\/hackerstop.pl\" target=\"_self\" rel=\"home\">Hackerstop<\/a><\/h1>\n\n<nav class=\"is-responsive items-justified-center wp-block-navigation is-content-justification-center is-layout-flex wp-container-core-navigation-is-layout-09379bf7 wp-block-navigation-is-layout-flex\" aria-label=\"Menu: Stopka 2\" \n\t\t data-wp-interactive=\"core\/navigation\" data-wp-context='{\"overlayOpenedBy\":{\"click\":false,\"hover\":false,\"focus\":false},\"type\":\"overlay\",\"roleAttribute\":\"\",\"ariaLabel\":\"Menu\"}'><button aria-haspopup=\"dialog\" aria-label=\"Rozwi\u0144 menu\" class=\"wp-block-navigation__responsive-container-open\" \n\t\t\t\tdata-wp-on--click=\"actions.openMenuOnClick\"\n\t\t\t\tdata-wp-on--keydown=\"actions.handleMenuKeydown\"\n\t\t\t><svg width=\"24\" height=\"24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 7.5h16v1.5H4z\"><\/path><path d=\"M4 15h16v1.5H4z\"><\/path><\/svg><\/button>\n\t\t\t\t<div class=\"wp-block-navigation__responsive-container\"  id=\"modal-1\" \n\t\t\t\tdata-wp-class--has-modal-open=\"state.isMenuOpen\"\n\t\t\t\tdata-wp-class--is-menu-open=\"state.isMenuOpen\"\n\t\t\t\tdata-wp-watch=\"callbacks.initMenu\"\n\t\t\t\tdata-wp-on--keydown=\"actions.handleMenuKeydown\"\n\t\t\t\tdata-wp-on--focusout=\"actions.handleMenuFocusout\"\n\t\t\t\ttabindex=\"-1\"\n\t\t\t>\n\t\t\t\t\t<div class=\"wp-block-navigation__responsive-close\" tabindex=\"-1\">\n\t\t\t\t\t\t<div class=\"wp-block-navigation__responsive-dialog\" \n\t\t\t\tdata-wp-bind--aria-modal=\"state.ariaModal\"\n\t\t\t\tdata-wp-bind--aria-label=\"state.ariaLabel\"\n\t\t\t\tdata-wp-bind--role=\"state.roleAttribute\"\n\t\t\t>\n\t\t\t\t\t\t\t<button aria-label=\"Zamknij menu\" class=\"wp-block-navigation__responsive-container-close\" \n\t\t\t\tdata-wp-on--click=\"actions.closeMenuOnClick\"\n\t\t\t><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z\"><\/path><\/svg><\/button>\n\t\t\t\t\t\t\t<div class=\"wp-block-navigation__responsive-container-content\" \n\t\t\t\tdata-wp-watch=\"callbacks.focusFirstElement\"\n\t\t\t id=\"modal-1-content\">\n\t\t\t\t\t\t\t\t<ul class=\"wp-block-navigation__container is-responsive items-justified-center wp-block-navigation\"><li class=\"wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/hackerstop.pl\/?page_id=225\"><span class=\"wp-block-navigation-item__label\">About Us<\/span><\/a><\/li><li class=\"wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"#\"><span class=\"wp-block-navigation-item__label\">Services<\/span><\/a><\/li><li class=\"wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/hackerstop.pl\/?page_id=243\"><span class=\"wp-block-navigation-item__label\">FAQ<\/span><\/a><\/li><li class=\"wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/hackerstop.pl\/?page_id=23\"><span class=\"wp-block-navigation-item__label\">Blog<\/span><\/a><\/li><\/ul>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div><\/nav><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Cyberbezpiecze\u0144stwo \u2022 Ethical Hacking \u2022 Pentesting \u2022 Bezpiecze\u0144stwo aplikacji i infrastruktury IT Testy penetracyjne (penetration testing, pentesting) s\u0105 kontrolowanym procesem weryfikacji bezpiecze\u0144stwa system\u00f3w informatycznych, kt\u00f3rego celem jest ustalenie, czy rzeczywiste s\u0142abo\u015bci konfiguracji, oprogramowania, architektury lub procedur operacyjnych mog\u0105 doprowadzi\u0107 do naruszenia poufno\u015bci, integralno\u015bci albo dost\u0119pno\u015bci danych. Profesjonalny pentest nie polega wy\u0142\u0105cznie na uruchomieniu skanera podatno\u015bci. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":269,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-268","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/hackerstop.pl\/index.php?rest_route=\/wp\/v2\/pages\/268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackerstop.pl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hackerstop.pl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hackerstop.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hackerstop.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=268"}],"version-history":[{"count":1,"href":"https:\/\/hackerstop.pl\/index.php?rest_route=\/wp\/v2\/pages\/268\/revisions"}],"predecessor-version":[{"id":270,"href":"https:\/\/hackerstop.pl\/index.php?rest_route=\/wp\/v2\/pages\/268\/revisions\/270"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackerstop.pl\/index.php?rest_route=\/wp\/v2\/media\/269"}],"wp:attachment":[{"href":"https:\/\/hackerstop.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}