Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

🔍 Wykorzystanie WPScan: wyszukiwanie luk w zabezpieczeniach WordPress 2026

🔍 Wykorzystanie WPScan: wyszukiwanie luk w zabezpieczeniach WordPress 2026

Zaktualizowali Państwo wtyczki, skonfigurowali HTTPS i włączyli zaporę sieciową. Strona wygląda na zabezpieczoną. Ale skąd mają Państwo pewność, że w jednej z zainstalowanych wtyczek nie ma podatności, która jest właśnie teraz aktywnie wykorzystywana?

Ręczne sprawdzanie w bazie podatności zajmuje wiele godzin. WPScan robi to w pół minuty: konsolowy skaner bezpieczeństwa WordPress o otwartym kodzie źródłowym, który według danych własnej bazy śledzi ponad 73 000 podatności rdzenia, wtyczek i motywów. W dalszej części: instalacja, token API, skanowanie podstawowe i zaawansowane oraz łamanie haseł.

💡 Szybki przegląd:

  • Proszę zainstalować WPScan przez Ruby gem, Dockera lub Homebrew i zaktualizować bazę metadanych poleceniem wpscan --update

  • Proszę zarejestrować bezpłatny token API na wpscan.com: 25 zapytań dziennie, bez tokena skaner nie pokazuje danych o podatnościach

  • Proszę uruchomić skanowanie podstawowe: wpscan --url https://ваш-сайт.com --api-token ВАШ_ТОКЕН

  • Proszę sprawdzić podatne wtyczki i motywy flagami -e vp oraz -e vt, wyliczyć użytkowników przez -e u

  • Do łamania haseł proszę przygotować plik słownika i przekazać go flagą --passwords

Czym jest WPScan

WPScan, bezpłatny do użytku niekomercyjnego skaner bezpieczeństwa WordPress, napisany w Ruby. Pierwsze wydanie ukazało się w czerwcu 2011 roku i od tego czasu narzędzie stało się de facto standardem w testach penetracyjnych stron WordPress.

Skaner porównuje zainstalowaną wersję WordPressa, aktywne wtyczki i motywy z WordPress Vulnerability Database na wpscan.com, którą utrzymuje zespół specjalistów ds. bezpieczeństwa. Według danych bazy udokumentowano w niej ponad 73 000 podatności rdzenia, wtyczek i motywów. Każdy wpis jest ręcznie weryfikowany przez dedykowany zespół ekspertów WordPress. Od 2023 roku WPScan pełni rolę CVE Numbering Authority i bezpośrednio nadaje numery CVE podatnościom w ekosystemie WordPress.

Oprócz podatności WPScan potrafi wyliczać loginy użytkowników przez REST API i kanały autorów, łamać hasła słownikowe, znajdować otwarte kopie zapasowe wp-config.php, zrzuty bazy danych i publicznie dostępne logi błędów.

Ważny niuans licencyjny: bezpłatne korzystanie ze skanera CLI jest dozwolone wyłącznie w celach niekomercyjnych. Agencje skanujące strony klientów potrzebują płatnej subskrypcji. Warunki opisano na oficjalnej stronie WPScan.

Instalacja i aktualizacja

WPScan jest dostępny na trzy sposoby. Proszę wybrać ten, który pasuje do Państwa workflow.

Ruby gem, uniwersalna opcja dla Linuxa, macOS i Windows z zainstalowanym Ruby:

1gem install wpscan

Docker, izolowane środowisko bez zależności:

1docker pull wpscanteam/wpscan

Przykład uruchomienia przez Dockera:

1docker run -it --rm wpscanteam/wpscan --url https://example.com -e u

Homebrew, dla macOS:

1brew install wpscanteam/tap/wpscan

Po instalacji w pierwszej kolejności proszę zaktualizować lokalną bazę metadanych. Zawiera ona informacje o najnowszych wersjach wtyczek i motywów, bez niej skaner nie rozpozna, że zainstalowana wersja jest nieaktualna. Dane o podatnościach są pobierane oddzielnie przez API w czasie rzeczywistym.

1wpscan --update

Aktualizacja trwa kilka sekund. W wynikach pojawi się wersja WPScan i potwierdzenie aktualności bazy. Proszę powtarzać wpscan --update przed każdym audytem: twórcy publikują aktualizacje metadanych kilka razy w tygodniu.

API-token: klucz do danych o podatnościach

