webentwicklung-frage-antwort-db.com.de

Wenn ein Hacker den blog_charset in UTF-7 ändert, macht dies WordPress anfällig für weitere Angriffe?

Ich hatte einen Kunden, der kürzlich gehackt wurde, und ich bemerkte, dass auf ihrer Website seltsame Charaktere wie  und Æ auftauchten. Es stellt sich heraus, dass die Hacker den blog_charset in der wp_options-Tabelle in der Datenbank in UTF-7 geändert haben. Ich habe es auf UTF-8 zurückgesetzt, aber ich habe mich gefragt, ob es während der Einstellung auf UTF-7 zu Sicherheitslücken kommen kann.

Ich habe ein bisschen gesucht und festgestellt, dass es früher eine WordPress UTF-7-Sicherheitslücke gab, die in Version 2.0.6 behoben wurde. Wir verwenden die neueste Version von WordPress, daher konnten sie diesen Exploit nicht verwenden. Gibt es jedoch andere Exploits im Zusammenhang mit UTF-7? Gibt es wirklich einen Grund, warum die Hacker den blog_charset ändern würden, außer dass dies ein Schmerz ist? Ich habe versucht herauszufinden, wie sie reingekommen sind und ich frage mich, ob das irgendwie zusammenhängt.

19
Jennette

< und > sind in UTF-7 als +ADw- und +AD4- codiert. Stellen Sie sich nun folgendes vor:

  1. Jemand sendet +ADw-script+AD4-alert(+ACI-Hello+ACI-)+ADw-/script+AD4- als Kommentartext. Es wird alle sanitären Einrichtungen ungehindert passieren.

  2. Die Datenbank erwartet und behandelt alle eingehenden Daten als UTF-8. Da alle UTF-7-Streams auch UTF-8-Streams sind, führt dies niemals zu einem SQL-Fehler, und mysql_real_escape oder htmlspecialchars berühren ihn nicht.

  3. WordPress sendet einen Header text/html;charset=utf-7.

  4. WordPress zeigt den Kommentar an und erwartet entkommene Daten. Da dies jedoch vom Browser als UTF-7 behandelt wird, wird JavaScript ausgeführt.

Also ja, es ist ein Sicherheitsproblem.

UTF-7 wird nicht von allen Browsern unterstützt. Die meisten geben den Text als Windows-1252 (oder wie auch immer die Standardcodierung auf ihrem Betriebssystem lautet) oder als UTF-8 wieder. Das Hauptproblem ist: Flucht wird nicht mehr funktionieren.


Nur den Codierungswert zurück zu ändern, ist keine Lösung. Ein regelmäßiger Besucher kann es niemals ändern, so dass Sie haben die offene Tür finden.

23
fuxia

Möglicherweise ist es auch erforderlich (alle Kodierungen Ihrer Tabellen werden neu konvertiert): https://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and- Kollation-zu-utf-8

0