Odkrywanie ukrytych zagrożeń w niezałatanych badaniach luk w zabezpieczeniach SSRF WordPress

administracja

Wprowadzenie – eksploracja nieznanego: pod powierzchnią niezałatanego SSRF WordPressa

W ciągle ewoluującym krajobrazie cyberbezpieczeństwa WordPress pozostaje popularnym celem ze względu na jego powszechne wykorzystanie i rozległy ekosystem wtyczek. Podczas gdy rdzeń WordPressa jest generalnie bezpieczny, luki często wynikają z wtyczek i motywów innych firm. Jedną z takich luk, która przyciągnęła uwagę, jest luka Server-Side Request Forgery (SSRF). W tym wpisie na blogu zagłębimy się w zawiłości niezałatanej luki SSRF WordPressa, jej implikacje i w jaki sposób WP-Firewall może pomóc chronić Twoją witrynę WordPress przed takimi zagrożeniami.

## Przyczyna główna: wp_http_validate_url()

We wrześniu 2022 r. SonarSource opublikował ostrzeżenie dotyczące niezałatanego WordPress Core Unauthenticated Blind SSRF. Podstawowa przyczyna tej luki leży w funkcji `wp_http_validate_url()`, która jest podatna na ataki DNS rebinding. Chociaż samo jądro WordPressa nie jest bezpośrednio dotknięte, wtyczki wykorzystujące tę podatną funkcję są zagrożone.

Zrozumienie wp_http_validate_url()

Funkcja `wp_http_validate_url()` została zaprojektowana do walidacji adresów URL w celu zapobiegania atakom przekierowań i fałszowania żądań. Nie chroni jednak przed atakami DNS rebinding, co czyni ją potencjalnym wektorem luk SSRF. Ta funkcja jest często używana w połączeniu z `wp_remote_get()` i jej bezpieczniejszą alternatywą, `wp_safe_remote_get()`.

Część oczywista: wp_remote_get() i wp_safe_remote_get()

Funkcja `wp_remote_get()` jest powszechnie używana do żądania zdalnych hostów przez serwer. Jednak powszechnie wiadomo, że przekazywanie adresów URL wprowadzanych przez użytkownika do tej funkcji może prowadzić do luk w zabezpieczeniach SSRF. Aby złagodzić to ryzyko, WordPress wprowadził `wp_safe_remote_get()`, które obejmuje dodatkowe walidacje zapobiegające atakom SSRF.

Jak bezpieczne jest wp_safe_remote_get()?

Funkcja `wp_safe_remote_get()` została zaprojektowana jako bezpieczniejsza alternatywa dla `wp_remote_get()`. Zgodnie z oficjalną dokumentacją WordPressa:

„Ta funkcja jest idealna, gdy żądanie HTTP jest kierowane do dowolnego adresu URL. Adres URL jest weryfikowany w celu uniknięcia przekierowań i ataków typu request forgery”.

Jednak bezpieczeństwo tej funkcji jest ograniczone przez podstawową funkcję `wp_http_validate_url()`, która, jak wspomniano wcześniej, jest podatna na ataki polegające na ponownym wiązaniu DNS.

Nurkowanie w funkcji

Kod źródłowy dla `wp_safe_remote_get()` wygląda następująco:

php
funkcja wp_safe_remote_get( $url, $args = array() ) {
$args['odrzuć_niebezpieczne_adresy_URL'] = prawda;
$http = _wp_http_get_object();
zwróć $http->get( $url, $args );
}

W linii 2 parametr `$args['reject_unsafe_urls']` jest ustawiony na `true`, co ostatecznie przekazuje dane wejściowe użytkownika do funkcji `wp_http_validate_url()` przed żądaniem adresu URL. Ponieważ `wp_http_validate_url()` jest podatny na ataki DNS rebinding, każda funkcja polegająca wyłącznie na nim w celu walidacji jest również podatna.

Ograniczenia podatności

Mimo że nie jest to pełnoprawny SSRF, funkcja `wp_http_validate_url()` nakłada pewne ograniczenia:

– Protokół musi być albo `http://` albo `https://`
– Port może być tylko jednym z następujących: 80, 443 lub 8080

Pomimo tych ograniczeń żądanie wewnętrznych hostów w tych granicach jest możliwe poprzez ten SSRF.

Podatny na ataki kod wtyczki

Oto kilka przykładów podatnego na ataki kodu wtyczki:

SSRF nieślepy

php
<?php
wymagaj_razu('wp-load.php');
$url = $_GET['adres URL'];
$response = wp_safe_remote_get( $url );
$response = wp_remote_retrieve_body( $response );
echo $response;
?>

