Web Security Testing Cookbook, Hope/Walter, eine Buchrezension
Jeder Penetrationstester von Webanwendungen ist schon einmal in die Lage gekommen, dass er bestimmte Vorgänge automatisieren möchte. Sei es in einer verzwickten Situation, in der es kein Tool für den speziellen Zweck gibt, oder in eine besonderen Konstellation, in der verschiedene Möglichkeiten einer Webanwendung ausgetestet werden, die nur über Authentifizierung erreichbar ist.
Das Buch von Hope & Walther will genau diese Lücke füllen. Der Untertitel liest sich „Systematic Techniques to Find Problems Fast“ und scheint auf Penetrationstests genau zugeschnitten. Ist es doch das Ziel, alle möglichen Sicherheitslücken einer Webanwendung, eines Webportals oder Webshops ausfindig zu machen. Als Zielpublikum werden jedoch hauptsächlich Entwickler und Softwaretester genannt, die sich der Sicherheit annehmen wollen.
In üblicher Manier der O’Reilly Cookbooks wird ein Kapitel pro Buch einem Problemfall gewidmet. Im Inhaltsverzeichnis erkennt der fachlich vorgebildete Leser, dass es hier richtig zur Sache geht.
Das erste Kapitel reicht von einer Vorstellung von verschiedenen Tools von Firefox und seinen Extensions bis hin zu Firebug, Nikto, Burp und Perl.
Einige Basics, wie HTML-Source, Live-Requests mit Firebug und Änderungen von Code mit TamperData, führen den Leser zügig an die Materie heran.
Im nächsten Kapitel werden verschiedene Encodings (Zeichenkodierungen) wie Base 64, Base 36, URL- und HTML-Zeichenkodierung, Zeitformate und ASP.NET behandelt, insbesondere, wie sie in Perl verwendet bzw. codiert und encodiert werden können. Perl ist übrigens die Skriptsprache der Wahl, in der die Beispiele des Buches umgesetzt werden.
In einem weiteren Kapitel kommen Tools zum Bulk-Scanning zum Einsatz, sprich WebScarab, LWP, wget, Nikto, WSFuzzer. Tipps und Tricks werden dazu erklärt und natürlich auch wieder, wie diese Programme geskriptet werden können. Das Ganze geschieht im Schnelldurchgang, ohne Schnörkel, aber so, dass es gut zu verstehen ist.
Bei weiteren Inhalten, wie „Tampering with Input“, geht es um die Eingabe und natürlich die Änderung, wie über Perl schnell Modifikationen durchgeführt werden können.
Immer stehen spezielle Fällen im Vordergrund, die meist über Perl realisiert werden. Zwar liegt das Erscheinungsdatum des Buchs schon etwas länger zurück und das eine oder andere Programm ist überholt, die Prinzipien bleiben jedoch bestehen.
Einige Beispiele aus dem Buch:
- Testing Session Fixation
- Uploading Malicious XML Structure
- Uploading Malicious ZIP Files
- Analyzing Session ID Expiration
- Stealing Cookies Using XSS
- Attacking AJAX
cURL kommt mit einem speziellen Kapitel zu tragen. Es wird demonstriert, wie das Paket für die verschiedensten Tests einzusetzen ist, wie z.B. Cross-Site-Scripting. Dabei gilt es natürlich, die Session-States zu beachten und diese zu skripten.
LibWWWPerl wird ebenso ein Kaptiel gewidmet. Es wird gezeigt, wie damit verschiedene Probleme elegant gelöst werden können. Hier befinden sich die längsten Code-Abschnitte (über zwei Seiten), die sich in den vorangegangenen Kapiteln jeweils nur über wenige Zeilen erstrecken. So werden Sessions mit korrektem Cookie-Handling für XSS- und SQL-Injections entwickelt.
Ein Kapitel über Design-Flaws, AJAX und Multifaceted Tests rundet das Buch ab, in dem für Penetrationstests viele Anregungen zu finden sind.
Das Buch liefert einen guten Einblick in Sicherheitsthemen von Websoftware und wie Lücken automatisiert ausgetestet werden können. Für Softwareentwickler dürfte wohl eher das OWASP Development Guide zielführend sein, da hier konkrete Howtos angeführt sind und wie die Software sicher zu entwickeln ist. Möchte sich eine Person in Themen von Penetrationstests von Webanwendungen einlesen, kann dies ein guter Einstieg sein. Themen werden anschaulich vermittelt, jedoch gibt es effizientere Lösungen, ohne ein eigenes Perl-Programm schreiben zu müssen. Hier ist dem Buch das Alter schon anzumerken.
Titel: Web Security Testing Cookbook
Autor: Paco Hope & Ben Walther
Verlag: O’Reilly
Erscheinungsdatum: 2009