Tobias Zander Security im E-Commerce Absicherung von Shopsystemen wie Magento, Shopware und OXID schnell+kompakt
Tobias Zander Security im E-Commerce Absicherung von Shopsystemen wie Magento, Shopware und OXID schnell+kompakt ISBN: 978-3-86802-316-9 2014 entwickler.press ein Imprint der Software & Support Media GmbH http://www.entwickler-press.de http://www.software-support.biz Ihr Kontakt zum Verlag und Lektorat: lektorat@entwickler-press.de Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar. Lektorat: Theresa Vögle Korrektorat: Frauke Pesch Copy-Editor: Nicole Bechtel Satz: Dominique Kalbassi Umschlaggestaltung und Titelbild: Maria Rudi Alle Rechte, auch für Übersetzungen, sind vorbehalten. Reproduktion jeglicher Art (Fotokopie, Nachdruck, Mikrofilm, Erfassung auf elektronischen Datenträgern oder andere Verfahren) nur mit schriftlicher Genehmigung des Verlags. Jegliche Haftung für die Richtigkeit des gesamten Werks, kann, trotz sorgfältiger Prüfung durch Autor und Verlag, nicht übernommen werden. Die im Buch genannten Produkte, Warenzeichen und Firmennamen sind in der Regel durch deren Inhaber geschützt.
Inhaltsverzeichnis Inhaltsverzeichnis Vorwort 11 1 Sicher, aber wo anfangen? 13 1.1 Die Lage der Nation 13 1.1.1 NSA 13 1.1.2 Ponemon Institute 14 1.1.3 Forrester 14 1.2 OWASP 15 1.2.1 Wiki 16 1.2.2 Chapters 16 1.2.3 Top 10 17 1.3 CWE/SANS Top 25 18 1.4 PCI DSS 20 2 Cross-Site Scripting 23 2.1 Die Gefahr 23 2.1.1 Defacing 23 2.1.2 Datenmanipulation 24 2.1.3 Datenspionage 25 2.1.4 XSS-Proxy 25 2.1.5 Angriff auf Drittsysteme 26 schnell + kompakt 5
Inhaltsverzeichnis 2.2 XSS-Typen 26 2.2.1 Type 0/DOM-based XSS 26 2.2.2 Type 1/nicht persistente Schwachstelle 28 2.2.3 Type 2/persistente Schwachstelle 29 2.3 Escaping 31 2.3.1 Der richtige Zeitpunkt 31 2.3.2 Kontext 32 2.3.3 HTML-Attribute und -Text 33 2.3.4 JavaScript 37 2.3.5 jquery 39 2.3.6 URLs 40 2.4 HTMLPurifier 42 2.5 Template Engine 43 2.6 Same Origin Policy 45 2.7 Content Security Policy 48 2.8 XSS Protection Header 50 3 Eingabevalidierung 51 3.1 Injection 51 3.1.1 SQL Injection 52 3.1.2 Mail Header Injection 60 3.1.3 File Injection 61 3.1.4 Code Injection 63 3.1.5 Reguläre Ausdrücke 67 3.1.6 Sonstige Interpreter 68 6
Inhaltsverzeichnis 3.2 Plausibilitätsprüfungen 69 3.2.1 E-Mail 69 3.2.2 filter_var 70 3.2.3 Buffer Overflow 72 3.3 Cross-Site Request Forgery 73 3.3.1 Was ist CSRF? 73 3.3.2 One-Time Token 75 3.3.3 XSS-/CSRF-Kombination 76 3.3.4 Authentication 78 3.4 File Uploads 80 3.4.1 $_FILES 80 3.4.2 Dateigröße 81 3.4.3 is_uploaded_file 82 3.4.4 Mime-Type 82 3.4.5 getimagesize 83 3.4.6 move_uploaded_file 83 4 Verarbeitung 85 4.1 Access Level Control 85 4.2 Broken Authentication 86 4.2.1 Adobe-Hack 86 4.2.2 Passwortstärke 87 4.2.3 Brute Force 88 4.3 Broken-Session-Management 88 4.3.1 Session-Hijacking 89 4.3.2 Session-Fixation 91 4.3.3 Sessionkonfiguration 94 schnell + kompakt 7
Inhaltsverzeichnis 4.4 Password Storage 95 4.4.1 Password-API 95 4.4.2 Rainbow Tables 98 4.5 Objektreferenzen 100 4.5.1 File Inclusion 102 4.5.2 Redirects 105 4.6 Security Misconfiguration 106 4.6.1 Setup-Skripte 106 4.6.2 Apache-Konfiguration 106 4.6.3 nginx-konfiguration 107 4.6.4 php.ini 108 4.6.5 iniscan 109 4.6.6 HTTPS-Konfiguration 110 4.6.7 Suhosin 110 4.6.8 Datenbank 111 4.6.9 DoS 112 5 Ausgabe von Daten 115 5.1 Sensitive Data Exposure 115 5.2 Error Handling 116 5.3 Clickjacking 117 5.4 Pixel Perfect Timing 120 8
Inhaltsverzeichnis 6 Frameworks 125 6.1 Magento 126 6.1.1 SQL 126 6.1.2 HTML Escaping 129 6.1.3 CSRF 130 6.1.4 PCI 132 6.2 Magento 2 132 6.2.1 SQL 132 6.2.2 HTML Escaping 133 6.3 Shopware 133 6.3.1 SQL 133 6.3.2 HTML Escaping 135 6.4 OXID 136 6.4.1 SQL 136 6.4.2 HTML Escaping 136 7 Tools 137 7.1 Zed Attack Proxy 137 7.2 Metasploit 141 7.3 WireShark 143 7.4 BeEF 145 Stichwortverzeichnis 151 schnell + kompakt 9
Vorwort Vorwort Zunächst einmal vielen Dank, dass Sie sich für dieses Buch entschieden haben, das Ihnen helfen soll, Ihr E-Commerce-Projekt sicherer zu machen und sich vor Angriffen zu schützen. Zwar fokussiert sich das Buch auf E-Commerce, um zum einen gute praktische Beispiele zu zeigen und zum anderen auch auf Spezialfälle wie das Handling von Kreditkarten einzugehen. Allerdings ist ein Großteil des Buches auch für jede andere Webanwendung relevant, auch wenn diese nichts mit E-Commerce zu tun hat. So sollten Sie auch für ein CMS, einen Blog oder eine Intranetanwendung sehr wichtige Informationen bekommen. Das Buch beruht zunächst auf meiner eigenen Erfahrung als Webentwickler und CTO. So habe ich in den letzten Jahren nicht nur zahlreiche Websysteme gesehen, sondern sicherlich auch selbst nicht immer alles richtig gemacht, dadurch aber eine Menge gelernt. Des Weiteren wird das Buch angereichert durch Recherchen und Feedback, das ich im Zuge einer Reihe von Security Talks erhalten habe. Sie werden in den Codebeispielen vor allem PHP- oder JavaScript- Code finden, allerdings stehen ähnliche Funktionalitäten in jeder anderen Programmiersprache zur Verfügung. schnell + kompakt 11
Vorwort Ein besonderer Dank geht an meinen Arbeitgeber, die Sitewards GmbH, die sich als E-Commerce-Spezialist einen Namen gemacht und mich stark unterstützt hat, damit ich dieses Buch schreiben konnte. Insbesondere geht mein Dank an Constantin Kammerer, der sich für die Visualisierung einiger Probleme ins Zeug gelegt hat. Des Weiteren möchte ich mich für die Geduld meiner Frau Nicole bedanken, mit der ich aufgrund der Arbeiten an dem Buch noch weniger Zeit verbringen konnte. So, nun soll es aber losgehen, ich wünsche Ihnen viel Spaß beim Lesen und beim Entdecken der Aha-Effekte auf den folgenden Seiten. Sollten Fragen aufkommen, erreichen Sie mich am besten auf Twitter als @airbone42 oder via E-Mail unter tobias.zander@ sitewards.com. 12
KAPITEL 1 Sicher, aber wo anfangen? In diesem Kapitel geht es zunächst um die Definition von Sicherheit. Wer entscheidet eigentlich, was sicher ist? Welche Organisationen und Dokumente gibt es und wo können Sie diese finden und Unterstützung erhalten? 1.1 Die Lage der Nation 1.1.1 NSA Es ist wohl aktuell kaum möglich, ein Buch über Websecurity zu schreiben, ohne zumindest kurz auf die Vorkommnisse einzugehen, die quasi die ganze Welt aufgeweckt haben. Dass viele Webserver und deren Software heutzutage nicht wirklich sicher sind, ist kein großes Geheimnis, und je mehr Aufwand man betreibt, desto größer wird die Wahrscheinlichkeit, dass man auch Zugriff auf ein System bekommt. Doch was wirklich klar wurde, ist, dass kein System wirklich sicher ist. Je nach Höhe der Mittel, die dem Angreifer zur Verfügung stehen, ist der Kampf nahezu aussichtslos. Das ist aber kein Grund, die Flinte ins Korn zu werfen, denn auch wenn man sich gegenüber mächtigen Institutionen wie der NSA nicht wirklich absichern können wird, so gibt es auch zahlreiche weitere Gefahren, z. B. Scriptkiddies, Trickbetrüger oder schnell + kompakt 13
Sicher, aber wo anfangen? die Konkurrenz, die Interesse an meinen Daten hat oder sich einen Vorteil davon erhofft, meinem Ruf zu schaden. 1.1.2 Ponemon Institute Doch nicht erst seit dem NSA-Skandal ist Security wieder ein Thema. Erst kürzlich wurde vom Ponemon Institute eine Umfrage veröffentlicht, in der 73 Prozent der befragten Unternehmen zugaben, mindestens einmal in den letzten zwei Jahren gehackt worden zu sein. Dabei ist es auch interessant, dass vielen gar nicht bekannt ist, welcher finanzielle Schaden dadurch entstanden ist bzw. entstehen kann. 47 Prozent der Befragten schätzten die Kosten auf 100 000 bis 500 000 $. Ein Viertel der Befragten konnte gar keine Schätzung dazu abgeben. Zudem gaben 88 Prozent der Teilnehmer an, dass ihr Kaffeebudget in der Firma (im Schnitt 30 $ pro Mitarbeiter pro Monat) höher ist als das der Web Application Security. Das komplette Ergebnis der Umfrage können Sie unter https:// www.barracuda.com/assets/docs/white_papers/barracuda_web_ app_firewall_wp_cenzic_exec_summary.pdf nachlesen. 1.1.3 Forrester Auch Forrester veröffentlicht regelmäßig Statistiken und Umfragen zum Thema Websecurity. Interessant ist dabei u. a., dass 70 Prozent aller Sicherheitslücken auf dem Web Application Layer zu finden sind, also in der Software, die wir entwickeln und für die wir selbst verantwortlich sind! Auch geht aus den Ergebnissen der Umfragen immer wieder hervor, dass die größte Herausforderung bei der Entwicklung von 14
OWASP sicherer Software das Finden von geschultem Personal in ausreichender Menge ist. Es reicht leider nicht, einen Experten im Team zu haben, sondern bereits bei der Planung der Architektur und später bei der Implementierung jedes einzelnen Moduls muss darauf geachtet werden. Und am Ende, wenn etwas schief geht, interessiert es niemanden, wer den Fehler implementiert hat. Daher ist es an uns, das entsprechende Wissen auch weiterzugeben und ständig auf dem aktuellen Stand zu bleiben. Sie haben nun erfahren, dass es 100 Prozent Sicherheit nicht geben kann. In den folgenden Kapiteln wollen wir uns anschauen, wie man nun zumindest die wichtigsten Maßnahmen ergreifen kann. 1.2 OWASP Das Open Web Application Security Project (OWASP) ist eine der wichtigsten Institutionen, die das Thema Web Security stark vorantreibt. Der Grundsatz ist es, Web Security sichtbar zu machen, was dadurch geschieht, dass viele Beiträge zu den Themen geschrieben, und auch entsprechende Videos zu bestimmten Themen produziert oder von Vorträgen aufgezeichnet werden. Abbildung 1.1: Das Logo der OWASP Die OWASP ist eine Non-Profit-Vereinigung, es steht keine Firma dahinter, was einerseits die Unabhängigkeit gewährleistet, doch andererseits ist es natürlich nicht immer einfach, die nötigen Gelder aufzutreiben. schnell + kompakt 15
Sicher, aber wo anfangen? Es gibt zudem eine ganze Liste an Projekten, wie z. B. ein XSS- Tool, das Zed Attack Proxy (Kapitel 7.1) oder Webgoat, eine Webanwendung, die absichtlich unsicher programmiert wurde, um so eine praktische Anleitung zu bieten, sichereren Code zu schreiben. 1.2.1 Wiki Einer der Hauptbestandteile ist sicherlich das Wiki, zu finden unter http://www.owasp.org. Dort sind über 1 000 Mitglieder aktiv und pflegen die Seiten zu den diversen Projekten. Einziger Nachteil ist, dass das Wiki durch die große Menge an Beiträgen ein wenig unübersichtlich geworden ist, doch aufgrund der zahlreichen Verlinkungen findet man selbst mit der Google-Suche relativ schnell den entsprechenden Content. Besonderes Augenmerkt sollte u. a. auf die Cheat Sheets geworfen werden, die begleitend zu diesem Buch eine sehr gute Hilfe bieten, wie man sich gegen einige Sicherheitsprobleme schützen kann. 1.2.2 Chapters Die Organisation unterteilt sich in verschiedene Chapters, meist nach Ländern getrennt und über den ganzen Globus verteilt. Zudem hat zum Beispiel der Germany Chapter weitere Unterteilungen in diverse lokale Gruppen, wie z. B. Rhein-Main-Gebiet oder Hamburg. Diese Chapters treffen sich dann in regelmäßigen Abständen und tauschen sich über aktuelle Sicherheitsthemen aus. Die meisten Mitglieder kommen bisher aus der Java-Welt, doch auch PHP- oder Ruby-Entwickler sind herzlich willkommen. Ich als PHP-Entwickler wurde zunächst zwar belächelt, doch ich wurde sehr schnell akzeptiert, nachdem ich gezeigt habe, dass auch uns das Thema ernst ist! 16
OWASP Zudem gibt es auch zahlreiche Mailing-Listen zu diversen Themen, in die man sich einschreiben und an denen man auch aktiv teilnehmen kann. Zudem werden Events gemeinnützig veranstaltet. Die bekannteste europäische Veranstaltung ist dabei sicherlich die AppSecEU, die 2013 in Hamburg stattfand und im Juni 2014 in Cambridge stattfinden wird. Die Liste der Speaker ist international und hochkarätig besetzt. 1.2.3 Top 10 Doch was sind überhaupt die wichtigsten Sicherheitsprobleme? Dieser Frage hat sich die OWASP mit ihrem wohl bekanntesten Projekt der OWASP Top 10 gewidmet, wo bisher alle drei Jahre eine Liste der riskantesten Sicherheitslücken erstellt wurden. Die aktuelle Version wurde 2013 veröffentlicht, und um nicht nur aufzuzeigen, wie groß der technische Impact ist, wurde eine Einstufung nach Risiken vorgenommen. Hier ist unter anderem auch die wirtschaftliche Sicht berücksichtigt: Wie hoch ist der finanzielle Schaden? Kann das Ausnutzen der Lücke zu einem Reputationsverlust führen? Wie viele persönliche/sensitive Daten können veröffentlicht werden? Neben der globalen Top-10-Liste gibt es auch noch einen Ableger für Mobile Development, der sich speziell an Produzenten für mobile Apps richtet, und aktuell ist eine OWASP Top 10 für Entwickler in Arbeit, die sich speziell an Entwickler richtet und u. a. auch mit mehr technischem Background und Codebeispielen in möglichst vielen Sprachen aufwarten soll. schnell + kompakt 17