Technologiczne, Gadżety, Telefony Komórkowe, Pobieranie Aplikacji

Luka w zabezpieczeniach XXE Injection wpływa na strony internetowe WordPress

Uwaga: Poniższy artykuł pomoże Ci w: Luka w zabezpieczeniach XXE Injection wpływa na strony internetowe WordPress

W WordPressie odkryto poważną lukę w zabezpieczeniach, w szczególności lukę XXE Injection.

Ten błąd jest dość poważny i umożliwia atakującym zdalną kradzież plików z dowolnego hosta WordPress.

Luka ta dotyczy także wersji WordPress wcześniejszych 5.7.1.

Co robią ataki wykorzystujące luki w zabezpieczeniach XXE Injection?

Zdalni atakujący mogą przeprowadzić następujące ataki:

  • Ujawnianie dowolnych plików: Oznacza to, że w zasadzie można odzyskać zawartość dowolnego pliku w systemie hosta WordPress. Jednym z przykładów pliku, który można pobrać, jest wp-config.php, który zawiera poufne dane uwierzytelniające bazy danych.
  • Fałszerstwo żądań po stronie serwera (SSRF): W tym ataku hakerzy wykorzystują instalację WordPress do wysyłania żądań HTTP. Jeśli bezpieczeństwo niektórych środowisk nie jest w pełni zabezpieczone, może to mieć poważne konsekwencje.

Na szczęście WordPress wydał plik poprawka bezpieczeństwa w dniu 14 kwietnia 2021 r.

Źródło Sonar podało, co następuje szczegóły techniczne za atakiem:

Szczegóły techniczne

W tej sekcji przyjrzymy się bliżej technicznym szczegółom luki. Najpierw pokrótce przypomnimy sobie, czym jest luka XXE. Następnie zagłębiamy się w lukę zgłoszoną przez nasz analizator w rdzeniu WordPressa, sprawdzając, gdzie ona się znajduje w kodzie i dlaczego ponownie można ją wykorzystać w PHP 8 mimo że podjęto wysiłki, aby zapobiec takim lukom w liniach kodu, których dotyczy problem. Na koniec pokazujemy, w jaki sposób atakujący mogą wykorzystać tę lukę, wykorzystując specjalnie spreparowane dane wejściowe do wyodrębnienia pliku wp-config.php, oraz w jaki sposób zapobiega się tej luce.

Luki w zabezpieczeniach jednostki zewnętrznej XML (XXE).

XML oferuje możliwość definiowania niestandardowych encji, które można ponownie wykorzystać w całym dokumencie. Można to wykorzystać na przykład w celu uniknięcia powielania. Poniższy kod definiuje jednostkę myEntity do dalszego użycia.


]>

&myEntity;
&myEntity;

Wartość zdefiniowanych jednostek może również pochodzić ze źródła zewnętrznego, do którego odwołuje się identyfikator URI. W tym przypadku nazywane są podmiotami zewnętrznymi:


]>

&myExternalEntity;

Ataki XXE niewłaściwie wykorzystują tę funkcję. Są one możliwe, gdy luźno skonfigurowany parser XML jest uruchamiany na treści kontrolowanej przez użytkownika. Luźna konfiguracja zwykle oznacza, że ​​w wyniku wszystkie elementy są zastępowane odpowiadającymi im wartościami. Na przykład w ostatnim przykładzie, jeśli osoba atakująca poda file:///var/www/wp-config.php jako identyfikator URI i jest w stanie wyświetlić wynik przeanalizowanego pliku XML, skutecznie wycieknie poufna zawartość pliku. Jednak wynik przeanalizowanego pliku XML nie zawsze jest wyświetlany użytkownikowi, co ma miejsce w przypadku luki w zabezpieczeniach WordPress opisanej w tym poście. Jak zobaczymy później, istnieją sposoby, aby sobie z tym poradzić.

To jest główna idea i mechanizm stojący za XXE (dowiedz się więcej w naszej bazie reguł). Oprócz ujawnienia wrażliwych plików, XXE może mieć również inne skutki, takie jak fałszerstwo żądań po stronie serwera (aby pobrać zawartość podmiotów zewnętrznych, należy złożyć żądanie, S5144) i odmowa usługi (podmioty mogą odwoływać się do innych podmiotów, co skutkuje możliwy wykładniczy wzrost podczas podstawienia, czyli atak śmiechu miliarda).

Eksploatacja

Aby wykorzystać opisaną lukę, konieczne jest zrozumienie, czy i w jaki sposób dane kontrolowane przez użytkownika mogą osiągnąć punkt, w którym zostaną przeanalizowane jako XML jako część zmiennej $XMLstring w: wp-includes/ID3/getid3.lib.php

721 publiczna funkcja statyczna XML2array($XMLstring) {

730 $XMLobject = simplexml_load_string($XMLstring, ‘SimpleXMLElement’, LIBXML_NOENT);
WordPress używa getID3, aby ułatwić wyodrębnianie tych metadanych podczas przesyłania plików do swojej biblioteki multimediów. Badanie biblioteki getID3 ujawniło, że analizowany w tym momencie ciąg znaków jest fragmentem iXML pliku audio Wave, gdy analizowane są jego metadane.

wp-includes/ID3/module.audio-video.riff.php

426 if (isset($thisfile_riff_WAVE[‘iXML’][0][‘data’])) {
427 // wymaga funkcji simplexml_load_string i get_object_vars
428 if ($parsedXML = getid3_lib::XML2array($thisfile_riff_WAVE[‘iXML’][0][‘data’])) {
WordPress umożliwia przesyłanie plików audio Wave i wyodrębnia ich metadane za pomocą funkcji wp_read_audio_metadata() (która opiera się na getID3).

W ten sposób przesyłając spreparowany plik Wave, można wstrzykiwać i analizować złośliwy kod XML. Można utworzyć minimalny plik o strukturze niezbędnej do obsługi jako fala i zawierający ładunek ataku we fragmencie iXML z następującą zawartością:

RIFFXXXXWAVEBBBBiXML_OUR_PAYLOAD_
(BBBB to cztery bajty reprezentujące długość ładunku XML w Little Endian.)

Zainstaluj poprawkę i uaktualnij!

Jak zawsze zalecamy zainstalowanie najnowszej łatki i aktualizację, jeśli to możliwe.

Nie chcesz, aby ktoś o nikczemnych zamiarach uzyskał dostęp do Twoich plików i zniszczył Twoją witrynę.

Uwierz nam! Nie chcemy, aby coś takiego przytrafiło się również Twojej witrynie.