Webseiten und Webapplikationen (Web Apps), wie Online Shops oder Online Banking sind mittlerweile essenzielle Bestandteile des Alltags vieler Internetnutzer. Für jedes Anliegen laden mittlerweile mehr als 1,9 Milliarden Webseiten mit verschiedenen Webanwendungen zur Interaktion ein. Web Apps müssen nicht heruntergeladen werden und können darum von fast jedem Gerät genutzt werden. Die ständige öffentliche Erreichbarkeit sorgt allerdings dafür, dass Webapplikationen besonders exponiert sind und somit ein beliebtes Angriffsziel für Hacker darstellen.
Ein Penetrationstest für eine Webapplikation identifizieren Schwachstellen von Webapplikationen. Er zeigt auf wie Sicherheitsrisiken behoben werden können, um die Erfolgswahrscheinlichkeit von Hacker angriffen zu reduzieren. Solche Schwachstellen in einer Web App kann z.B. eine Login Authentifizierung einer Banking App sein. Während eines Pentests führen IT Sicherheitsexperten eine realistische Simulation einer Hacking Attacke durch. Der Unterschied hierbei ist: Pentester identifizieren Schwachstellen, nutzen diese aber nicht für bösartige Zwecke aus.
Wie funktioniert eine Webapplikation?
Webanwendungen funktionieren nach dem Client-Server-Modell. Die Web App kann direkt genutzt werden, denn es ist kein Download nötig. Stattdessen werden die Webanwendung über einen Webserver gehostet. Sie können von jedem internetfähigem Endgerät (Client), welches in der Lage ist einen Browser wie Chrome, Safari oder Firefox zu benutzen, erreichet werden.
Die Wartung von Web Apps ist verhältnismäßig einfach, da die Applikation nicht auf tausenden Geräten, sondern auf einer Serverinfrastruktur läuft. Sie müssen also nur auf den gängigen Browsern verlässlich laufen. Das hat den Vorteil, dass weder viel Rechenleistung noch Speicherplatz auf dem Endgerät notwendig ist. Die wesentlichen Prozesse finden auf dem Webserver statt. Der Nutzer bedient das Interface des Browsers (Front-End), während seine Anfragen vom Server (Back-End) geprüft und beantwortet werden.
Die Kommunikation zwischen Endgerät, Webapplikation und Webserver ist ein sehr attraktives Ziel für Cyberkriminelle. Diese kann zu deren Gunsten ausgenutzt werden. Sicherheit sollte also oberste Priorität haben.
Warum ist ein Penetrationstest für Webapplikationen notwendig?
Cyberattacken steigen rasant an. Web Applikationen sind ein attraktives Ziel, da sie öffentlich zugänglich sind. Ein Web-App-Pentest hilft Schwachstellen zu identifizieren und zu schließen, sodass ein Hacker diese nicht ausnutzen kann.
Folgende Schwachstellen können z.B. in Web Apps auftreten:
- SQL-Injection – Verschafft Angreifern Zugang zur Datenbank einer Web App und erlaubt es Ihnen Daten unerlaubt zu modifizieren, da SQL-Anfragen nicht korrekt validiert werden können
- Cross-Site-Scripting (XSS) – Erlaubt es Hackern ihre eigenen Scripts in eine Webseite zu schleusen. Diese Scripts ermöglichen es Cookies, Session Tokens oder anderen sensiblen Informationen, welche der Browser oder die App benutzt, zu verändern.
Webapplikationen bzw. die dazugehörigen Server verwenden und speichern sensible Daten, wie z.B. Kontosalden, Namen und Adressen von Bankkunden. Ein erfolgreicher Cyberangriff gegen eine Webanwendung kann somit für Datenverluste und finanzielle Schäden sorgen. Ein Web-App-Pentest ermöglicht eine tiefgreifende und realistische Analyse der aktuellen Cybersicherheit einer Anwendung. Der Gesetzgeber hat aus diesem Grund Banken, Krankenhäuser, Energieversorger und andere Teile kritischer Infrastruktur verpflichtet, jährlich Penetrationstests für ihre IT-Infrastruktur und Webanwendungen durchzuführen.
Wie läuft der Penetrationstest einer Webapplikation ab?
Der Pentest einer Webapplikation läuft entsprechend der klassischen Pentesting-Schritte ab:
- Scoping: Festlegung der Testart, des Projektziels und der anfallenden Kosten.
- Reconnaissance: Aufspüren von passiven Informationen (OSINT) und aktiven Informationen über das Ziel.
- Vulnerability Assessment: Identifikation und Voreinschätzung der Schwachstellen.
- Exploitation: Ausnutzen der identifizierten Schwachstellen durch einen Penetrationstester.
- Post-Exploitation: Auswertung der Auswirkungen der Schwachstelle und deren Ausnutzbarkeit.
- Reporting: Detaillierte Dokumentation der Testergebnisse und Handlungsempfehlungen.
- Retest: Erneuter Test der behobenen Schwachstellen.
Eine detaillierte Beschreibung der einzelnen Phasen finden sie unter: Was ist ein Penetrationstest?
Was genau wird bei einem Web-App-Penetrationstest getestet?
Ein Web-App-Penetrationstest betrachtet die Sicherheit einer Webanwendung aus verschiedensten Perspektiven. Dies umfasst Testbestandteile, wie z.B. de Authentifizierungs- und Autorisierungsprozess, Input-Validierung oder Konfigurationsmanagement. Die bekannteste Testmethodik ist die der OWASP Stiftung (Open Web Application Security Project). OWASP ist eine NGO, die es sich zur Aufgabe gemacht hat, die IT-Sicherheit von Software zu erhöhen.
Der Penetrationstest für Webapplikationen orientiert sich an Richtlinien, wie z.B. dem OWASP-Testverfahren. Die OWASP-Stiftung bietet vor allem methodische Inhalte zum Thema Anwendungssicherheit an. Sie veröffentlicht regelmäßig einen Test-Guide für Penetrationstests von Web Apps und mobilen Apps. Außerdem stellen sie in unregelmäßigen Abständen eine Liste der häufigsten Schwachstellen vor:
- Broken Access Control – Erlaubt es gesperrte Ressourcen oder Funktionen auszunutzen.
- Kryptografische Fehler – Fehler in der Verschlüsselung legen sensible Kommunikation und Daten offen.
- Injection – Datenpakete werden unzureichend validiert, wodurch Scripts injiziert werden können
- Unsicheres Design – Die Architektur der App ist fehlerhaft, was zu Schwachstellen führt.
- Fehlerhafte Sicherheitskonfiguration – Unnötige Features und fehlende Sicherheitsmechanismen kompromittieren die Sicherheit.
- Anfällige und veraltete Komponenten – Veraltete Software mit bekannten Sicherheitslücken wird genutzt.
- Identifikations- und Authentifizierungsfehler – Schwache Passwörter oder Authentifizierung, die automatisierte Attacken erlaubt.
- Fehler in Software- und Datenintegrität – Quellen für Updates werden unzureichend verifiziert, was Angreifer ausnutzen können.
- Sicherheitsprotokollierungs- und Überwachungsfehler – Protokollierung und Überwachung sicherheitsrelevanter Ereignisse fehlt.
- Serverseitige Fälschung von Anfragen – Erlaubt es Angreifern ihre eigenen nicht autorisierten Anfragen über die Web App zu senden.
Ein seriöser Pentest nutzt diese Top Schwachstellen zwar als Basis seines Testverfahrens, testet aber trotzdem individuell darüber hinaus. Im folgenden Abschnitt erläutern wir zwei der Top drei Schwachstellen genauer.
Broken Access Control
Dieser Fehler wird auch als Authentifizierungs- bzw. Autorisierungsfehler bezeichnet und beschreibt eine Schwachstelle, die dafür sorgt, dass nicht berechtigte Nutzer Zugriff auf Inhalte haben, die z.B. einem Administrator vorbehalten sein sollten.
Während des Tests wird überprüft, ob ein unterprivilegierter Nutzer höhere Zugriffsberechtigungen bekommen kann, als ursprünglich in seiner Rolle verankert worden ist. Praktisch könnte dies bedeuten, dass ein Angreifer bei einer Broken-Access-Control-Schwachstelle die Rechte eines Admins ausnutzen kann, um Passwörter von Nutzern zurückzusetzen. Anschließend kann er diese neu vergeben und sich z.B. Zugang zu Konten oder sensiblen Daten verschaffen.
Injection
Der clientseitiger Input, also eine Anfrage an die Webapplikation, bildet die Basis für die Interaktion zwischen Client und Server. Damit die Sicherheit einer Webanwendung erhöht wird, ist es notwendig, clientseitige Anfragen zu validieren. Andernfalls kann ein Client manipulierte Anfragen an den Server schicken, um so Code zu injizieren, mit dem Ziel, die Antwort des Servers zu kontrollieren. Populäre Injection-Angriffe sind z.B. das Cross-Site-Scripting (XSS) oder die SQL-Injection. Durch eine eindeutige, serverseitige Sicherheitsprüfung von Nutzeranfragen kann das Risiko durch eine Injection-Attacke signifikant reduziert werden.
Welche Tools werden für einen Web-App-Penetrationstest genutzt?
Wenn eine Webanwendung durch einen Penetrationstester getestet wird, dann kommen unter anderem automatisierte Pentestingtools zum Einsatz. Sie haben im Wesentlichen drei Aufgaben:
- Informationsbeschaffung über die Infrastruktur, wie z.B. Ports, IPs, etc.
- Scannen nach potenziellen Schwachstellen, die weitere Analysen erfordern.
- In manchen Fällen auch das automatisierte Ausnutzen von Schwachstellen.
Wichtig zu verstehen ist, dass diese Tools niemals als Ersatz für das individuelle, detaillierte Vorgehen eines Pentesters angesehen werden dürfen. Sie haben eine wichtige Funktion innerhalb des Penetrationstests und helfen den Sicherheitsexperten schneller zu arbeiten. Genauso, wie ein Chirurg ein Skalpell braucht, benötigt ein Pentester Scanning-Tools.
Populäre und häufig verwendete Software-Tools für Web-App-Pentests sind Web-Application-Scanner und sogenannte Proxys, wie z.B. ZAP oder Burp Suite. Außerdem kommen Tools zur SQL-Injection Identifikation und Ausnutzung, wie z.B. SQLMap, zum Einsatz. In den nächsten Abschnitten werfen wir einen genauere Blick auf die Funktion dieser Programme.
Web-Application-Scanner und Proxys
Web-Application-Scanner ermöglichen es eine Webanwendung automatisiert auf Schwachstellen und Angriffsvektoren zu scannen und ggf. auch Angriffe im Rahmen der Exploitation-Phase durchzuführen. Dazu identifizieren Pentester zunächst die gesamte Struktur der Webseite. Basierend auf den gefundenen potenziellen Schwachstellen wird der weitere Test geplant.
Populäre Scanning-Tools für Webapplikationen sind das kostenlose Open-Source-Programme, wie OWASP ZAP (Zed Attack Proxy) und die kostenpflichtige Software Burp Suite. Die wichtigsten Funktionen von beiden Programmen sind:
- Automatisierte Scans – Automatisierte Analyse der Webanwendungen auf typische Schwachstellen.
- Manuelle Scans – Direkte Überprüfung von Sicherheitslücken.
- Proxy Server – Erstellung von Proxy-Servern, um HTTP- und HTTPS -Anfragen und -Antworten abzufangen.
- Fuzzing – Ungültige und unerwartete Anfragen an einen Webserver senden.
Beide Tools sind wichtige Hilfsmittel auf dem Weg eine Webapplikation sicherer zu machen, da sie das Testverfahren deutlich effizienter gestalten. Burp Suite kann gewissermaßen als der Industriestandard für Web-App-Penetrationstest-Toolkits gesehen werden und wird dementsprechend häufig in der Praxis verwendet.
Tools zur Identifikation und Exploitation von SQL Injections
Neben Cross-Site-Scripting sind vor allem SQL-Injections eine beliebte Methode von Cyberkriminellen, um Webanwendungen zu kompromittieren. Ein populäres Programm zum automatisierten Aufspüren von SQL-Injection Schwachstellen ist SQLMap.
Das sind die wichtigsten Funktionen der Software:
- Automatisierte Tests – SQLMap kann automatisierte Tests einer Webanwendung durchführen, um nach SQL-Injection-Schwachstellen zu suchen.
- Verschiedene Datenbanken – Die Software unterstützt eine Vielzahl von Datenbanken, wie MySQL, Oracle, MicrosoftSQL Server und PostgreSQL.
- Datenbankinhalte auslesen – Das Programm kann Benutzernamen, Passwörter, sowie Tabellen- und Spaltennamen aus einer Datenbank extrahieren oder die Datenbank vollständig auslesen.
- Unterstützung von Proxy Server – SQLMap unterstützt die Verwendung von Proxy-Servern, um den Datenfluss zwischen Webanwendung und Tool zu überwachen.
- Reporting – Es ist möglich automatisierte Zusammenfassungen über SQL-Injection Schwachstellen zu generieren.
Diese Funktionen machen SQLMap zu einem leistungsstarken Hilfsmittel für jeden Penetrationstester während eines Web-App-Pentests.
Fazit
Ein Penetrationstest für Webapplikationen kann entscheidende Sicherheitslücken im Applikationsdesign und der zugrundeliegenden Infrastruktur einer Web App offenlegen. Inhaltlich überprüft er eine Vielzahl von potenziellen Schwachstellen, wie z.B. eine fehlerhafte Authentifizierung und Autorisierung innerhalb der App.
Zum Repertoire vieler Pentester gehören OWASP ZAP, Burp Suite und SQLMap. Alle drei Programme automatisieren gewisse Teile des Pentests und erhöhen die Effizienz des Testprozesses. Die OWASP Stiftung hat zudem eine allgemein anerkannte Methodik veröffentlicht und gibt zudem die Top 10 Schwachstellen der letzten Jahre an.
Mit der wachsenden Bedrohung durch Cyberkriminalität sollten Penetrationstests für Webapplikationen essenzieller Bestandteil des Software-Development-Cycles sein. Das schützt Organisationen vor finanziellen Verlusten und Reputationsschäden.