Testy penetracyjne dla stron WordPress

Opublikowany: 2020-03-20

WordPress obsługuje wiele stron internetowych w Internecie. Nic więc dziwnego, że wytrawni napastnicy i „script-kiddies” lubią atakować witryny WordPress. Niezależnie od tego, czy jesteś webmasterem, czy specjalistą ds. bezpieczeństwa, gdy masz za zadanie ocenić stan bezpieczeństwa witryny WordPress, warto zdawać sobie sprawę z typowych pułapek bezpieczeństwa, z których zwykle korzystają atakujący. Ważne jest również, aby korzystać z odpowiednich narzędzi do testowania penetracji.

W tym artykule omówię szereg typowych luk w zabezpieczeniach, nadużyć i przydatnych informacji, które atakujący może wykorzystać w wielu instalacjach WordPress. Wskażę również kilka narzędzi, których możesz użyć, aby zautomatyzować test penetracyjny WordPressa.

Uwaga — przeprowadzaj testy penetracyjne zabezpieczeń tylko na systemach, które należą do Ciebie lub do których masz zezwolenie. Zrozum ograniczenia przyznanego dostępu i pozostań w tych granicach.

Typowe problemy i błędy związane z bezpieczeństwem WordPress

Nieaktualne wersje kodu WordPress

Uruchamianie starych wersji rdzenia WordPressa zawierających luki w zabezpieczeniach jest prawdopodobnie jedną z najczęstszych luk bezpieczeństwa związanych z WordPressem. Podczas gdy nowsze wersje WordPressa ułatwiają uaktualnienie do najnowszej wersji, nierzadko zdarza się, że starsze witryny WordPress pozostają w tyle.

Uruchamianie starej wersji WordPressa w Internecie to tykająca bomba zegarowa. Wiele starych wersji WordPressa zawiera luki w zabezpieczeniach. Wiele z tych problemów związanych z bezpieczeństwem jest powszechnie wykorzystywanych masowo przez atakujących.

Podczas audytu witryny WordPress pod kątem luk w zabezpieczeniach jest to zazwyczaj jedna z pierwszych rzeczy, które chcesz sprawdzić. Na szczęście dla atakujących WordPress domyślnie dodaje metatag HTML zawierający używaną wersję WordPressa.

<meta name=”generator” content=”WordPress 4.8.11″ />

Wiedza, że ​​instalacja WordPress działa na starej wersji, może dać atakującemu możliwość wykorzystania znanej luki w zabezpieczeniach. Skorzystaj z bazy danych luk w zabezpieczeniach CVE, aby wyszukać znane problemy z zabezpieczeniami w rdzeniu WordPress.

Nieaktualne wersje motywów i wtyczek WordPress

Rdzeń WordPressa jest bardzo bezpieczny. Miliony użytkowników i złośliwych hakerów testują i dokładnie sprawdzają kod. Oznacza to, że przez większość czasu problemy z bezpieczeństwem są wykrywane i naprawiane, zanim zostaną wykorzystane przez atakujących. Nie jest jednak odporny na luki w zabezpieczeniach. Niestety nie dotyczy to tysięcy wtyczek i motywów WordPress.

Każdy może przesłać motyw lub wtyczkę i udostępnić je każdemu administratorowi WordPressa do pobrania i używania. Oczywiście nie oznacza to, że każda wtyczka WordPressa jest słabo zakodowana i pełna luk — daleko od tego. Jednak znane luki w zabezpieczeniach narażają WordPressa na ogromną powierzchnię ataku, o czym powinieneś wiedzieć, przeprowadzając test penetracyjny WordPressa.

Najszybszym i prawdopodobnie najbardziej wszechstronnym narzędziem do odcisków palców podatnych na wtyczki i motywy WordPress jest użycie WPScan. WPScan to skaner bezpieczeństwa WordPress z czarną skrzynką typu open source, często używany do skanowania witryn WordPress pod kątem znanych luk w rdzeniu, wtyczkach i motywach.

Korzystając z WPScan podczas testu pentest, zarejestruj się i skonfiguruj go do korzystania z klucza API WPScan Vulnerability Database . WPScan Vulnerability Database to baza danych utrzymywana przez autorów WPScan z najnowszymi znanymi lukami i ich wersjami.

