Überprüfung von Webapplikationen
Der Aufbau von Webapplikationen wird zunehmend komplexer. Von der E-Mail-Platform bis hin zur Verwaltungssoftware werden wichtige und vor allem sicherheitskritische Programme in das Web respektive in den Browser verlagert. Da die Funktionalität der jeweiligen Anwendung für den Entwickler dabei in der Regel im Vordergrund steht, sind Sicherheitslücken und Schwachstellen buchstäblich vorprogrammiert.
Unabhängig davon, ob Ihre Anwendung öffentlich oder lediglich im Intranet verfügbar ist, kann ein Penetrationstest mögliche Schwachstellen und Programmierfehler aufdecken, um unberechtigten Zugriffen auf sensible Daten vorzubeugen. Angefangen bei der einfachen Homepage bis hin zum komplexen E-Commerce-Store, überprüfen wir in mehrstufigen Tests sowohl die Sicherheit Ihres zugrunde liegenden Webservers als auch der eigentlichen Webapplikation. Dabei werden aufbauend auf automatisierten Port- und Schwachstellenscans weiterhin anwendungsspezifische manuelle Tests durchgeführt, welche u.a. sämtliche Angriffe der OWASP-Top-10 enthalten.
Ermittlung verfügbarer Ports und Dienste
Der zugrunde liegende Webserver bietet mindestens einen Dienst zur Nutzung an, stellt in der Regel allerdings aufgrund von weiteren Internet-Anwendungen oder auch als Folge einer Fehlkonfiguration mehrere Ports zur Verfügung. Es wird in diesem Zusammenhang geprüft, ob Dienste veraltet oder falsch konfiguriert sind.
Auswertung von Fehlermeldungen
Gibt ein System Standardfehlermeldungen aus, werden in der Regel Informationen über die Infrastruktur oder über eingesetzte Programmversionen offen gelegt. Während des Penetrationstests wird daher detailliert nach Fehlermeldungen mit sensible Informationen gesucht.
Überprüfung der Verschlüsselung
Vertrauliche Daten wie z.B. Anmelde- oder Bankinfomationen sollten grundsätzlich verschlüsselt übertragen werden, um zu verhindern, dass Angreifer den Datenstrom abhören. Es wird daher geprüft, ob alle sensiblen Daten verschlüsselt übertragen und ob ausschließlich aktuelle und sichere Verschlüsselungsverfahren eingesetzt werden.
Überprüfung der Registrierung und Authentisierung
Bei zahlreichen Webseiten besteht die Möglichkeit, sich registrieren zu lassen und mit Hilfe einer Benutzerkennung spezielle Dienste zu nutzen. Im Rahmen des Penetrationstests wird daher die Art und Qualität der Registrierung und Authentisierung geprüft.
Ausweitung der Zugriffsrechte
Über Zugriffsrechte und deren Verwaltung wird sichergestellt, dass der Anwender nur Daten lesen und Funktionen ausführen kann, für die er berechtigt ist.
Mit Hilfe von internen und externen Suchfunktionen sowie der Manipulation von Parametern wird versucht, Zugriffsrechte zu umgehen. Im Rahmen einer horizontalen Rechteausweitung wird geprüft, ob auf Daten eines anderen Benutzers zugegriffen werden kann. Ebenso wird auf vertikaler Ebene versucht, Zugriff auf administrative Funktionen und Ressourcen zu erhalten. Über Path Traversal Angriffe wird der Zugriff auf Dateien und Verzeichnisse getestet, die nicht zur Veröffentlichung durch den Webserver vorgesehen sind.
Manipulation des Session-Managements
Das http-Protokoll, welches die Kommunikation des Anwenders mit dem Webserver steuert, ist per Definition ein zustandsloses Protokoll, d.h. der Zugriff auf den Webserver ist unabhängig von vorherigen Zugriffen des gleichen Anwenders. Interaktive Webanwendungen müssen daher eine Session-ID verwenden, um den Anwender über mehrere Zugriffe hinweg identifizieren zu können. Um zu vermeiden, dass ein Anwender die Identität eines anderen Nutzers vortäuscht und dessen Sitzung übernimmt, müssen die genutzten Session-IDs ausreichend zufällig sein.
Bei der Überprüfung des Session-Managements wird versucht, durch Veränderung der Verbindungsdaten (URL, Verbindungsparameter, SessionID) die Daten einer bestehenden Session zu verwenden und diese zu übernehmen.
Cross-Site-Scripting (XSS)
Beim Cross-Site-Scripting manipuliert der Angreifer eine Webseite und fügt neue Inhalte hinzu, die dann von einem anderen Benutzer gelesen werden. Wenn es sich bei dem eingefügten Inhalt um einen Programmcode, z.B. JavaScript, handelt, wird dieses Programm auf dem System des Benutzers ausgeführt.
Sofern die mit Schadcode versehene Webseite über einen Browser aufgerufen wird, der mit besonderen Sicherheitsrechten bzw. Privilegien ausgestattet ist, kann der installierte Schadcode in Abhängigkeit von dem Funktionsumfang der Skriptsprache mit den Rechten des lokalen Benutzers ausgeführt werden, möglicherweise sogar mit Administrator-Rechten. Selbst wenn der Browser ohne weitere Privilegien betrieben wird, können Cross-Site-Scripting-Angriffe dazu genutzt werden, die Session-ID eines Benutzers auszulesen.
Beim Cross-Site-Scripting wird zwischen Angriffen unterschieden, die vom Benutzer selbst durch den Aufruf von präparierten Links initiiert werden (reflected XSS) und Angriffen, die persistent im Webauftritt gespeichert sind und von jedem Besucher einer Webseite ausgeführt werden (stored XSS). Im Rahmen des Penetrationstestes werden beide Angriffstechniken getestet.
Cross-Site-Request-Forgery (CSRF)
Bei einer seitenübergreifenden Aufruf-Manipulation (Cross-Site-Request-Forgery) wird eine Aktion im Browser eines bereits angemeldeten Benutzers mit dessen Rechten ausgeführt. Ähnlich dem Cross-Site-Scripting wählt der Angreifer die Anfrage so, dass bei ihrem Aufruf die Webanwendung die vom Angreifer gewünschte Aktion ausführt. Dies könnte beispielsweise das Hinzufügen eines neuen Benutzers oder das Ändern des Kennwortes sein.
Injection
Injection ist ein Sammelbegriff für das Ausnutzen einer Sicherheitslücke, bei der Schadcode an eine Webapplikation übermittelt wird, welcher anschließend durch fehlerhafte Weiterverarbeitung oder unzureichende Überprüfung von Metazeichen durch den Webserver ausgeführt wird. Ziel ist es, Daten auszulesen, zu verändern oder Kontrolle über den Server zu erhalten. Während bei einer SQL-Injection versucht wird, Datenbankbefehle einzuschleusen, wird bei einer OS-Injection die Webapplikation dazu genutzt, Betriebssystembefehle mit den Rechten des Webservers auszuführen.
Bei einer Header-Injection wird der Responseheader manipuliert, um beispielsweise den Benutzer auf eine Phishingseite umzuleiten.
Die Anfälligkeit für Injections wird durch eine automatische und manuelle Eingabe von entsprechenden Zeichenketten z.B. im Anmeldefenster oder in Suchmasken überprüft.