Bei uns das selbeHi
Also grad den Shop geprüft. Es wurden keine Dateien verändert und die Datenbank enthält keine auffälligen Strings im Dump. Es wurde versucht ein Nutzer anzulegen und direkt zu löschen sonst nichts. Keine Weiteren Aufrufe in der Zwischenzeit. Ich würde fast behaupten der Shop ist sauber.
Grüße
Fabrice
Wenn es nur den insert und delete Befehl gab klingt es danach. Ggf. wird aber auch die admin/index.php aufgerufen. Das bedeutet je nach Widget auch schon, dass sensible Daten abgerufen werden konnten:Hi
Also grad den Shop geprüft. Es wurden keine Dateien verändert und die Datenbank enthält keine auffälligen Strings im Dump. Es wurde versucht ein Nutzer anzulegen und direkt zu löschen sonst nichts. Keine Weiteren Aufrufe in der Zwischenzeit. Ich würde fast behaupten der Shop ist sauber.
Grüße
Fabrice
Wie ist das, wenn kein "bilder/banner" im log ist?Wenn es nur den insert und delete Befehl gab klingt es danach. Ggf. wird aber auch die admin/index.php aufgerufen. Das bedeutet je nach Widget auch schon, dass sensible Daten abgerufen werden konnten:
- Widget "Letzte Bestellungen": Letzte Bestellungen, den Namen der bestellenden Kunden und deren genutzte Zahlungsart und Warenwert
- Widget "Besucher (Online)": Die Besucher seit dem letzten Frontend-Zugriff. Gäste werden nur gezählt, aber bei eingeloggten registrierten Kunden wird Name und IP-Adresse ausgegeben. Letztere ist obfuskiert, wenn dies entsprechend eingestellt ist
- Weitere sensible Informationen könnten vorhanden sein, wenn Sie durch Plugins eigene Widgets auf dem Dashboard haben.
Also wenn ihr mit der Suche im access_log (ich empfehle übrigens das Programm "glogg") nach "/**/" "tadminlogin" und "bilder/banner" fündig geworden seid, schaut auch immer anschließend mit einer Suche nach den IP-Adressen der bisherigen Funde.
Das ist gut.Wie ist das, wenn kein "bilder/banner" im log ist?
Ist vllt nicht optimal formuliert: Da steht nicht "insert UND delete in der gleichen Zeile" sondern "Insert und delete... in der gleichen Zeile wie tadminlogin". Es sind also getrennte Zeilen, jeweils entweder "insert UND tadminlogin" oder "delete UND tadminlogin".Und gleich nochmal meine Frage von vorhin:
Leider ist in der Mail von heute aus meiner Sicht nicht alles eindeutig beschrieben. Ich habe den Patch gestern Abend eingespielt und habe heute ein Angriffsmuster in der access. log
Unter 2. steht ".. insert UND delete in der gleichen Zeile ..." -> Bei mir ist insert UND delete nicht in einer Zeile.
Das ist der Nachteil an der Textmail :/ Hier ein Beispiel:3. "dort ... Statuscode "200" ..." -> Tja, wo dort? In der Zeile Insert UND delete? Die wurden mit "404" quitiert.

Wenn die bilder/banner php Datei mit 200 OK abgegriffen wurde und 2000 Byte, dann kannst du davon ausgehen, dass IRGENDWAS abgegriffen wurde. Selbst bei wie oben gezeigten 258 Byte könnte es ein einzelner Kundendatensatz sein. An der Stelle ist es leider Zeit deinen Datenschutzbeauftragten für weitere Schritte zu konsultieren. Ggf. ist das Meldepflichtig und das innerhalb von 72 Stunden (inkl. Feiertage/Wochende) nachdem es bekannt ist.Es gibt Zeilen, die mit dem Code "200" und mit über 2000 Byte quittiert wurden. Wurden nun doch Daten abgegriffen, obwohl das System gepatcht war?
Es wurde keine bilder/banner php abgegriffen, dies taucht im log nicht auf. Ich kann jedoch die Zugriffe auf /admin nicht richtig verstehen (habe vorher noch nie die Protokolle gesichtet).Das ist gut.
...
Wenn die bilder/banner php Datei mit 200 OK abgegriffen wurde und 2000 Byte, dann kannst du davon ausgehen, dass IRGENDWAS abgegriffen wurde. Selbst bei wie oben gezeigten 258 Byte könnte es ein einzelner Kundendatensatz sein. An der Stelle ist es leider Zeit deinen Datenschutzbeauftragten für weitere Schritte zu konsultieren. Ggf. ist das Meldepflichtig und das innerhalb von 72 Stunden (inkl. Feiertage/Wochende) nachdem es bekannt ist.
Bei anderen Dateien müsste man erst mal prüfen. Die Seiten selbst haben ja auch eine Dateigröße.
Ist ein KEIN gutes Zeichen. Hier wurde der Exploit versucht, auch wenn der Shop mit 404 antwortet.GET ... /insert/.../tadminlogin...blabla... 404 7293 ...
Ist dagegen ein gutes Zeichen. Hier wurde der Login-Versuch mit einer Weiterleitung (falscher User/Passwort) beantwortetPOST /admin/index.php HTTP/1.1" 302 25
Hier wurden Spuren verwischt und der Admin-Account über die Lücke wieder gelöscht.GET ... /delete/.../tadminlogin...blabla... 404 7293 ...
Options -Indexes
<FilesMatch ".+\.ph(ar|(p[\d]?)|tml)$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
</IfModule>
</FilesMatch>
Nach unseren bisherigen Erkenntnissen lief der Angriff automatisiert und immer über das Verzeichnis /bilder/banner. Ein Vorhandensein der Backdoor in einem anderen Verzeichnis ist nach aktueller Kenntniss unwahrscheinlich, aber leider nicht ausgeschlossen. Das fehlen der Datei ist auch nicht automatisch Entwarnung, da der Angreifer im Erfolgsfall seine Spuren durch Löschen der Backdoor verwischt hat. Ein erfolgreicher / fehlgeschlagener Angriff kann daher leider nur durch Analyse der Server Access-Logs festgestellt werden.Aber im Ordner Bilder/Banner haben wir nachgesehen, dort ist keine PHP Datei.
Die könnte aber auch woanders sein?
Wir durchsuchen gerade den Shop4 Ordner nach allen .PhP Dateien.
Sonst ein Hinweis wie man die identifiziert?
Die Datei gehört da definitv nicht hin, ist aber nicht unbedingt schlecht. Die Datei ist z.B. auch noch vorhanden, wenn der Exploit aufgrund einer korrekten .htaccess in /bilder gescheitert ist. In dem Fall konnte der Angreifer die Backdoor zwar hochladen, aber nicht ausführen. Entscheidend ist hier eine Analyse des Server-Access- Log im Zeitraum vor und nach dem Datum der Erstellung der PHP-Datei.Eine .php Datei im Ordner Bilder/Banner ist also schlecht, bzw gehört da nicht hin?
Es genügt aber, wenn die .htaccess nur im Verzeichnis /bilder liegt - diese muss nicht im Unterverzeichnis /banner liegen - korrekt?hat, bzw. das die korrespondierenden Rules bei Verwendung eines NGINX-Servers aktiv sind.Apache config:Options -Indexes <FilesMatch ".+\.ph(ar|(p[\d]?)|tml)$"> <IfModule mod_authz_core.c> Require all denied </IfModule> <IfModule !mod_authz_core.c> Order Deny,Allow Deny from all </IfModule> </FilesMatch>