Poznaj AI! Obejrzyj bezpłatnie szkolenie jutro o godz. 10:00 lub 19:00

Wyciek tytułów szkiców i prywatnych wpisów w silniku WordPress

21 maja 2025, 03:24 | W biegu | 0 komentarzy

Badacze z firmy Imperva odkryli i opisali interesującą podatność w popularnym silniku blogowym WordPress. Luka umożliwia osobom postronnym poznanie tytułów prywatnych wpisów oraz szkiców. Na pierwszy rzut oka nie brzmi dramatycznie, bo dotyczy tylko tytułów, ale w niektórych sytuacjach już samo przedwczesne ujawnienie tytułu może mieć poważne konsekwencje. Jako przykład podawane są tu wpisy na blogach firmowych dotyczące wyników finansowych czy planowanych fuzji.

Podatność występuje w domyślnej instalacji WordPress i polega na wykorzystaniu endpointu odpowiedzialnego za obsługę XML-RPC, a dokładnie funkcjonalności pingback. Działa ona tak, że jeśli jeden blog linkuje do innego, to ten, do którego jest tworzony link, jest powiadamiany o tym fakcie, aby utworzyć podobny do komentarza link do blogu linkującego.

Przebieg wykorzystania tej funkcjonalności w WordPress jest następujący:

  1. Na blogu A następuje publikacja wpisu odnoszącego się do blogu B.
  2. Blog A wysyła powiadomienie pingback do blogu B.
  3. Blog B weryfikuje, czy link faktycznie jest odnośnikiem do któregoś z jego wpisów.
  4. Blog B pobiera treść wpisu, aby upewnić się, że link faktycznie tam istnieje.

Kluczowy dla podatności jest krok trzeci, w którym WordPress sprawdza, czy którykolwiek z tytułów wpisów – w tym wpisów prywatnych lub będących wpisami – zawiera podany ciąg znaków (rys. 1).

Rys. 1 – Fragment kodu WordPress odpowiedzialny za obsługę pingback. Źródło: Imperva

Atakujący wykorzystuje różnicę w zachowaniu instancji WordPress w sytuacji, gdy podany ciąg znaków występuje w którymkolwiek tytule wpisu i w przypadku braku takiego wystąpienia. Jeśli nastąpi dopasowanie w trakcie sprawdzenia, blog B przechodzi do punktu czwartego i wykonuje żądanie do bloga atakującego w celu pobrania wpisu i weryfikacji, czy link faktycznie występuje. W przypadku braku dopasowania ciągu znaków do tytułu, żądanie nie jest wykonywane.

Atakujący może zatem generować kolejne żądania XML-RPC udające pingback (rys. 2) oraz linkowanie do wpisów o podanych fragmentach tytułów i sprawdzać, czy dla danego ciągu otrzyma żądanie z bloga ofiary. Całość tytułu atakujący może poznać poprzez rozbudowywanie pasującego ciągu o kolejne znaki. Widowiskowy przebieg ataku – zupełnie jak na filmach! – przedstawia wideo z demo na blogu Impervy.

Rys. 2 – przykładowy złośliwy payload pingback. Źródło: Imperva.

Innym sposobem wykorzystania podatności, który opisali autorzy znaleziska, jest wykorzystanie analizy czasu wykonania operacji – w przypadku dopasowania atakowany serwer odczekuje 1 sekundę przed pobraniem treści z bloga, który wykonał żądanie. Zgodnie z komentarzem ma to dać czas na faktyczne dokonanie publikacji przez blog A.

Autorzy w swoim opisie podatności linkują skrypt w Pythonie, który ma umożliwić zbadanie, czy nasza instancja jest podatna na opisany atak, jednak wymaga on niewielkiej modyfikacji przed uruchomieniem.

Jako ochronę sugerują wykorzystanie WAF lub wyłączenie funkcjonalności pingback w WordPressie. My ze swojej strony dodamy, że jeśli w naszym WordPressie nie wykorzystujemy funkcjonalności związanych z XML-RPC, możemy zupełnie zablokować dostęp do xmlrpc.php na poziomie serwera WWW.

~Paweł Różański

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz