Blog

Was ist Burp? – Burp und seine Funktionen

Was ist überhaupt Burp?

Burp von Portswigger ist das wichtigste Tool, wenn es um das manuelle Testen von Applikationen geht, die über HTTP(S) kommunizieren. Hierbei handelt es sich um einen Intercepting Proxy, welcher auch als freie Version all jenen zugänglich ist, die ihn nur ab und an brauchen, oder einfach mal ausprobieren wollen.  Burp kann hierbei eben nicht nur unverschlüsselte Verbindungen anzeigen, sondern stellt für beliebige angefragte Hostnamen auch eigene Zertifikate aus, um eine Man-In-The-Middle auf verschlüsselte Verbindungen zu gewährleisten. Auch in der Einstellungen des Proxies lassen sich diverse Optionen wählen, damit man Upstream Proxies ansprechen kann, oder auch nicht sichtbar zu sein für die anzugreifende Applikation.

Oberfläche von Burp

Burp ist nicht nur ein intercepting Proxy, sondern hat auch diverse andere hilfreiche kleine (und große) Funktionen, um einem das Leben zu erleichtern.

Wenn man die Burp das erste Mal öffnet, wird man erstmal von der Bedienoberfläche erschlagen, die auf den ersten Blick nicht sehr intuitiv wirkt und nach “New Design” schreit. Das Aussehen kann am besten in “User Options->Display->User Interface” angepasst werden, was ich jedem auch dringend raten würde, da “Metal” eine deutlich klarere Ansicht ist als “Nimbus”.

Veränderung des Look and feel des User-Interfaces

Burp hat einige Tabs, welche die jeweiligen Unterfunktionen in Burp darstellen. Auf einige dieser Funktionen, ich möchte sie mal als “Grundfunktionen” bezeichnen, gehen wir hier näher ein.

Tabs von Burp mit allen Hauptfunktionen

Proxy/History

Nach dem Starten von Burp läuft ein Proxy auf 127.0.0.1 Port 8080, so lange hier nicht schon ein anderer Dienst läuft. Dies lässt sich in den Optionen auch verändern oder noch weitere Proxies starten. Das ist die Hauptfunktion von Burp. Man kann Pakete abfangen, umändern und weiterleiten (Proxy) und auch alle abgefangenen Pakete nochmal ansehen und an Funktionen wie Repeater, Decoder, etc. zur weiteren Verarbeitung weitergeben.

 

Anzeige eines Paketes im Intercepting Proxy

In der Standardeinstellung werden nur Pakete abgefangen, welche vom Client zum Server geschickt werden. Dies kann aber schnell unter dem Reiter “Options” unter “Intercept Server Responses” eingestellt werden. Auch können hier weitere Regeln definiert werden, damit nicht alle Pakete durchgeklickt werden müssen, um an die wichtigen zu gelangen.

Einstellung um Response-Pakete zu intercepten

In den Optionen kann auch noch mehr eingestellt werden. Unter anderem lassen sich versteckte Textfelder automatisch anzeigen und hervorheben, “disabled” Attribute von Formfeldern sowie JavaScript entfernen etc.

Sollten diese Funktionen nicht ausreichen, können auch noch eigene Match-Replace-Regeln festgelegt werden, die dann in Request/Response zur Anwendung kommen.

Damit werden Pakete abgefangen und können verändert werden. Dieser Veränderungen werden auch in der Proxy History angezeigt.

Der Text wird einfach in einem normalen Textfeld, welches bearbeitbar ist, angezeigt. Content-Length und ähnliche Header werden automatisch angepasst, sollte man POST-Variablen austauschen. Alles in allem ist das Intercepten von HTTP-Protokollen in Burp sehr komfortabel.

Auch können über den “Action”-Button oder über einen einfachen Rechtsklick Pakete in jedes andere Tool von Burp geschickt werden, um so eine einfache Weiterverarbeitung zu gewährleisten.

Repeater

Der Repeater ist eine zweite wichtige Funktion innerhalb von Burp. Über die Tastenkombination “STRG+R” kann ein Paket an den Repeater geschickt werden. Alternativ kann man auch in der Anzeige des Pakets rechts klicken und sieht, wohin man dieses Paket überall schicken kann.

Senden eines Paketes an den Repeater über Rechtsklick

Im Repeater kann das Paket verändert und neu an den Server geschickt werden. Hiervon bekommt der Client nichts mit und die Anzeige wird nur innerhalb von Burp dargestellt.

Dadurch lassen sich relativ einfach Parameterveränderungen testen oder Sicherheitsmechanismen der Applikation umgehen, weil direkt mit dem Server gesprochen wird.

Veränderung eines Paketes im Repeater

Decoder

Der Decoder ist nicht sonderlich mächtig, aber erledigt kleinere Aufgaben, wie base64, gzip, Url encoding zuverlässig und ich möchte ihn nicht missen.

Decoder mit base64 kodierter String

Comparer

Um verschiedene Ausgaben nicht per Hand mühsam auf Veränderungen durchsuchen zu müssen, kann man über das Rechtsklickmenü mehrere Responses an den Comparer schicken und dort auf Wort oder Bytes vergleichen.

Der Vergleich wird übersichtlich in einem Hex- oder Text-Sync-View dargestellt. Veränderte Bytes sind markiert. Dadurch lässt sich schon nach wenigen Blicken feststellen, ob sich etwas verändert hat, wenn das Protokoll nicht gerade leserfreundlich ist.

Ansicht eines Paketes im Comparer mit Hex und Text View

Extender

Sollten einem die dargestellten Funktionen nicht genug sein, gibt es immer die Möglichkeit, Burp durch eigene Plugins zu erweitern. Durch den Extender kann man neben fertigen Burp Plugins auch selber geschriebene Erweiterungen laden. Damit kann man auf alle Funktionen innerhalb von Burp mit Hilfe von Java/Python/Ruby zugreifen. Meistens wird man aber im BApp-Store oder auf GitHub fündig, wenn man ein spezifisches Plugin sucht. 

Sollte mal nicht bereits ein Plugin existieren, kann es immer noch in eigener Regie geschrieben werden.

Fazit

Burp ist das Go-To-Tool, wenn es um das Abfangen von Paketen aus HTTP geht, da es von Haus aus mächtig und leicht zu erweitern ist.  Um sich in den Verkehr einer Applikation reinzuhängen und mitzulauschen, ist es perfekt. In diesem kurzen Stück habe ich nur die offensichtlichen Funktionen von Burp angerissen.

Nach der kleinen Einführung, was Burp ist und welche Funktionen es hat, möchten wir in einem folgenden Blogartikel darauf eingehen, wie man einen Browser so konfiguriert, dass er mit Burp spricht und aufzeigen, wie man Pakete verändert.

 

Menü