Najczęstszy błąd początkujących: uruchomienie wpscan --url сайт.com bez tokena i zdziwienie, dlaczego skaner milczy na temat podatności. Bez tokena WPScan działa w trybie „tylko metadane". Poinformuje, że wtyczka jest nieaktualna, ale nie powie, jakie CVE są z nią powiązane.

Proszę zarejestrować się na wpscan.com, to bezpłatne i zajmuje minutę. Darmowy plan daje 25 zapytań API dziennie. Jeden skan zużywa 1 zapytanie na wersję WordPressa, 1 zapytanie na każdą zainstalowaną wtyczkę i 1 zapytanie na każdy motyw. Na typowej witrynie WordPress zainstalowanych jest kilkanaście wtyczek, więc bezpłatny limit wystarczy na jedno pełne skanowanie na dobę.

Token przekazuje się flagą --api-token przy każdym uruchomieniu:

1wpscan --url https://example.com --api-token ВАШ_ТОКЕН

Aby nie wpisywać tokena w każdym poleceniu, proszę zapisać go w pliku konfiguracyjnym ~/.wpscan/scan.yml:

1api_token: ВАШ_ТОКЕН

Po tym WPScan automatycznie go przechwyci.

Podstawowe skanowanie witryny

Minimalne polecenie do audytu:

1wpscan --url https://example.com --api-token ВАШ_ТОКЕН

Skaner określi wersję WordPressa, aktywny motyw, wykryje jawne wyświetlanie numerów wersji i sprawdzi podstawowe problemy konfiguracyjne: dostępność wp-cron i readme.html, katalog uploadów, możliwość rejestracji użytkowników.

Wyniki są uporządkowane kolorowymi znacznikami: zielony dla komunikatów informacyjnych, żółty dla ostrzeżeń, czerwony dla znalezionych podatności. Każdej podatności towarzyszy odnośnik do karty w bazie WPScan z opisem wektora ataku, podatnych wersji i zaleceń dotyczących naprawy.

Podstawowe skanowanie trwa zwykle do minuty. Dokładny czas zależy od rozmiaru witryny i szybkości hostingu.

Wyszukiwanie podatnych wtyczek

Wtyczki to główny wektor ataków na WordPressa. Według statystyk WPScan ponad 90% znanych podatności dotyczy właśnie wtyczek. Polecenie do sprawdzenia:

1wpscan --url https://example.com -e vp --api-token ВАШ_ТОКЕН

Flaga -e vp (enumerate vulnerable plugins) wylicza tylko wtyczki ze znanymi podatnościami. To najszybszy i najbardziej praktyczny tryb: porównuje zainstalowane wtyczki z bazą i raportuje tylko te, dla których istnieją udokumentowane problemy.

Domyślnie WPScan używa pasywnego trybu wykrywania, analizuje kod HTML stron bez zbędnych zapytań. Aby uzyskać maksymalną skuteczność kosztem dodatkowego obciążenia serwera, proszę przełączyć się na tryb mieszany:

1wpscan --url https://example.com -e vp --plugins-detection mixed --api-token ВАШ_ТОКЕН

Tryb mixed najpierw stosuje analizę pasywną, a następnie agresywnie sprawdza znane ścieżki wtyczek w celu wykrycia ukrytych i nieaktywnych instalacji.

Jeśli skaner znalazł podatną wtyczkę, proszę ją zaktualizować do najnowszej wersji. Deweloper prawie na pewno wydał już łatkę. Jeśli aktualizacji nie ma, a wtyczka jest porzucona, proszę ją usunąć i znaleźć zamiennik. Nie można pozostawiać wtyczki ze znaną podatnością na działającej stronie.

Wyszukiwanie podatnych motywów

Motywy są sprawdzane analogicznie do wtyczek:

1wpscan --url https://example.com -e vt --api-token ВАШ_ТОКЕН

Flaga -e vt (vulnerable themes) sprawdza aktywny motyw oraz wszystkie zainstalowane motywy pod kątem znanych podatności. Motywy są atakowane rzadziej niż wtyczki, ale podatności w nich się zdarzają, szczególnie w motywach z wbudowanymi kreatorami stron i sliderami.

Domyślny tryb wykrywania motywów jest agresywny, ponieważ analiza pasywna często pomija nieaktywne motywy. Jeśli serwer jest słaby, a obciążenie krytyczne, proszę ograniczyć się do trybu pasywnego:

1wpscan --url https://example.com -e vt --themes-detection passive --api-token ВАШ_ТОКЕН

