News

SB 17.01 :: Kritische Lücke in Wordpress-API erlaubt Artikeländerungen und Remote Code Execution

2017.02.01

wp-hack

Am 1. Februar veröffentlichte Sucuri Details zu einer kritischen Wordpress-Lücke, die es Angreifern ermöglicht, ohne Authentifizierung Artikel und Plugin-Einstellungen zu ändern und PHP-Code einzuschleusen, der dann zu einer Remote Code Execution führen kann.

Die Probleme bestehen in der REST-API von Wordpress, die mit der Version 4.4 im Dezember 2015 eingeführt wurde und per Default aktiviert ist.

Ein Angreifer kann durch manipulieren von GET- oder POST-Parametern beliebige Artikel ändern, um z.B. SEO-Spam einzufügen oder schadhaften Code einschleusen, der zur Infektion von Besuchern mit Viren oder Trojanern führen kann, im Worst-Case ist das Einschleusen von PHP-Code möglich.

Die Lücke aus folgenden Gründen als KRITISCH eingestuft:

  • von extern exploitbar
  • ohne Authentifizierung ausnutzbar
  • Angriffsvektoren ermöglichen Exploit-Kampagnen
  • Die REST-API ist per default aktiviert
  • ca 30% aller Webseiten sind Wordpress-Installationen

Detaillierte Beschreibungen der Lücke finden sich in den Blogs von Sucuri und Akamai

Bereits im Oktober gab es ein Advisory auf Hackerone, indem über Möglichkeiten berichtet wurde, via API unerlaubten Zugriff auf Userinformationen zu erlangen.

Gegenmaßnahmen

8ackProtect-Kunden sind durch die Hotpatching-Funktionalität der WAF bereits geschützt.

Wir empfehlen, sofern die Worpdress-API nicht intensiv genutzt wird, den Zugriff temporär komplett zu sperren. Die Lücke aus dem Oktober und die jetzige zeigen, dass Sicherheitsfeatures der API nicht ausgereift sind und wir erwarten, dass jetzt vermehrt Lücken gesucht und höchstwahrscheinlich auch gefunden werden.Präventiv, um den zu erwartenden Kampagnen vorzubeugen, sollte man also die API-Zugriffe serverseitig deaktivieren.

Benutzer der Naxsi-WAF können folgende Regeln aus dem Doxi-Rulesets anwenden, die bereits im Repository zu finden sind:

# block access to WP-API
MainRule  "str:/wp-json/wp/v2/" "msg:Wordpress REST-API Access" "mz:URL" "s:$ATTACK:8" id:42000461  ;

# GET-Exploit
MainRule negative "rx:^\d+$" "msg:WordPress API Content Injection (GET)" "mz:|$URL:/wp-json/wp/v2/posts/|$ARGS_VAR:id" "s:$ATTACK:8" id:42000460  ;

# POST-Exploit
MainRule negative "rx:^\d+$" "msg:WordPress API Content Injection (POST)" "mz:$URL:/wp-json/wp/v2/posts/|$BODY_VAR:id" "s:$ATTACK:8" id:42000459  ;

Zugriff auf die API blockieren / Nginx

location /wp-json/wp/v2 {

    return 404;

}

Zugriff auf die API blockieren / Apache

# mod_alias

Redirect 404 /wp-json/wp/v2

# mod_rewrite

RedirectMatch 404 /wp-json/wp/v2

Referenzen




You code … we platform.