Jeśli wtyczka pobiera dane wejściowe od użytkownika, przekazuje je do funkcji `wp_safe_remote_get()`, a następnie wyświetla odpowiedź, jest podatna na ataki SSRF z ograniczeniem niewidocznym.

Ślepy SSRF

php
<?php
wymagaj_razu('wp-load.php');
$url = $_GET['adres URL'];
$response = wp_safe_remote_get( $url );
$response_code = wp_remote_retrieve_response_code( $response );
jeśli ($response_code == 200) {
echo "Włącznie i działa";
} w przeciwnym razie {
echo "Niedostępny lub nie znaleziony!";
}
?>

Jeśli wtyczka przekazuje dane wejściowe użytkownika do funkcji `wp_safe_remote_get()`, ale zwraca tylko kod odpowiedzi/status, jest podatna na ślepe ataki SSRF, co ogranicza wpływ na skanowanie portów 80, 443 lub 8080 dowolnego wewnętrznego hosta.

Demonstracja ataku

Aby zademonstrować tę lukę, przeprowadziliśmy atak na serwer Apache obsługujący WordPress na porcie 80 i serwer PHP obsługujący localhost:8080 z pewnymi tajnymi informacjami. Podatny kod został umieszczony w katalogu wtyczek `/wp-content/plugins/vulnerable-plugin/index.php`.

Repozytorium GitHub

Podatną na ataki instancję Dockera i skrypt exploita, który pozwala wykorzystać tę lukę, można znaleźć tutaj Repozytorium GitHub. Źródło: Ananda Dhakal

## Więcej podatnych funkcji

Ta sama luka dotyczy również innych funkcji, które do walidacji wykorzystują metodę `wp_http_validate_url()`:

– „wp_safe_remote_request()”
– „wp_safe_remote_post()”
– „wp_safe_remote_head()”

Ponadto niektóre funkcje działają jako opakowania dla `wp_safe_remote_get()` i są również w pewnym stopniu podatne na ataki:

– `Kontroler szczegółów WP_REST_URL::get_remote_url()`
– `download_url()`
– „wp_remote_fopen()”
– „WP_oEmbed::discover()”

Wniosek

Oczywiste jest, że funkcje uważane za bezpieczne i zaprojektowane w celu ochrony przed lukami SSRF nie są całkowicie niezawodne. Poleganie na `wp_http_validate_url()`, które jest podatne na ataki DNS rebinding, naraża witryny WordPress na potencjalne ataki SSRF. Wzywamy zespół WordPress Core do zajęcia się tym problemem i wydania poprawki w celu zwiększenia bezpieczeństwa platformy.

Jak WP-Firewall może pomóc

W WP-Firewall rozumiemy krytyczne znaczenie zabezpieczenia Twojej witryny WordPress przed nowymi zagrożeniami. Nasze kompleksowe rozwiązania bezpieczeństwa są zaprojektowane tak, aby zapewnić solidną ochronę przed szeroką gamą luk, w tym atakami SSRF. Oto, w jaki sposób WP-Firewall może pomóc w zabezpieczeniu Twojej witryny WordPress:

Wykrywanie zagrożeń w czasie rzeczywistym

WP-Firewall oferuje funkcje wykrywania zagrożeń w czasie rzeczywistym, które monitorują Twoją witrynę pod kątem podejrzanych działań i potencjalnych luk. Nasze zaawansowane algorytmy mogą identyfikować i blokować próby SSRF, zapewniając bezpieczeństwo Twojej witryny.

Regularne audyty bezpieczeństwa

Nasz zespół ekspertów ds. bezpieczeństwa przeprowadza regularne audyty Twojej witryny WordPress i jej wtyczek, aby identyfikować i usuwać luki w zabezpieczeniach. Dzięki wyprzedzaniu potencjalnych zagrożeń pomagamy Ci utrzymać bezpieczne środowisko dla Twoich użytkowników.

Automatyczne zarządzanie poprawkami

Aktualizowanie rdzenia WordPress, motywów i wtyczek jest kluczowe dla bezpieczeństwa. WP-Firewall zapewnia automatyczne zarządzanie poprawkami, zapewniając, że wszystkie komponenty Twojej witryny są aktualizowane najnowszymi poprawkami bezpieczeństwa.

Niestandardowe reguły zapory sieciowej

