Mit einigen Tricks konnten Hacker die Shops einer verbreiteten E-Commerce-Plattform angreifen und dort Kreditkartendaten der Kunden abgreifen. Opfer einer solchen Attacke finden unter Umständen Spuren in den Logfiles.
Die PrestaShop-Applikation ist eine populäre E-Commerce-Plattform mit über 300 000 Installationen [1] (nach eigenen Angaben). Wie zahlreiche vergleichbare Shop-Systeme basiert PrestaShop auf der Programmiersprache PHP mit einer MySQL-Datenbank zum Ablegen der Daten. Zur Darstellung verwendet der Shop Smarty-Vorlagen.
Sicherheitslücken [2] in PrestaShop haben zur Folge, dass entfernte Angreifer an Kreditkartendaten von Kunden des Shops gelangen können. Die Schwachstelle beruht unter anderem auf Programmierfehlern, die es dem Angreifer erlauben, SQL-Injection-Attacken gegen den Shop auszuführen. Bei dieser Angriffsart liegt ein Fehler in dem Programm vor, das auf die Datenbank zugreift. Darüber kann der Angreifer dann per SQL-Anweisung direkt Befehle in die Datenbank einschleusen und unberechtigt ausführen. Je nach Art der Schwachstelle kann er so die Datenbank auslesen, Daten der Datenbank modifizieren oder Datenbankeinträge löschen. In besonders schwerwiegenden Fällen erhält der Angreifer vollen Zugriff auf den Datenbankserver.
Im vorliegenden Fall nutzen die Angreifer zunächst eine andere Schwachstelle. Sie senden zuerst eine HTTP-POST-Anfrage an den für die SQL-Injection-Attacke anfälligen Endpunkt. Rund einer Sekunde später schicken sie eine parameterfreie HTTP-GET-Anfrage an die Webseite. Das führt dazu, dass das System im Root-Verzeichnis des Shops eine PHP-Datei namens »blm.php« anlegt. Im letzten Schritt führt der Angreifer eine HTTP-GET-Anfrage für die neue PHP-Datei aus. Dadurch kann er dann Befehle auf dem System ausführen.
Um damit an die Kreditkartendaten von Kunden des Shops zu gelangen, muss der Angreifer im Folgenden ein Fake-Payment-Formular auf der Front-Office-Checkout-Seite des Shops einfügen. Kunden des Shops geben dann dort ihre Kreditkartendaten ein, ohne zu wissen, dass der Angreifer diese mitlesen und abfangen kann.
Diese Form der Attacke lässt sich relativ einfach nachweisen. Dazu muss der Administrator des PrestaShops lediglich die Log-Dateien des Servers unter die Lupe nehmen. Findet er dort Zeilen wie die aus Listing 1, war der Shop höchstwahrscheinlich Opfer eines Angriffs. Allerdings ist hier Vorsicht geboten. Das Angriffsmuster könnte auch anders ablaufen und andere oder auch keinerlei verdächtige Spuren hinterlassen.
Listing 1
Verräterisches Log
[14/Jul/2022:16:20:56 +0200] "POST /modules/XXX/XXX.php HTTP/1.1" 200 82772 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/602.2.14 (KHTML, like Gecko) Version/10.0.1 Safari/602.2.14" [14/Jul/2022:16:20:57 +0200] "GET / HTTP/1.1" 200 63011 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36" [14/Jul/2022:16:20:58 +0200] "POST /blm.php HTTP/1.1" 200 82696 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
Laut Entwicklerteam lassen sich Shops ab PrestaShop 1.6.0.10 angreifen. Versionen ab 1.7.8.2 sind gegen die Attacken abgesichert. Die Betreiber sollten die Shop-Software aktualisieren und dafür sorgen, dass alle Module des Shops auf dem aktuellen Stand sind, um potenzielle SQL-Injection-Einfallstore zu schließen.
Außerdem empfiehlt es sich, im Shop das MySQL-Smarty-Cache-Storage-Feature zu deaktivieren, da die Angriffskette Teile davon umfasst. Das Feature lässt sich in der Datei »config/smarty.config.inc.php« deaktivieren. Dazu entfernt der Admin in dieser Datei die Zeilen 43 bis 46 (PrestaShop 1.7) beziehungsweise 40 bis 43 (PrestaShop 1.6). Sie enthalten den Inhalt in Listing 2 gezeigten Code. Durch diesen Workaround kann der Administrator potenzielle Attacken abwehren.
Listing 2
Anfälliges Feature deaktivieren
if (Configuration::get('PS_SMARTY_CACHING_TYPE') == 'mysql') {
include _PS_CLASS_DIR_.'Smarty/SmartyCacheResourceMysql.php';
$smarty->caching_type = 'mysql';
}
Infos
- Infos zu PrestaShop: https://www.prestashop.com/de/uber-uns
- Aktuelle Sicherheitslücke: https://build.prestashop.com/news/major-security-vulnerability-on-prestashop-websites/






