Dziura znajduje się we wszystkich wersjach WordPressa aż do 7.0.3 (niezależnie od zainstalowanych pluginów) i pozwala atakującemu stać się administratorem bloga, a nawet wykonać dowolny kod PHP po stronie serwera. Atak bazuje na podatności XSS w wariancie pre-auth, czyli nie jest wymagane, aby atakujący miał konto użytkownika na atakowanym blogu.
Atak XSS2shell
Ta podatność XSS została odkryta w wp-login.php i aby ją wywołać należy przeprowadzić próbę logowania na użytkownika, który nie istnieje. WordPress przepuszcza wtedy błędny login przez funkcję strip_tags(), a później przez filtr wp_kses_post(). Pierwszy parser nie widzi znacznika, jeśli po znaku “<” jest spacja. Drugi interpretuje go jako dozwolony HTML. W efekcie, w komunikacie o błędnym logowaniu powstają elementy DOM kontrolowane przez atakującego. Ścieżka ataku bazuje na technice SOME, czyli Same Origin Method Execution. Callback odwołuje się do przycisku w innym oknie tej samej domeny i wywołuje click().
Jeśli chcesz zrozumieć, jak wyrywać takie podatności i jak budować takie ataki oraz dlaczego czasem jedna spacja wystarcza do ominięcia filtra po stronie aplikacji, to rzuć okiem na niebezpiecznikowy Kurs Ataków XSS. Tylko do końca dzisiejszego dnia sprzedajemy go w niższej o 30% cenie i dajemy wieczysty dostęp zarówno do materiałów (30 lekcji, ponad 3h materiału) jak i do środowiska labowego, gdzie w praktyce wykonasz wszystkie ataki. Dostęp jest na zawsze, ale niższa cena tylko dziś. Dlatego nie przegap tej okazji, bo do nauki możesz siąść nawet za pół roku, jeśli teraz nie masz na to czasu:
Admin musi kilknąć (świadomie lub nie) w podstawiony link
Warto jednak zauważyć, że aby uzbroić tę podatność i umożliwić przejęcie konta administratora lub wykonanie dowolnego kodu wymagane jest kliknięcie na link przez zalogowanego do WordPressa administratora, co powoduje instalację złośliwej wtyczki. Pełen atak wygląda więc tak:
-
1. Zalogowany administrator odwiedza jakąś stronę i klika w niej na linka (który jest podstawiony przez atakującego)
2. Kliknięcie powoduje wykorzystanie podatności XSS która tworzy hasło aplikacyjne admina i przekazuje je do atakującego. Dzięki temu możliwe jest uruchomienie skryptu, który w ramach sesji administratora wrzuca wtyczkę na serwer.
Krótko mówiąc, trzeba przekonać admina, aby wszedł na jakąś stronę i kliknął w niej na linka — nie jest to trudne, zwłaszcza że większość adminów WordPressa jest stale zalogowanych do bloga w ramach przeglądarki z której korzystają do “chodzenia po internecie”. Admin musi też mieć konto z uprawnieniami pozwalającymi na instalację wtyczek. Na marginesie — te wymagania i sam proces eksploitacji, który bazuje na kilku ciekawych pivotach i łączeniu wielu różnych słabości w jeden atak jest w pewien sposób piękny. Gdyby odkrył go człowiek. Ale atak miał zostać opracowany przez pracujące przez 4 dni open-source’owe agenty, które zapewne wykonały tyle różnych kombinacji, że dla człowieka byłoby to bardzo pracochłonne. Fakt niewykrycia tej podatności, chociaż istniała w każdej wersji WordPressa, zdaje się to potwierdzać.
Mam WordPressa — co robić, jak zyć?
Mimo tych wymogów, ze względu na to, że błąd istniał w każdej wersji i został został wykryty przez open-source’owych agentów AI, którzy podobno pracowali tylko/aż 4 dni, to warto na wszelki wypadek sprawdzić, czy ktoś wcześniej go nie wykorzystywał w atakach na Waszego WordPressa. W tym celu:
- Sprawdź i ew. unieważnij nierozpoznane hasła aplikacyjne administratorów oraz wtyczki.
- Przeszukaj logi pod kątem POST-ów do wp-login.php które zawierają “<” i spację oraz przejrzyj REST-y z _jsonp.
Jak widać, podatności bazujące na wstrzyknięciach (nie tylko JavaScriptu) wciąż są obecne, nawet w dojrzałych projektach. I we współczesnych aplikacjach, mogą być zdecydowanie groźniejsze niż zwykłe pokazanie alert(1). Dlatego każdy programista powinien nauczyć się jak wykrywać wstrzyknięcia, jak je uzbrajać i jak poprawnie je usuwać — a dokładnie tego uczy “od zera do bohatera” nasz krótki, ale turbo-praktyczny Internetowy Kurs XSS, który tylko do końca dzisiejszego dnia możesz kupić po obniżonej o 30% cenie. Dostęp do materiałów i środowiska labowego jest wieczysty, ale obniżka ceny nie, więc nie czekaj i wykup dostęp do kursu XSS po obniżonej cenie, która już nigdy nie wróci.