Wtyczki do odcisków palców z WPScan

Aby uzyskać więcej informacji o WPScan i sposobach uruchamiania różnych rodzajów skanowania, zapoznaj się z wprowadzeniem do WPScan.

Stare wersje PHP i serwerów WWW

WordPress to aplikacja internetowa PHP, dlatego wszystkie najlepsze praktyki bezpieczeństwa PHP odnoszą się również do WordPressa. Podczas testu penetracyjnego WordPress jest to jedna z pierwszych rzeczy, na które należy zwrócić uwagę. Instalacje WordPress ze starymi wersjami PHP lub oprogramowania serwera WWW (np. Nginx, Apache HTTP Server, IIS…) mogą narazić witrynę na różnego rodzaju ataki.

Bardzo łatwo jest dowiedzieć się, jakiego serwera WWW i wersji PHP używa witryna WordPress. W wielu przypadkach atakujący musi jedynie zwrócić szczególną uwagę na nagłówki odpowiedzi HTTP zwracane ze strony internetowej. Możesz wysłać prośbę samodzielnie za pomocą curl:

$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i „Serwer\|X-Powered-By”

W odpowiedzi poszukaj nagłówków HTTP Server i X-Powered-By :

Serwer: Apache/2.4.29 (Ubuntu)
X-Powered-przez: PHP/5.5.9

