Wszystkie artykuły Poprzedni Następny

WordPress: 320 tysięcy stron narażonych na atak (The InfiniteWP Client i WP Time Capsule)

Luka umożliwiająca pominięcie uwierzytelniania i zalogowanie się do back-endu strony z pominięciem hasła użytkownika odkryta w pluginach The InfiniteWP i WP Time Capsule.

wordpress krytyczna luka the infinitewp time capsule

Do dokonania ataku wystarczy nazwa użytkownika administratora.

Ze wtyczek narażonych na atak korzysta ponad 300 tysięcy użytkowników (InfiniteWP Client 300 tysięcy, The WP Time Capsule 20 tysięcy).

Wtyczki te umożliwiają logowanie się do wielu stron przy pomocy jednego, centralnego serwera, co ma ułatwić obsługę, dokonywanie uaktualnień przy pomocy jednego kliknięcia, czy zmianę wyglądu wielu stron naraz.

Luka została odkryta przez firmę WebArx 7 stycznia 2020 roku i załatana przez autorów dzień później. Publiczne ogłoszenie podatności na atak zostało ogłoszone 14 stycznia.

Luka w The InfiniteWP Client

Na atak podatny jest plugin w wersji poniżej 1.9.4.5.

Atak dokonany jest przy wykorzystaniu prośby POST zawierający odpowiedni payload w formacie JSON zakodowanym w Base64.

Po wysłaniu zapytania, które wymaga znajomości nazwy administratora, atakujący zostaje automatycznie zalogowany.

Problematyczna okazała się funkcja iwp_mmb_set_request zlokalizowana w pliku init.php. Funkcja ta sprawdza, czy zmienna request_params klasy IWP_MMB_Core nie jest pusta (a nie jest pusta w przypadku gdy payload spełnia odpowiednie warunki).

Warunki, które muszą być spełnione to równowartość parametrów iwp_action i readd_site lub add_site, które nie sprawdzają autoryzacji. Brakujące sprawdzenie autoryzacji w tym przypadku jest powodem istnienia tej luki. Wysłanie payload'u z nazwą administratora i spełniającym powyższe wymagania kończy się nieautoryzowanym logowaniem.

Luka w WP Time Capsule

Na atak podatny jest plugin w wersji poniżej 1.21.16

Do ataku wystarczy prośba POST z odpowiednim tekstem w treści zapytania.

Plikiem zawierającym lukę jest wptc-cron-functions.php. Funkcja parse_request odpala funkcję decode_server_request_wptcsprawdzającą, czy zapytanie POST zawiera tekst IWP_JSON_PREFIX — w przypadku posiadania tego tekstu użytkownik zostaje zalogowany jako administrator.

Firewall może być nieskuteczny

Ponieważ sama luka wykorzystuje błędy logiczne w kodzie, fragment przesyłanych danych nie różni się od zwykłych zapytań, co oznacza, że nie wygląda podejrzanie dla zapory sieciowej.

Jak się chronić?

Należy jak najszybciej zaktualizować wtyczki.

Postaw kawę autorowi artukułu.

Zobacz wszystkie artykuły

Jeśli potrzebujesz pomocy, twoja strona została zainfekowana, chcesz dokonać audytu bezpieczeństwa, czy po prostu masz jakieś pytania — napisz do nas. Postaramy się pomóc.

Zgłoś błąd w tekście
×