WP-Firewall umożliwia tworzenie niestandardowych reguł zapory dostosowanych do Twoich konkretnych potrzeb. Wdrażając reguły blokujące złośliwe żądania i nieautoryzowane próby dostępu, możesz zwiększyć bezpieczeństwo swojej witryny.

Kompleksowe raportowanie

Nasze szczegółowe raporty bezpieczeństwa dostarczają informacji o wykrytych zagrożeniach i działaniach podjętych w celu ochrony Twojej witryny. Dzięki WP-Firewall możesz być informowany o stanie bezpieczeństwa swojej witryny WordPress w każdej chwili.

Ochrona przed SSRF za pomocą WP-Firewall

Aby konkretnie zabezpieczyć się przed lukami SSRF, WP-Firewall oferuje następujące funkcje:

Walidacja danych wejściowych

WP-Firewall przeprowadza rygorystyczną walidację danych wejściowych, aby zapewnić, że adresy URL dostarczane przez użytkowników są bezpieczne i wolne od złośliwych intencji. Poprzez walidację danych wejściowych na wielu poziomach zapobiegamy atakom SSRF wykorzystującym podatne funkcje.

Ochrona przed ponownym wiązaniem DNS

Nasza zapora sieciowa obejmuje mechanizmy ochrony przed ponownym wiązaniem DNS, które wykrywają i blokują próby wykorzystania luk w zabezpieczeniach ponownego wiązania DNS. Dzięki temu Twoja witryna pozostanie bezpieczna, nawet jeśli podstawowe funkcje, takie jak `wp_http_validate_url()`, są podatne na ataki.

Bezpieczne żądania API

WP-Firewall zabezpiecza żądania API poprzez egzekwowanie ścisłych środków walidacji i uwierzytelniania. Zapobiega to nieautoryzowanemu dostępowi i zmniejsza ryzyko ataków SSRF na punkty końcowe API.

Ciągły monitoring

Nasze możliwości ciągłego monitorowania pozwalają na czujne obserwowanie ruchu i aktywności na Twojej stronie. Każde podejrzane zachowanie jest sygnalizowane i rozwiązywane natychmiast, minimalizując ryzyko udanych ataków SSRF.

Wezwanie do działania

Chociaż niezałatana luka SSRF WordPressa stwarza znaczne ryzyko, proaktywne środki mogą złagodzić jej wpływ. Wykorzystując kompleksowe rozwiązania bezpieczeństwa WP-Firewall, możesz chronić swoją witrynę WordPress przed atakami SSRF i innymi pojawiającymi się zagrożeniami. Bądź na bieżąco z potencjalnymi lukami i zapewnij bezpieczne środowisko dla swoich użytkowników dzięki WP-Firewall.

Nie czekaj na naruszenie bezpieczeństwa, aby podjąć działania. Zabezpiecz swoją witrynę WordPress już dziś za pomocą WP-Firewall. Rozpocznij bezpłatny okres próbny i ciesz się spokojem ducha, jaki daje solidna ochrona w czasie rzeczywistym.

Aby uzyskać więcej informacji na temat tego, jak WP-Firewall może pomóc w zabezpieczeniu Twojej witryny WordPress, odwiedź naszą stronę strona internetowa lub skontaktuj się z naszym zespołem wsparcia.

Zachowaj bezpieczeństwo, zadbaj o ochronę i chroń swoją witrynę WordPress dzięki WP-Firewall.

Tygodniowe porady dotyczące bezpieczeństwa

Otrzymuj najnowsze informacje o bezpieczeństwie WordPressa prosto do swojej skrzynki odbiorczej. Zapisz się do naszego newslettera i bądź na bieżąco z najnowszymi zagrożeniami i najlepszymi praktykami w zakresie zabezpieczania witryny WordPress.

Najnowsze ostrzeżenia dotyczące bezpieczeństwa

Zobacz wszystkie najnowsze ostrzeżenia dotyczące bezpieczeństwa i bądź na bieżąco z krytycznymi lukami w zabezpieczeniach wtyczek i motywów WordPress.

– 19 maja 2024 r.: Raport o lukach w zabezpieczeniach WordPressa (od 6 maja 2024 r. do 12 maja 2024 r.)
– 15 maja 2024 r.: Załatane luki o wysokim priorytecie wtyczki Uncode Core


wordpress security update banner

Otrzymaj WP Security Weekly za darmo 👋
Zarejestruj się teraz
!!

Zarejestruj się, aby co tydzień otrzymywać na skrzynkę pocztową aktualizacje zabezpieczeń WordPressa.

Nie spamujemy! Przeczytaj nasze Polityka prywatności Więcej informacji znajdziesz tutaj.