Wordpress
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Użyj Trickest, aby łatwo budować i automatyzować przepływy pracy zasilane przez najbardziej zaawansowane narzędzia społecznościowe na świecie. Uzyskaj dostęp już dziś:
Przesłane pliki trafiają do: http://10.10.10.10/wp-content/uploads/2018/08/a.txt
Pliki motywów można znaleźć w /wp-content/themes/, więc jeśli zmienisz jakiś php w motywie, aby uzyskać RCE, prawdopodobnie użyjesz tej ścieżki. Na przykład: Używając motywu twentytwelve, możesz uzyskać dostęp do pliku 404.php w: /wp-content/themes/twentytwelve/404.php
Inny przydatny adres URL to: /wp-content/themes/default/404.php
W wp-config.php możesz znaleźć hasło root do bazy danych.
Domyślne ścieżki logowania do sprawdzenia: /wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/
index.php
license.txt
zawiera przydatne informacje, takie jak zainstalowana wersja WordPressa.
wp-activate.php
jest używany do procesu aktywacji e-maila podczas konfigurowania nowej witryny WordPress.
Foldery logowania (mogą być przemianowane, aby je ukryć):
/wp-admin/login.php
/wp-admin/wp-login.php
/login.php
/wp-login.php
xmlrpc.php
to plik, który reprezentuje funkcję WordPressa, która umożliwia przesyłanie danych za pomocą HTTP jako mechanizmu transportowego i XML jako mechanizmu kodowania. Ten typ komunikacji został zastąpiony przez REST API WordPressa.
Folder wp-content
to główny katalog, w którym przechowywane są wtyczki i motywy.
wp-content/uploads/
to katalog, w którym przechowywane są wszelkie pliki przesłane na platformę.
wp-includes/
To katalog, w którym przechowywane są pliki rdzeniowe, takie jak certyfikaty, czcionki, pliki JavaScript i widżety.
wp-sitemap.xml
W wersjach WordPressa 5.5 i wyższych, WordPress generuje plik XML mapy witryny ze wszystkimi publicznymi postami oraz publicznie zapytalnymi typami postów i taksonomiami.
Post exploitation
Plik wp-config.php
zawiera informacje wymagane przez WordPress do połączenia z bazą danych, takie jak nazwa bazy danych, host bazy danych, nazwa użytkownika i hasło, klucze uwierzytelniające i sól oraz prefiks tabeli bazy danych. Ten plik konfiguracyjny może być również używany do aktywacji trybu DEBUG, co może być przydatne w rozwiązywaniu problemów.
Administrator
Redaktor: Publikuje i zarządza swoimi i innymi postami
Autor: Publikuje i zarządza swoimi postami
Współautor: Pisze i zarządza swoimi postami, ale nie może ich publikować
Subskrybent: Przegląda posty i edytuje swój profil
Sprawdź, czy możesz znaleźć pliki /license.txt
lub /readme.html
W kodzie źródłowym strony (przykład z https://wordpress.org/support/article/pages/):
grep
meta name
Pliki linków CSS
Pliki JavaScript
Użyj Trickest, aby łatwo budować i automatyzować przepływy pracy zasilane przez najbardziej zaawansowane narzędzia społecznościowe na świecie. Uzyskaj dostęp już dziś:
Prawdopodobnie nie będziesz w stanie znaleźć wszystkich możliwych Wtyczek i Motywów. Aby odkryć je wszystkie, będziesz musiał aktywnie przeprowadzić Brute Force listy Wtyczek i Motywów (na szczęście istnieją zautomatyzowane narzędzia, które zawierają te listy).
ID Brute: Uzyskujesz ważnych użytkowników z witryny WordPress, przeprowadzając Brute Force na identyfikatorach użytkowników:
Jeśli odpowiedzi są 200 lub 30X, oznacza to, że id jest ważne. Jeśli odpowiedź to 400, to id jest nieważne.
wp-json: Możesz również spróbować uzyskać informacje o użytkownikach, wykonując zapytanie:
Inny punkt końcowy /wp-json/
, który może ujawnić pewne informacje o użytkownikach, to:
Zauważ, że ten punkt końcowy ujawnia tylko użytkowników, którzy opublikowali post. Dostarczone będą tylko informacje o użytkownikach, którzy mają włączoną tę funkcję.
Również zauważ, że /wp-json/wp/v2/pages może ujawniać adresy IP.
Enumeracja nazw użytkowników logowania: Podczas logowania w /wp-login.php
wiadomość jest inna, jeśli wskazana nazwa użytkownika istnieje lub nie.
Jeśli xml-rpc.php
jest aktywne, możesz przeprowadzić atak brute-force na dane logowania lub użyć go do przeprowadzenia ataków DoS na inne zasoby. (Możesz zautomatyzować ten proces używając tego na przykład).
Aby sprawdzić, czy jest aktywne, spróbuj uzyskać dostęp do /xmlrpc.php i wyślij to żądanie:
Sprawdź
Bruteforce poświadczeń
wp.getUserBlogs
, wp.getCategories
lub metaWeblog.getUsersBlogs
to niektóre z metod, które można wykorzystać do bruteforce poświadczeń. Jeśli znajdziesz którąkolwiek z nich, możesz wysłać coś takiego:
Wiadomość "Nieprawidłowa nazwa użytkownika lub hasło" wewnątrz odpowiedzi z kodem 200 powinna się pojawić, jeśli dane uwierzytelniające są nieprawidłowe.
Używając prawidłowych danych uwierzytelniających, możesz przesłać plik. W odpowiedzi pojawi się ścieżka (https://gist.github.com/georgestephanis/5681982)
Również istnieje szybszy sposób na brute-force'owanie poświadczeń za pomocą system.multicall
, ponieważ możesz spróbować kilku poświadczeń w tym samym żądaniu:
Obejście 2FA
Ta metoda jest przeznaczona dla programów, a nie dla ludzi, i jest stara, dlatego nie obsługuje 2FA. Więc, jeśli masz ważne poświadczenia, ale główne wejście jest chronione przez 2FA, możesz być w stanie wykorzystać xmlrpc.php do zalogowania się z tymi poświadczeniami, omijając 2FA. Zauważ, że nie będziesz w stanie wykonać wszystkich działań, które możesz zrobić przez konsolę, ale nadal możesz być w stanie uzyskać RCE, jak wyjaśnia to Ippsec w https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s
DDoS lub skanowanie portów
Jeśli możesz znaleźć metodę pingback.ping na liście, możesz sprawić, że Wordpress wyśle dowolne żądanie do dowolnego hosta/portu. Można to wykorzystać do poproszenia tysięcy stron Wordpress o dostęp do jednej lokalizacji (w ten sposób powodowany jest DDoS w tej lokalizacji) lub możesz to wykorzystać, aby Wordpress lo zeskanował jakąś wewnętrzną sieć (możesz wskazać dowolny port).
Jeśli otrzymasz faultCode z wartością większą niż 0 (17), oznacza to, że port jest otwarty.
Zobacz użycie system.multicall
w poprzedniej sekcji, aby dowiedzieć się, jak wykorzystać tę metodę do spowodowania DDoS.
DDoS
Ten plik zazwyczaj znajduje się w katalogu głównym witryny Wordpress: /wp-cron.php
Gdy ten plik jest dostępny, wykonywane jest "ciężkie" zapytanie MySQL, więc może być użyty przez atakujących do spowodowania DoS.
Ponadto, domyślnie wp-cron.php
jest wywoływany przy każdym załadowaniu strony (za każdym razem, gdy klient żąda dowolnej strony Wordpress), co na stronach o dużym ruchu może powodować problemy (DoS).
Zaleca się wyłączenie Wp-Cron i utworzenie prawdziwego zadania cron na hoście, które wykonuje potrzebne działania w regularnych odstępach czasu (bez powodowania problemów).
Spróbuj uzyskać dostęp do https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net i witryna Worpress może wysłać do Ciebie żądanie.
To jest odpowiedź, gdy to nie działa:
To narzędzie sprawdza, czy methodName: pingback.ping oraz ścieżka /wp-json/oembed/1.0/proxy istnieją, a jeśli tak, próbuje je wykorzystać.
Więcej niż prawdziwy atak, to ciekawostka. W CTF https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man możesz zmienić 1 bit w dowolnym pliku wordpress. Możesz więc zmienić pozycję 5389
pliku /var/www/html/wp-includes/user.php
, aby zrealizować operację NOP dla NOT (!
).
Modyfikacja pliku php z używanego motywu (wymagane dane logowania administratora)
Wygląd → Edytor motywów → Szablon 404 (po prawej)
Zmień zawartość na powłokę php:
Szukaj w internecie, jak możesz uzyskać dostęp do zaktualizowanej strony. W tym przypadku musisz uzyskać dostęp tutaj: http://10.11.1.234/wp-content/themes/twentytwelve/404.php
Możesz użyć:
to get a session.
Możliwe, że można przesłać pliki .php jako wtyczkę. Utwórz swój backdoor PHP, używając na przykład:
Następnie dodaj nową wtyczkę:
Prześlij wtyczkę i naciśnij Zainstaluj teraz:
Kliknij na Kontynuuj:
Prawdopodobnie to nic nie zrobi, ale jeśli przejdziesz do Mediów, zobaczysz przesłaną powłokę:
Uzyskaj do niej dostęp, a zobaczysz URL do wykonania odwrotnej powłoki:
Ta metoda polega na zainstalowaniu złośliwej wtyczki, która jest znana jako podatna i może być wykorzystana do uzyskania powłoki sieciowej. Proces ten odbywa się przez pulpit WordPressa w następujący sposób:
Pozyskiwanie wtyczki: Wtyczka jest pozyskiwana z źródła takiego jak Exploit DB, jak tutaj.
Instalacja wtyczki:
Przejdź do pulpitu WordPressa, a następnie do Pulpit > Wtyczki > Prześlij wtyczkę
.
Prześlij plik zip pobranej wtyczki.
Aktywacja wtyczki: Po pomyślnej instalacji wtyczki, musi być ona aktywowana przez pulpit.
Eksploatacja:
Z zainstalowaną i aktywowaną wtyczką "reflex-gallery", można ją wykorzystać, ponieważ jest znana jako podatna.
Framework Metasploit zapewnia exploit dla tej podatności. Ładując odpowiedni moduł i wykonując konkretne polecenia, można nawiązać sesję meterpreter, co daje nieautoryzowany dostęp do witryny.
Zauważono, że to tylko jedna z wielu metod eksploatacji witryny WordPress.
Zawartość obejmuje wizualne pomoce ilustrujące kroki w pulpicie WordPressa dotyczące instalacji i aktywacji wtyczki. Ważne jest jednak, aby zauważyć, że eksploatacja podatności w ten sposób jest nielegalna i nieetyczna bez odpowiedniej autoryzacji. Informacje te powinny być używane odpowiedzialnie i tylko w kontekście prawnym, takim jak pentesting z wyraźnym pozwoleniem.
Aby uzyskać bardziej szczegółowe kroki, sprawdź: https://www.hackingarticles.in/wordpress-reverse-shell/
WPXStrike: WPXStrike to skrypt zaprojektowany do eskalacji podatności Cross-Site Scripting (XSS) do Remote Code Execution (RCE) lub innych krytycznych podatności w WordPressie. Aby uzyskać więcej informacji, sprawdź ten post. Oferuje wsparcie dla wersji WordPressa 6.X.X, 5.X.X i 4.X.X oraz pozwala na:
Eskalacja uprawnień: Tworzy użytkownika w WordPressie.
(RCE) Przesyłanie złośliwej wtyczki (backdoor): Prześlij swoją złośliwą wtyczkę (backdoor) do WordPressa.
(RCE) Edycja wbudowanej wtyczki: Edytuj wbudowane wtyczki w WordPressie.
(RCE) Edycja wbudowanego motywu: Edytuj wbudowane motywy w WordPressie.
(Custom) Złośliwe exploity: Złośliwe exploity dla wtyczek/motywów WordPressa innych firm.
Wyciągnij nazwy użytkowników i hasła:
Zmień hasło administratora:
Znajomość tego, jak wtyczka Wordpress może ujawniać funkcjonalność, jest kluczowa, aby znaleźć luki w jej funkcjonalności. Możesz znaleźć, jak wtyczka może ujawniać funkcjonalność w poniższych punktach oraz kilka przykładów podatnych wtyczek w tym wpisie na blogu.
wp_ajax
Jednym ze sposobów, w jaki wtyczka może ujawniać funkcje użytkownikom, jest za pomocą handlerów AJAX. Mogą one zawierać błędy logiki, autoryzacji lub uwierzytelniania. Co więcej, często te funkcje będą opierać zarówno autoryzację, jak i uwierzytelnianie na istnieniu nonce Wordpress, który może mieć każdy użytkownik uwierzytelniony w instancji Wordpress (niezależnie od jego roli).
To są funkcje, które mogą być używane do ujawniania funkcji w wtyczce:
Użycie nopriv
sprawia, że punkt końcowy jest dostępny dla wszystkich użytkowników (nawet niezautoryzowanych).
Ponadto, jeśli funkcja tylko sprawdza autoryzację użytkownika za pomocą funkcji wp_verify_nonce
, ta funkcja tylko sprawdza, czy użytkownik jest zalogowany, zazwyczaj nie sprawdza roli użytkownika. Tak więc użytkownicy o niskich uprawnieniach mogą mieć dostęp do działań o wysokich uprawnieniach.
REST API
Możliwe jest również udostępnienie funkcji z WordPressa, rejestrując REST API za pomocą funkcji register_rest_route
:
permission_callback
to funkcja zwrotna, która sprawdza, czy dany użytkownik jest uprawniony do wywołania metody API.
Jeśli używana jest wbudowana funkcja __return_true
, po prostu pominie sprawdzenie uprawnień użytkownika.
Bezpośredni dostęp do pliku php
Oczywiście, Wordpress używa PHP, a pliki wewnątrz wtyczek są bezpośrednio dostępne z sieci. Tak więc, w przypadku, gdy wtyczka ujawnia jakąkolwiek podatną funkcjonalność, która jest wywoływana po prostu przez dostęp do pliku, będzie to wykorzystywalne przez każdego użytkownika.
Upewnij się, że WordPress, wtyczki i motywy są aktualne. Potwierdź również, że automatyczne aktualizacje są włączone w wp-config.php:
Również, instaluj tylko zaufane wtyczki i motywy WordPress.
Usuń domyślnego użytkownika admin
Używaj silnych haseł i 2FA
Okresowo przeglądaj uprawnienia użytkowników
Ogranicz próby logowania w celu zapobiegania atakom Brute Force
Zmień nazwę pliku wp-admin.php
i zezwól na dostęp tylko wewnętrznie lub z określonych adresów IP.
Użyj Trickest, aby łatwo budować i automatyzować przepływy pracy zasilane przez najbardziej zaawansowane narzędzia społecznościowe na świecie. Uzyskaj dostęp już dziś:
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)