Po wykryciu podatnego motywu proszę postępować według tej samej zasady: zaktualizować lub usunąć. Motywy potomne dziedziczą podatności motywów nadrzędnych, proszę sprawdzać oba.

Lista użytkowników

Napastnik, który zna loginy użytkowników WordPressa, musi jedynie odgadnąć hasło. WPScan pokazuje, które loginy są widoczne z zewnątrz:

1wpscan --url https://example.com -e u

Skaner iteruje po identyfikatorach użytkowników i wydobywa loginy z REST API, kanałów autorów (/author/имя/) oraz innych publicznych punktów dostępu. Wynik wygląda następująco:

1[i] User(s) Identified:
2[+] admin
3[+] editor
4[+] serg

W idealnej sytuacji nie powinni Państwo widzieć żadnego loginu. Jeśli WPScan znalazł użytkowników, proszę podjąć następujące kroki:

  • Proszę ustawić pseudonim wyświetlany, różny od loginu, w ustawieniach profilu.
  • Proszę wyłączyć REST API dla nieuwierzytelnionych gości za pomocą wtyczki lub pliku .htaccess.
  • Zapora sieciowa na poziomie DNS, na przykład Sucuri lub Cloudflare, zablokuje skaner jeszcze przed dotarciem do serwisu: zobaczą Państwo błąd timeoutu zamiast listy użytkowników.
Skanowanie WPScan zatrzymane przez zaporę sieciową Sucuri CloudProxy WAF

Aktualne wersje WordPressa ograniczają możliwość uzyskania listy użytkowników przez REST API, ale motywy i wtyczki mogą otwierać drogi obejścia. Poleganie wyłącznie na rdzeniu systemu nie jest wystarczające.

Wyszukiwanie haseł

WPScan obsługuje słownikowe wyszukiwanie haseł. Skaner próbuje zalogować się na każdego znalezionego użytkownika z każdym hasłem z pliku listy. Operacja jest zasobożerna, ale wynik jest tego wart: dowiedzą się Państwo, czy któryś z administratorów nie używa qwerty123.

Proszę przygotować plik tekstowy z hasłami, po jednym w wierszu, i wykonać:

1wpscan --url https://example.com -e u --passwords /путь/к/passwords.txt

Gotowe słowniki znajdują się w Kali Linux (/usr/share/wordlists/) oraz w otwartych źródłach, takich jak repozytorium SecLists na GitHub. Do podstawowej kontroli wystarczy plik z 500-1000 najpopularniejszych haseł.

Parametr --threads N steruje liczbą jednoczesnych prób. Wartość domyślna to 5. Zwiększenie do 20-30 przyspieszy przeszukiwanie, ale stworzy zauważalne obciążenie serwera i może zadziałać ochrona hostingu.

Przed uruchomieniem brute-force proszę wykonać kopię zapasową strony i uprzedzić dostawcę hostingu: niektórzy blokują IP za liczne nieudane próby logowania.

Dodatkowe możliwości

WPScan potrafi więcej niż podstawowy audyt wtyczek i użytkowników. Oto kilka przydatnych scenariuszy.

Wyszukiwanie wszystkich wtyczek, nie tylko podatnych:

1wpscan --url https://example.com -e ap --api-token ВАШ_ТОКЕН

Flaga -e ap (all plugins) przeszukuje wszystkie wtyczki z bazy WPScan. Operacja zajmuje zauważalny czas. Proszę używać do pełnego audytu, a nie do regularnych kontroli.

Wykrywanie kopii zapasowych i zrzutów:

1wpscan --url https://example.com -e cb,dbe

Flagi cb (config backups) i dbe (database exports) szukają publicznie dostępnych kopii zapasowych wp-config.php i zrzutów SQL, przypadkowo pozostawionych przez wtyczki do tworzenia kopii zapasowych. Taki plik w otwartym dostępie jest krytycznie niebezpieczny: atakujący uzyskuje dane uwierzytelniające do bazy danych.

Ciche skanowanie:

1wpscan --url https://example.com --stealthy --api-token ВАШ_ТОКЕН

Flaga --stealthy dodaje losowe opóźnienia między żądaniami, maskując aktywność skanera jako zachowanie zwykłego odwiedzającego. Przydatne, gdy serwer agresywnie banuje podejrzaną aktywność.

Wyliczanie plików multimedialnych:

1wpscan --url https://example.com -e m1-100

