Narzędzia osobiste
Start > Aktualności > Security blog > Persistent XSS w Wordpress

Persistent XSS w Wordpress

07.02
W kategorii:

Krytyczne błędy w popularnym oprogramowaniu! Czy Twój blog stanowi zagrożenie?

W ramach rutynowej analizy kodu źródłowego, znaleźliśmy 2 błędy persistent XSS w jednym z najpopularniejszych oprogramowaniań blogowych - <a href="www.wordpress.org">WordPress</a>.

Proof of Concept (IE7)

wpisanie w komentarz ciągu:


aaa@"STYLE="behavior:url('#default#time2')"onBegin="alert('XSS')"

Aktywacja XSS-a następuje po odczytaniu komentarza przez uzytkownika blogu.
Aktywacja ma również miejsce w administracji aplikacji, przez co atakujący
może otrzymać dostęp do konta administratora (ataki typu: przejęcie sesji administratora bez znajomości hasła, CSRF).

Drugi błąd jest podobny, PoC:

javascript://%0a%0dalert%281%29

aktywacja po kliknięciu w wygenerowany link.

Przypominam, że XSS-y persistent są wyjątkowo zjadliwe (do uruchomienia ataku nie jest jest wymagane podrzucenie linku ofierze, wystarczy że będzie ona najzwyczajniej w świecie nawigować po portalu).

 Szczegóły

problem istnieje w pliku:

wp-includes/formatting.php, a dokładniej, w funkcji
make_clicable().

regexpy zamieniające wybrane kawałki tekstu  na wersje klikalne są zbyt mało restrykcyjne. Dokładniej, chodzi o 6 i 8 linijkę poniżej.



1. function make_clickable($ret) {
2.    $ret = ' ' . $ret;
3.    // in testing, using arrays here was found to be faster
4.    $ret = preg_replace(
5.        array(
6.            '#([\s>])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is',
7.            '#([\s>])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is',
8.            '#([\s>])([a-z0-9\-_.]+)@([^,< \n\r]+)#i'),
9.        array(
10.            '$1<a href="$2" rel="nofollow">$2</a>',
11.            '$1<a href="http://$2" rel="nofollow">$2</a>',
12.            '$1<a href="mailto:$2@$3">$2@$3</a>'),$ret);
13.    // this one is not in an array because we need it to run last, for cleanup of accidental links within links
14.    $ret = preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i", "$1$3</a>", $ret);
15.    $ret = trim($ret);
16.    return $ret;
17.}

 

Podatne wersje wordpress-a

2.3.1, najprawdopodobniej również niższe.

Kroki zaradcze

Vendor został przez nas powiadomiony o problemie i wypuścił wersję 2.3.2 zawierającą m.in. patcha poprawiającego podatność.

Zalecamy więc upgrade do najnowszej wersji wordpress-a.

 

 

 

xterm


Produkty
  • more:room
    (PDF 1,17 MB)

    Intuicyjna aplikacja do rezerwacji sal konferencyjnych oraz innych zasobów. Usprawnia rezerwowanie dzięki czemu oszczędza czas pracowników recepcji oraz wszystkich osób rezerwują…cych sale.
  • Portal Absolwent oraz Badania Losów
    (PDF 1,06 MB)

    System wspierający działalność Biura Karier, przeznaczony do usprawnienia komunikacji pomiędzy Uczelnią…, Pracodawcami oraz Studentami i Absolwentami.
  • more:portal
    (PDF 0,5 MB)

    Kompetencje oraz doświadczenia WebService w zakresie wdrażania portali korporacyjnych.
  • eProcurement
    (PDF 438 kb)

    Elektroniczny Obieg Wniosków Zakupowych