Stillegung meiner Seite wg. Malware

  • Joomla Version
    Joomla 6.0
    PHP Version
    PHP 8.4.x
    Hoster
    www.one.com

    Hallo!
    Ich habe ein Big Proplem. Von jetzt auf gleich hat mein Hoster (one.com) meine Seite stillgelegt, da dort offenbar Malware entdeckt wurde.
    Ich habe nur noch den ftp-Zugang. Über diesen habe ich das Joomla 6.0-update hochgeladen, in der Hoffnung, damit alles zu lösen. Als Antwort erhielt ich eine Liste von sage und schreibe 300 Dateien, die angeblich immer noch befallen seien.
    Ich habe über meine komplette Seite Malware-Scanner laufen lassen. Avira fand ganze 20 verdächtige Dateien, die sie repariert hat. Malwarebytes und Avast fanden nichts.
    Hat jemand eine Ahnung, was ich tun kann, damit mein Hoster die Seite wieder freigibt?
    Besten Dank im Voraus!

  • Hallo joomlatist,

    das klingt erstmal übel, aber mein Rat ist dennoch erstmal Ruhe zu bewahren, denn das lässt sich alles in den Griff bekommen. Aber der bisherige Ansatz greift leider zu kurz. Ein Joomla-Core-Update behebt nur die Kerndateien, Schadcode in Erweiterungen, Templates oder frei hochgeladenen Dateien bleiben davon komplett unberührt. Das erklärt vermutlich, warum dein Hoster auch danach noch rund 300 befallene Dateien findet.

    Zu den Virenscannern: Avira, Malwarebytes und Avast sind auf klassische Windows-Malware ausgelegt, nicht auf PHP-basierten Web-Schadcode. Dass Avira 20 Dateien "repariert" hat, würde ich nicht unbedingt als gutes Zeichen werten, solche Tools verändern mitunter Dateiinhalte, ohne zu wissen, welche Funktion die Datei im Joomla-System hat, das kann die Seite zusätzlich beschädigen, während der eigentliche Schadcode woanders unentdeckt bleibt.

    Dein wertvollster Anhaltspunkt ist die Liste der rund 300 vom Hoster gemeldeten Dateien, die ist serverseitig und spezialisierter erstellt worden. Kannst du die hier posten (Pfade reichen, keine Inhalte), dann lässt sich vielleicht schon ein Muster erkennen?

    Grundsätzlich empfehle ich bei einer echten Kompromittierung dieses Ausmaßes:

    1. Falls vorhanden, ein sauberes, lokales Backup von vor dem Befall einspielen, das ist meist der schnellste und sicherste Weg.
    2. Falls kein sauberes Backup existiert, würde ich das nicht im Alleingang per Virenscanner weiterversuchen, sondern professionelle Hilfe holen. In diesem Forum hat sich zuletzt kitepascal von HTProtect wiederholt sehr kompetent um genau solche Fälle gekümmert, oder du schaust über die Dienstleister-Seite von joomla.de.
    3. Als Basis-Referenz lohnt sich auch die Forum-Anleitung "Mein Joomla wurde gehackt! Was kann ich tun?", die deckt die grundsätzliche Vorgehensweise ab.

    Dieser Text wurde (ganz oder teilweise) mit Hilfe von KI erstellt.

  • Die Dateien sind:
    Backup/Backup/Backup/cache.php

    Spoiler anzeigen
    • Backup/Backup/Backup/lnJkTWFYLwRsQXze.m4a
    • Backup/Backup/cache.php
    • Backup/Backup/index.php
    • MySQLadmin/MySQLadmin/MySQLadmin/MySQLadmin/cache.php
    • MySQLadmin/MySQLadmin/MySQLadmin/MySQLadmin/index.php
    • MySQLadmin/MySQLadmin/MySQLadmin/cache.php
    • MySQLadmin/MySQLadmin/MySQLadmin/utplhALeUsJqV.wav
    • MySQLadmin/MySQLadmin/cache.php
    • MySQLadmin/MySQLadmin/index.php
    • PgSQLadmin/PgSQLadmin/PgSQLadmin/PgSQLadmin/PEvwkWtAeugKsRUn.3gp
    • PgSQLadmin/PgSQLadmin/PgSQLadmin/PgSQLadmin/cache.php
    • PgSQLadmin/PgSQLadmin/PgSQLadmin/cache.php
    • PgSQLadmin/PgSQLadmin/PgSQLadmin/index.php
    • PgSQLadmin/PgSQLadmin/cache.php
    • PgSQLadmin/PgSQLadmin/index.php
    • ReadMe/ReadMe/ReadMe/PfcXKYxlVHuviGshJA.mp4
    • ReadMe/ReadMe/ReadMe/ReadMe/cache.php
    • ReadMe/ReadMe/ReadMe/ReadMe/index.php
    • ReadMe/ReadMe/ReadMe/cache.php
    • ReadMe/ReadMe/ZrlqTzfeaYWXkEMsFJwv.fla
    • ReadMe/ReadMe/cache.php
    • administrator/components/com_akeebabackup/tmpl/includefolders/includefolders/VANgcFpMhHyEXtqT.wav
    • administrator/components/com_akeebabackup/tmpl/includefolders/includefolders/cache.php
    • administrator/components/com_akeebabackup/tmpl/includefolders/includefolders/index.php
    • administrator/components/com_categories/src/Field/Field/INvmUXibBSsCnMK.flv
    • administrator/components/com_categories/src/Field/Field/cache.php
    • administrator/components/com_categories/src/Field/Field/index.php
    • administrator/components/com_cpanel/src/src/cache.php
    • administrator/components/com_cpanel/src/src/pyTjIgKYrULnJ.m3u8
    • administrator/components/com_languages/src/src/XSkzlubrRjNItsfUaiQg.ico
    • administrator/components/com_languages/src/src/cache.php
    • administrator/components/com_languages/src/src/index.php
    • administrator/components/com_scheduler/src/Event/Event/LIPuRKTBkeWQmw.ogv
    • administrator/components/com_scheduler/src/Event/Event/cache.php
    • administrator/modules/mod_guidedtours/src/src/cache.php
    • administrator/modules/mod_guidedtours/src/src/index.php
    • api/components/com_media/com_media/cache.php
    • api/components/com_media/com_media/yzpYaALKS.3gp
    • bin/bin/bin/cache.php
    • bin/bin/bin/index.php
    • bin/bin/cache.php
    • bin/bin/index.php
    • cache/cache/cache.php
    • cache/cache/cache/cache.php
    • cache/cache/cache/cache/VCMYnkLJqpgaWE.xbm
    • cache/cache/cache/cache/cache.php
    • cache/cache/cache/cache/index.php
    • cache/cache/cache/index.php
    • cache/cache/index.php
    • cli/cli/cache.php
    • cli/cli/index.php
    • components/com_contact/layouts/field/field/cache.php
    • components/com_contact/layouts/field/field/index.php
    • components/com_contact/tmpl/contact/contact/cache.php
    • components/com_contact/tmpl/contact/contact/index.php
    • components/com_jce/editor/extensions/aggregator/aggregator/cache.php
    • components/com_jce/editor/extensions/aggregator/aggregator/index.php
    • components/com_jce/editor/extensions/aggregator/video/js/js/GIeEYlp.flv
    • components/com_jce/editor/extensions/aggregator/video/js/js/cache.php
    • components/com_jce/editor/extensions/aggregator/video/js/js/index.php
    • components/com_jce/editor/libraries/views/plugin/index.php
    • components/com_newsfeeds/src/View/Categories/Categories/cache.php
    • components/com_newsfeeds/src/View/Categories/Categories/jGtkYXMJciAhHNgP.jpx
    • css/msd/msd/cache.php
    • css/msd/msd/index.php
    • df09ff34a492.php
    • files/files/cache.php
    • files/files/files/cache.php
    • files/files/files/index.php
    • files/files/files/yPqejFMrElzkUc.fla
    • files/files/index.php
    • files/files/iwFLgMUams.ogm
    • images/media/editors/codemirror/mode/erlang/erlang/cache.php
    • images/media/editors/codemirror/mode/erlang/erlang/index.php
    • images/media/jui/js/jquery.min.js
    • inc/sqlbrowser/sqlbrowser/cache.php
    • inc/sqlbrowser/sqlbrowser/index.php
    • includes/includes/cache.php
    • includes/includes/includes/cache.php
    • includes/includes/includes/includes/cache.php
    • includes/includes/includes/includes/includes/cache.php
    • includes/includes/includes/includes/includes/includes/cache.php
    • includes/includes/includes/includes/includes/includes/index.php
    • includes/includes/includes/includes/includes/mZWqFaxjYkL.ogv
    • includes/includes/includes/includes/jWrzfqIhZgA.mkv
    • includes/includes/includes/index.php
    • includes/includes/index.php
    • js/scriptaculous/lib/lib/cache.php
    • js/scriptaculous/lib/lib/index.php
    • js/scriptaculous/lib/lib/lib/cache.php
    • js/scriptaculous/lib/lib/lib/index.php
    • js/scriptaculous/lib/lib/lib/vFJCfZqgViet.ico
    • language/en/en/cache.php
    • language/en/en/index.php
    • language/overrides/overrides/cache.php
    • language/overrides/overrides/index.php
    • language/overrides/overrides/zTctvuIiRGj.wma
    • layouts/joomla/mail/mail/cache.php
    • layouts/joomla/mail/mail/index.php
    • layouts/libraries/html/bootstrap/tab/tab/cache.php
    • layouts/libraries/html/bootstrap/tab/tab/index.php
    • libraries/src/Cache/Cache/aAMfXtSweWscNCQB.mp3
    • libraries/src/Cache/Cache/cache.php
    • libraries/src/Cache/Cache/index.php
    • libraries/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/BigInteger/cache.php
    • libraries/vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger/BigInteger/index.php
    • media/com_jce/editor/tinymce/plugins/autosave/autosave/cache.php
    • media/com_jce/editor/tinymce/plugins/autosave/autosave/jRhgkBHwtTuJWpXiLKbG.jpx
    • media/com_jce/editor/tinymce/plugins/nonbreaking/nonbreaking/cache.php
    • media/com_jce/editor/tinymce/plugins/nonbreaking/nonbreaking/index.php
    • media/vendor/roboto-fontface/scss/roboto/sass/sass/cache.php
    • media/vendor/roboto-fontface/scss/roboto/sass/sass/index.php
    • media/vendor/roboto-fontface/scss/roboto/sass/sass/tJBkGvlUNMsi.mpg
    • modules/mod_articles_categories/src/src/cache.php
    • modules/mod_articles_categories/src/src/index.php
    • modules/mod_articles_categories/src/src/kxtmAzuHJXbSpYcQV.jpg
    • modules/mod_articles_popular/tmpl/tmpl/cache.php
    • modules/mod_articles_popular/tmpl/tmpl/lSIKkqezmwbVHLCv.wmv
    • modules/mod_finder/src/Dispatcher/Dispatcher/cache.php
    • modules/mod_finder/src/Dispatcher/Dispatcher/index.php
    • modules/mod_login/services/services/cache.php
    • modules/mod_login/services/services/index.php
    • modules/mod_syndicate/mod_syndicate/cache.php
    • modules/mod_syndicate/mod_syndicate/index.php
    • modules/mod_tags_popular/tmpl/tmpl/cache.php
    • modules/mod_tags_popular/tmpl/tmpl/index.php
    • modules/mod_visitorcounter/css/css/cache.php
    • modules/mod_visitorcounter/css/css/index.php
    • msd_cron/msd_cron/cache.php
    • msd_cron/msd_cron/ecIxvRuPZNQALVwWb.jp2
    • msd_cron/msd_cron/msd_cron/Z.png
    • msd_cron/msd_cron/msd_cron/cache.php
    • msd_cron/msd_cron/msd_cron/msd_cron/cache.php
    • msd_cron/msd_cron/msd_cron/msd_cron/v.mpeg
    • plugins/editors/none/services/services/cache.php
    • plugins/editors/none/services/services/index.php
    • plugins/fields/media/src/Extension/Extension/WCYebSElZnNg.ogm
    • plugins/fields/media/src/Extension/Extension/cache.php
    • plugins/fields/media/src/Extension/Extension/index.php
    • plugins/fields/sql/tmpl/tmpl/BgKcZEFkGmVIJTryS.bmp
    • plugins/fields/sql/tmpl/tmpl/cache.php
    • plugins/workflow/featuring/forms/forms/cache.php
    • plugins/workflow/featuring/forms/forms/index.php
    • plugins/workflow/notification/forms/forms/cache.php
    • plugins/workflow/notification/forms/forms/index.php
    • templates/cassiopeia/html/layouts/chromes/chromes/cache.php
    • templates/cassiopeia/html/layouts/chromes/chromes/index.php
    • tmp/133133.PhP
    • tmp/133133.phar
    • tmp/133133.php.PhP
    • tmp/133133.php4
    • tmp/133133.php5
    • tmp/133133.php7
    • tmp/133133.php8
    • tmp/133133.phps
    • tmp/133133.pht
    • tmp/133133.phtm
    • tmp/133133.phtml
    • tmp/133133.shtml
    • tmp/133133.svg
    • tmp/244244.PHP
    • tmp/244244.phar
    • tmp/244244.php.PhP
    • tmp/244244.php4
    • tmp/244244.php5
    • tmp/244244.php7
    • tmp/244244.php8
    • tmp/244244.phps
    • tmp/244244.pht
    • tmp/244244.phtm
    • tmp/244244.phtml
    • tmp/244244.shtml
    • tmp/244244.svg
    • tmp/289289.PHP
    • tmp/289289.phar
    • tmp/289289.php.PhP
    • tmp/289289.php4
    • tmp/289289.php5
    • tmp/289289.php7
    • tmp/289289.php8
    • tmp/289289.phps
    • tmp/289289.pht
    • tmp/289289.phtm
    • tmp/289289.phtml
    • tmp/289289.shtml
    • tmp/289289.svg
    • tmp/439439.PhP
    • tmp/439439.phar
    • tmp/439439.php.PhP
    • tmp/439439.php4
    • tmp/439439.php5
    • tmp/439439.php7
    • tmp/439439.php8
    • tmp/439439.phps
    • tmp/439439.pht
    • tmp/439439.phtm
    • tmp/439439.phtml
    • tmp/439439.shtml
    • tmp/439439.svg
    • tmp/488488.PHP
    • tmp/488488.phar
    • tmp/488488.php.PhP
    • tmp/488488.php4
    • tmp/488488.php5
    • tmp/488488.php7
    • tmp/488488.php8
    • tmp/488488.phps
    • tmp/488488.pht
    • tmp/488488.phtm
    • tmp/488488.phtml
    • tmp/488488.shtml
    • tmp/488488.svg
    • tmp/510510.PHP
    • tmp/510510.phar
    • tmp/510510.php.PhP
    • tmp/510510.php4
    • tmp/510510.php5
    • tmp/510510.php7
    • tmp/510510.php8
    • tmp/510510.phps
    • tmp/510510.pht
    • tmp/510510.phtm
    • tmp/510510.phtml
    • tmp/510510.shtml
    • tmp/510510.svg
    • tmp/567567.phar
    • tmp/567567.php
    • tmp/567567.php.PhP
    • tmp/567567.php4
    • tmp/567567.php5
    • tmp/567567.php7
    • tmp/567567.php8
    • tmp/677677.PhP
    • tmp/677677.phar
    • tmp/677677.php.PhP
    • tmp/677677.php4
    • tmp/677677.php5
    • tmp/677677.php7
    • tmp/677677.php8
    • tmp/677677.phps
    • tmp/677677.pht
    • tmp/677677.phtm
    • tmp/677677.phtml
    • tmp/677677.shtml
    • tmp/677677.svg
    • tmp/873873.PhP
    • tmp/873873.phar
    • tmp/873873.php.PhP
    • tmp/873873.php4
    • tmp/873873.php5
    • tmp/873873.php7
    • tmp/873873.php8
    • tmp/873873.phps
    • tmp/873873.pht
    • tmp/873873.phtm
    • tmp/873873.phtml
    • tmp/873873.shtml
    • tmp/873873.svg
    • tmp/882882.PhP
    • tmp/882882.phar
    • tmp/882882.php.PhP
    • tmp/882882.php4
    • tmp/882882.php5
    • tmp/882882.php7
    • tmp/882882.php8
    • tmp/882882.phps
    • tmp/882882.pht
    • tmp/882882.phtm
    • tmp/882882.phtml
    • tmp/882882.shtml
    • tmp/882882.svg
    • tmp/929929.PHP
    • tmp/929929.phar
    • tmp/929929.php.PhP
    • tmp/929929.php4
    • tmp/929929.php5
    • tmp/929929.php7
    • tmp/929929.php8
    • tmp/929929.phps
    • tmp/929929.pht
    • tmp/929929.phtm
    • tmp/929929.phtml
    • tmp/929929.shtml
    • tmp/929929.svg
    • tmp/ctf.xml.php
    • tmp/imp.phtml
    • tmp/imp.xml.php
    • tmp/index.php
    • tmp/index.php_option_com_releases_task_update.download_file_pkg_jce_2982.zip
    • tmp/mainhack.php
    • tmp/s1781505621.phtml
    • tmp/tmp/cache.php
    • tmp/tmp/index.php
    • tmp/tmp/tmp/cache.php
    • tmp/tmp/tmp/index.php
    • tmp/x.phar
    • tpl/home/home/cache.php
    • tpl/home/home/index.php
  • Danke fürs Teilen der Liste, das bestätigt leider eindeutig, dass es sich um einen sehr umfangreichen, systematischen Befall handelt, der sich durch die komplette Installation zieht, nicht um ein paar einzelne Dateien. Eine weitere Detailanalyse der einzelnen Pfade würde dir an dieser Stelle nichts mehr bringen, das braucht jetzt echte, professionelle Bereinigung.

    Ich würde dir dringend raten, jetzt nichts mehr eigenständig per FTP hochzuladen oder zu löschen, das könnte die Einschätzung deines Hosters zusätzlich verkomplizieren. Die beiden Wege, die ich vorhin genannt hatte, gelten jetzt erst recht:

    1. Falls du irgendwo ein sauberes, lokales Backup von deutlich vor dem Befall hast, ist das Einspielen davon der sicherste und schnellste Weg.
    2. Falls nicht, wende dich jetzt zeitnah an jemanden vom Fach, entweder hier über kitepascal von HTProtect, falls er sich meldet, oder über die Dienstleister-Seite von joomla.de. Bei diesem Umfang würde ich das nicht länger aufschieben.

    Dieser Text wurde (ganz oder teilweise) mit Hilfe von KI erstellt.

  • Deine Vorsicht ist genau richtig, lieber einmal zu genau hinschauen. Ein kleiner Anhaltspunkt: In einem anderen aktuellen Thread hier im Forum wurde der 28. Mai als Stichtag für die aktuelle JCE-Angriffswelle genannt. Wenn dein Backup wirklich von Anfang des Jahres ist, liegt das deutlich davor, das spricht für sich.

    Zwei Dinge würde ich dir noch mitgeben:

    1. Bevor du das Backup live schaltest, wäre es sinnvoll, es lokal zu entpacken und stichprobenartig auf genau die Art von Dateien zu prüfen, die du eben gepostet hast, verdächtige cache.php oder index.php in ungewöhnlichen Unterordnern, zufällig benannte Dateien mit ungewöhnlichen Endungen. Findest du davon nichts, ist das ein gutes Zeichen.
    2. Nach dem Wiederherstellen unbedingt sofort alle Erweiterungen und den Joomla-Kern auf den aktuellen Stand bringen, besonders JCE, und alle Zugangsdaten neu setzen, bevor die Seite wieder öffentlich erreichbar ist. Sonst tappt du eventuell in dieselbe Falle.

    Und sprich das Wiedereinspielen am besten kurz mit deinem Hoster ab, eine automatische Freigabe nach dem Backup-Restore ist nicht garantiert, unter Umständen muss one.com die Seite erst manuell erneut prüfen.

    Dieser Text wurde (ganz oder teilweise) mit Hilfe von KI erstellt.

  • Ich habe noch ein Backup vom Anfang des Jahres. Keine Ahnung, ob da schon malware vorhanden war. Ich werde es mal versuchen.....

    Nahezu alle Hack-Probleme sind in den letzten Monaten entstanden. MIt einem Backup von Anfang Januar hast du sehr gute Chancen, dass die Seite noch sauber war. Vermutlich ist das Problem erst vor kurzem aufgetreten. Sonst hätte vermutlich dein Hoster auch schon vorher reagiert.
    Dennoch solltest du das Backup gründlich überprüfen.

    Kannst du das Backupdatum mal nennen?

    Viele Grüße!
    JoomlaWunder

  • Hallo!
    Da bin ich leider immer noch. Nachdem ich ein älteres Backup hochgeladen habe und die Seite immer noch nicht angezeigt wird, bin ich den Ratschlägen von Joomla gefolgt:
    "If your Administrator interface is not working, edit the configuration.php file in the root folder of your Joomla website.
    1. Change the permissions from 444 or -r--r--r-- (no one has permission to write to the file) to 644 or -rw-r--r-- (only the Owner has permission to write).
    2. Inside the file, set $debug to true and $error_reporting to maximum.
    3. Save the file.
    With the changes made, reload the page that was causing the error. Now you should see a stack trace.
    The first item in the stack trace indicates where the error was triggered. Sometimes that is enough to identify the faulty Extension. Sometimes the faulty Extension is farther down the stack trace. It may not mean much to you but the stack trace is invaluable to the experts who answer questions in the Joomla Forums."

    Das Resultat war:

    ERROR

    mysqli object is not fully initialized

    Error
    in /customers/c/b/d/arthur-gordon-wolf.de/httpd.www/libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php (line 138)
    in /customers/c/b/d/arthur-gordon-wolf.de/httpd.www/libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php -> prepare (line 138)
    in /customers/c/b/d/arthur-gordon-wolf.de/httpd.www/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php -> __construct (line 1020)
    in /customers/c/b/d/arthur-gordon-wolf.de/httpd.www/libraries/vendor/joomla/database/src/DatabaseDriver.php -> prepareStatement (line 1785)
    DatabaseDriver->setQuery(object(MysqliQuery)) in /customers/c/b/d/arthur-gordon-wolf.de/httpd.www/libraries/src/Menu/SiteMenu.php (line 166)
    Der Fehler liegt demnach also im Mysqli-Bereich.
    Was kann ich tun, um den Fehler zu beseitigen?
    Besten Dank im Voraus!!!

  • Sind die Pfade in der configuration.php korrekt eingestellt?
    Wenn du das Backup manuell erstellt hast (Webspace und DB-Tabellen natürlich zur selben Zeit gesichert) und es nun einspielst, müssen oft die Pfade und ev. weitere Werte in der configuration.php angepasst werden. Auf dem Server kann sich ja durchaus auch was geändert haben oder du hast einen anderen Tarif. Überprüfe das mal zur Sicherheit!

    Nebenbei: Und dass $live_site und $cookie_domain in der configuration.php leer sein sollten, ist sicherlich bekannt?!?

    Überprüfe auch mal, ob die techn. Voraussetzungen für deine eingespielte Joomla-Version erfüllt sind!

    Anforderungen
    Erfahren Sie hier alles über die Systemanforderungen, die für den erfolgreichen Betrieb von Joomla! unerlässlich sind.
    www.joomla.de

    Viele Grüße!
    JoomlaWunder