Sprawdza ID plików multimedialnych w zadanym zakresie. Pomaga wykryć poufne dokumenty dostępne przez bezpośredni link oraz kopie zapasowe przesłane poza bibliotekę mediów.

Pełny samouczek wideo z WPScan, od instalacji do zaawansowanych scenariuszy:

⁉️🤔 Częste pytania

Czy WPScan jest potrzebny, jeśli już jest zainstalowany Jetpack Protect lub Wordfence?

Tak, jest potrzebny. Wtyczki bezpieczeństwa działają od wewnątrz WordPressa i blokują ataki w czasie rzeczywistym. WPScan patrzy na stronę z zewnątrz, tak samo jak atakujący. Znajduje problemy, których wtyczka nie widzi: otwarte kopie zapasowe, wyliczanie użytkowników przez niestandardowe wektory, podatności w nieaktywnych, ale nieusuniętych wtyczkach. Oba podejścia razem dają rzeczywistą obronę w głąb.

Czy WPScan jest bezpieczny dla mojej strony? Czy nie położy serwera?

Skaner wysyła standardowe żądania HTTP, takie same jak zwykły odwiedzający. W trybie pasywnym jedynie analizuje HTML bez dodatkowego obciążenia. Tryb agresywny z pełnym przeszukiwaniem wtyczek (-e ap) generuje setki żądań i może spowolnić słaby hosting. Do regularnych kontroli proszę używać -e vp,vt,u, to kilkadziesiąt żądań, bezpiecznych dla każdego serwera.

Czy można zautomatyzować skanowanie?

Tak. Dla programistów odpowiednie będzie zadanie cron, które uruchamia kontener Dockera raz w tygodniu i wysyła raport na e-mail. Dla wszystkich pozostałych, serwis WPScan.com automatycznie skanuje stronę zgodnie z harmonogramem i wysyła powiadomienia o nowych podatnościach. Optymalna częstotliwość: pełne skanowanie raz w tygodniu, kontrole komponentów o wysokim priorytecie codziennie. Do ręcznych audytów wystarczy bezpłatny CLI, do stałego monitoringu warto rozważyć zautomatyzowane rozwiązanie.

Co robić, jeśli WPScan znalazł podatność, a aktualizacji nie ma?

Wtyczka jest porzucona przez programistę. Algorytm: (1) proszę sprawdzić, czy podatność jest aktywnie wykorzystywana, karta w bazie WPScan zawiera tę informację; (2) jeśli nie ma ataków i wtyczka jest krytyczna dla biznesu, proszę tymczasowo ograniczyć do niej dostęp przez .htaccess i zaplanować wymianę; (3) jeśli ataki są odnotowane, proszę natychmiast usunąć wtyczkę. Kompromis między funkcjonalnością a bezpieczeństwem jest tu niemożliwy.

Czym WPScan różni się od innych skanerów WordPressa?

WPScan to jedyny skaner z dedykowaną badawczą bazą podatności, istniejący ponad dziesięć lat. Alternatywy takie jak WPSeku przeszukują wtyczki według statycznej listy bez szczegółowych kart CVE. WPScan jest wspierany przez Automattic poprzez partnerstwo z Jetpack, co gwarantuje długoterminowy rozwój projektu.

Co wybrać: CLI, Docker czy SaaS

Wybór sposobu zależy od Państwa zadań. Szybkie zestawienie:

Wariant

Dla kogo

Częstotliwość

Plus

Docker

Jedna strona, audyt jednorazowy

Raz na miesiąc

Brak zależności

Ruby gem + cron

Kilka stron

Co tydzień

Elastyczne raporty

WPScan SaaS

Agencja, 10+ stron

Stale

Powiadomienia, dashboard

  • Jeśli mają Państwo jedną stronę i potrzebna jest jednorazowa kontrola, proszę wziąć Dockera: jedno polecenie, zero zależności.
  • Jeśli stron jest więcej niż dziesięć i potrzebne są regularne raporty, Ruby gem w zadaniu cron poradzi sobie.
  • Jeśli agencja ze setką stron klientów, subskrypcja WPScan SaaS zdejmie ból głowy z monitoringiem.

Proszę nie zapomnieć o tokenie API, bez niego widzą Państwo tylko połowę obrazu. Proszę zacząć od trzech poleceń z bloku „Szybki przegląd" powyżej. Pół minuty i wiedzą Państwo dokładnie, czy strona ma otwarte podatności. A które narzędzie bezpieczeństwa ratowało Państwa w praktyce, proszę napisać w komentarzach.