Narzędzia osobiste

W kategorii: XSS

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

Błąd persistent XSS w Allegro

29.01
W kategorii: ,

Tym razem znaleźliśmy błąd typu persistent XSS.

PoC:

<P STYLE="xss:e\xpression(alert(1))"></P>

W przypadku błędów persistent XSS, odpowiednio spreparowany payload znajduje się na serwerze podlegającym atakowi (użytkownik nie musi kliknąć w spreparowany link, wystarczy że w normalnym trybie nawiguje po portalu), co zdecydowanie zwiększa drastyczność ataku.

Błędy tego typu umożliwiają w prosty sposób m.in. przejęcie sesji użytkownika i dostęp do jego konta bez znajomości hasła/nazwy użytkownika.

Dodam tez, że ww PoC jest klasycznym przykładem wykorzystania techniki filter evasion.

Nie muszę chyba pisać, czym tego rodzaju błąd mógłby skutkować w serwisie typu Allegro...

Dzięki sprawnej współpracy z działem bezpieczeństwa Allegro, błędy został w bardzo szybkim czasie poprawiony.

xterm


Produkty
  • eProcurement
    (PDF 438 kb)

    Elektroniczny Obieg Wniosków Zakupowych
  • more:portal
    (PDF 0,5 MB)

    Kompetencje oraz doświadczenia WebService w zakresie wdrażania portali korporacyjnych.
  • more:arena
    (PDF 1,7 MB)

    Aplikacja do prowadzenia zaawansowanych negocjacji z klientem oraz do planowania sprzedaży.
  • Portal Absolwent
    (PDF 1,87 MB)

    System dla Biur Karier, przeznaczony do komunikacji pomiędzy Uczelniami, Pracodawcami oraz Studentami i Absolwentami.