W zależności od wersji i konfiguracji strony atakujący może wykorzystać znane podatności (np. https://www.cvedetails.com/vendor/74/PHP.html) w celu uzyskania dodatkowych informacji o celu. Takie informacje mogą pomóc w eskalacji ataku, a nawet wykonywaniu poleceń bezpośrednio na serwerze WWW.

Wyliczanie nazw użytkowników WordPress

O ile administrator systemu nie podjął kroków, aby temu zapobiec, WordPress jest domyślnie podatny na ataki z wyliczaniem użytkowników. Ataki wyliczania użytkowników WordPress, szukaj subtelnych różnic w sposobie, w jaki WordPress odpowiada na określone żądania. W zależności od odpowiedzi atakujący może określić, czy użytkownik istnieje, czy nie, co pozwala atakującemu na potencjalne wykorzystanie tych informacji w ramach większego ataku.

Poniżej znajduje się zrzut ekranu WPScan wykonującego atak polegający na wyliczaniu nazw użytkowników WordPress.

Wyliczanie użytkowników WPScan i łamanie haseł

Błędne konfiguracje serwera WWW

Lista katalogów i inne błędne konfiguracje serwera WWW

Oprócz przestarzałego oprogramowania, zawsze należy ocenić wszelkie potencjalne błędy konfiguracji serwera WWW. Źle skonfigurowany serwer sieciowy może narazić witrynę WordPress na eksploatację. Może się to zdarzyć, nawet jeśli na serwerze WWW działa najnowsze oprogramowanie. Oto kilka typowych błędów konfiguracji serwera WWW:

Włączona lista katalogów

Lista katalogów jest bardzo powszechną błędną konfiguracją. Serwery WWW Apache mają to domyślnie włączone, a to nie pomaga. Listowanie katalogów po prostu wyświetla pliki i katalogi na serwerze WWW w interfejsie graficznym, gdy nie ma pliku indeksu.

Lista katalogów włączona na serwerze WWW Apache

Chociaż samo to nie jest szczególnie szkodliwe, zapewnia atakującemu możliwość przeglądania zawartości katalogu serwera WWW. Może to pozwolić mu zobaczyć wszystkie pliki w Twojej witrynie, z których większość nie powinna być publicznie dostępna, ale są, takie jak kopie zapasowe, hasła i pliki konfiguracyjne.

Kopia zapasowa

Pliki kopii zapasowej to kolejna zbyt powszechna błędna konfiguracja serwera WWW . Zwykle ma to miejsce, gdy administratorzy systemu ręcznie edytują pliki w systemach produkcyjnych.

Typowym przykładem plików kopii zapasowych ujawniających potencjalnie poufne informacje mogą być kopie zapasowe plików PHP. Czasami pliki PHP zawierają ważne dane konfiguracyjne — takie jak plik wp-config.php WordPressa.

Weźmy następujący scenariusz — administrator WordPressa musi wprowadzić zmiany w wp-config.php. Zamiast postępować zgodnie z najlepszymi praktykami i przechowywać kopię pliku w innym miejscu niż serwer WWW, tworzą kopię aktywnego wp-config.php, nazywając kopię zapasową wp-config.php.bak. Załóżmy teraz, że administrator systemu zapomniał usunąć ten plik, co zdarza się częściej niż myślimy.

Atakujący może teraz odczytać plik, wysyłając żądanie http://www.example.com/wp-config.php.bak . Atakujący może odczytać plik, ponieważ jego rozszerzenie nie jest już .php. Tak więc silnik PHP ignoruje go, a serwer WWW podaje go jako plik tekstowy. Teraz atakujący zna poświadczenia bazy danych WordPress, tajne tokeny i wszelkie inne poufne informacje konfiguracyjne, które zapisałeś w tym pliku.

Pliki tymczasowe

Podobnie jak w przypadku plików kopii zapasowych, pliki tymczasowe w złej lokalizacji mogą ujawnić potencjalnie poufne dane. Ponownie biorąc przykład wp-config.php. Jeśli administrator systemu musiałby edytować ten plik za pomocą edytora tekstu, a z jakiegoś powodu program nie wyszedł czysto, istnieje duża szansa, że ​​edytor pozostawiłby pliki tymczasowe. Na przykład popularny edytor wiersza poleceń Vim przechowuje pliki kopii zapasowej z rozszerzeniem *.ext~ razem z plikiem *.ext.swp. Pliki swp są używane jako plik blokady. Zawierają również całą historię cofania/ponawiania i inne informacje wewnętrzne, których potrzebuje Vim.

Dlatego w przypadku awarii Vim pozostawia plik wp-config.php.ext~, który może być dostępny w postaci zwykłego tekstu, tak jak pliki kopii zapasowych, ponieważ nie kończy się rozszerzeniem *.php. Pliki tymczasowe tego rodzaju nie są wyłączne dla Vima — Emacs (kolejny popularny edytor tekstu wiersza poleceń) również zapisuje podobne pliki tymczasowe, podobnie jak niezliczone inne narzędzia.

Uwaga — użyj wtyczki do monitorowania integralności plików w swojej witrynie, aby otrzymywać powiadomienia o wszystkich zmianach plików, w tym o plikach tymczasowych i zapasowych. Jeśli nie znasz tej technologii, przeczytaj nasze wprowadzenie do monitorowania integralności plików dla WordPress.

Odsłonięty MySQL

Zdecydowanie jedną z najpoważniejszych błędnych konfiguracji, jakie może popełnić administrator systemu, jest pozostawienie serwera bazy danych WordPress MySQL otwartego na Internet. Dlaczego może to zabrzmieć szaleńczo, dzieje się to prawdopodobnie częściej niż myślisz. Poniżej znajduje się zrzut ekranu z Shodan, wyszukiwarki urządzeń podłączonych do Internetu.

Wyniki w Shodan dla serwerów MySQL

Oczywiście to, że MySQL jest ujawniony w Internecie, nie oznacza, że ​​ktoś może się z nim połączyć i uzyskać dostęp do bazy danych WordPressa. Jednak szczególnie w przypadku użycia w połączeniu z innymi atakami, takimi jak ujawnienie hasła przez kopię zapasową wp-config.php lub odgadnięcie słabego hasła, może to doprowadzić do scenariusza katastrofy.

Gdy już przejmiesz kontrolę nad bazą danych WordPress, to koniec gry dla instalacji WordPress. Jedyne, co musi zrobić osoba atakująca, to zresetować hasło administratora. Następnie przejmują pełną kontrolę nad twoją witryną WordPress, a potencjalnie nawet serwerem, na którym działa, celowo instalując złośliwe wtyczki.

Uruchamianie niepotrzebnych usług

Innym powszechnym problemem związanym z błędną konfiguracją serwera WWW jest konfiguracja domyślna. Wielu administratorów uruchamia domyślną konfigurację i nie wyłącza usług, których nie potrzebują. W większości przypadków domyślne instalacje mają uruchomionych wiele niepotrzebnych usług, z których większość, jeśli nie jest zabezpieczona, naraża serwer sieciowy na ataki.

Narzędzia penetracyjne dla testerów penetracyjnych WordPress i specjalistów ds. bezpieczeństwa

Testerzy penetracyjne wykorzystują różnorodne narzędzia do automatyzacji swojej pracy i technik. Automatyzacja pomaga skrócić czas potrzebny na wykonanie oceny bezpieczeństwa/testu penetracyjnego.

Kali Linux

Używane narzędzia są bardzo zróżnicowane. To zależy od osobistych preferencji i problemu. Jednak dobrym początkiem jest posiadanie do dyspozycji różnych, wstępnie zainstalowanych narzędzi.

Kali Linux

Kali Linux, dawniej znany jako BackTrack, to popularna dystrybucja Linuksa do testowania penetracji oprogramowania typu open source. Kali Linux jest dostarczany w pakiecie z całym szeregiem wstępnie zainstalowanych i wstępnie skonfigurowanych narzędzi. Przydaje się zarówno początkującym użytkownikom, którzy chcą szybko rozpocząć pracę, jak i doświadczonym testerom penetracyjnym. Kali Linux jest dostępny za darmo i może działać na maszynie wirtualnej.

Nmap

Ten darmowy skaner jest jednym z najbardziej podstawowych i wszechstronnych skanerów w arsenale każdego pentestera. Nmap to przede wszystkim skaner portów. Można go jednak rozszerzyć, aby wykonywać różne rodzaje skanowania za pomocą języka skryptowego NSE.

Skaner NMAP

WPScan

WPScan (opisany wcześniej w tym artykule) to skaner bezpieczeństwa WordPress o otwartym kodzie źródłowym. Skanuje w poszukiwaniu znanych luk w zabezpieczeniach WordPressa — zarówno w rdzeniu WordPressa, jak i w wtyczkach i motywach WordPress.

Skaner WPScan

WPScan może wykonać serię testów czarnej skrzynki. To znaczy bez dostępu do kodu źródłowego. W rezultacie WPScan doskonale nadaje się do szybkiego i dokładnego wyszukiwania nisko wiszących luk WordPress.

OWASP ZAP

OWASP Zed Attack Proxy (ZAP) to bezpłatne narzędzie do testowania penetracji aplikacji internetowych o otwartym kodzie źródłowym. Open Web Application Security Project (OWASP) utrzymuje te narzędzia. OWASP ZAP został zaprojektowany specjalnie do testowania aplikacji internetowych pod kątem szerokiej gamy luk w zabezpieczeniach, takich jak Cross-site Scripting (XSS) i SQL Injection (SQLi). ZAP, w swoim rdzeniu, jest proxy. Znajduje się między przeglądarką pentestera a witryną internetową, aby przechwytywać i sprawdzać żądania wysyłane między nimi.

Skaner OWASP ZAP

Oprócz działania jako proxy, ZAP może również automatycznie testować różne luki w zabezpieczeniach, a także może rozmyć różne dane wejściowe. Fuzzing to technika testowania zabezpieczeń, w której do aplikacji dostarczane są nieprawidłowe lub nieoczekiwane dane wejściowe w celu wykrycia luk w zabezpieczeniach.

Testy penetracyjne dla WordPressa – ocena stanu bezpieczeństwa Twojej witryny

Bezpieczeństwo WordPressa nie jest jednorazową poprawką. Jest to ciągły proces oparty na czterech zasadach: Utwardź > Monitoruj > Testuj > Ulepsz. Dzięki testom penetracyjnym odnosisz się do zasady testowania . Czyli sprawdzasz stan bezpieczeństwa swojej witryny. Następnie możesz podjąć niezbędne kroki, aby ulepszyć konfigurację na podstawie swoich ustaleń.

Dlatego częste testy penetracyjne witryny WordPress powinny być częścią twojego programu bezpieczeństwa. Oceniasz, jak często powinieneś robić testy penetracyjne. Jeśli często wprowadzasz zmiany w swojej witrynie, powinieneś przeprowadzać częste testy. Jednak kwartalny test penetracyjny sprawdza się, jeśli Twoja witryna rzadko otrzymuje aktualizację.