Burp Bambdas & BChecks - Neuerungen in den letzten Monaten

Burp Bambdas & BChecks

Neuerungen in den letzten Monaten

Ralph Meier
von Ralph Meier
am 11. Januar 2024
Lesezeit: 11 Minuten

Keypoints

So verwenden Sie Bambdas und BChecks

  • Durch Bambdas die HTTP Proxy History, Websockets History oder den Logger besser filtern
  • Burp Suite mit eigenen Scanchecks mittels des Features BChecks erweitern
  • Bambdas wird in Zukunft an weiteren Orten in Burp Suite einsetzbar sein
  • Bambdas und BChecks können das Entwickeln einer Extension je nach Funktionsumfang ersetzen

In unseren Web Application Penetration Tests verwenden wir hauptsächlich Burp Suite Professional als Machine-in-the-Middle Proxy, um uns bei unseren Tests zu unterstützen und diese so effektiver durchführen zu können. In den letzten Monaten kamen zwei grössere Features zu Burp Suite hinzu: Bambdas und BChecks. Im Rahmen dieses Artikels schauen wir uns diese zwei Neuerungen genauer an, deren Einsatzzweck und einige Einstiegsbeispiele.

Bamdbas

Die Bezeichnung Bambdas setzt sich aus einer Kombination von Burp und Lambda zusammen. Bambdas ermöglichen Anwender von Burp Suite ihr Tool beziehungsweise deren Funktionalität auf einfache Weise direkt auf der grafischen Benutzeroberfläche mittels Java Codestücken zu erweitern. PortSwigger möchte damit eine Möglichkeit bieten, Burp in sämtlichen Punkten von Benutzern erweitern zu können. Bisher war dies nur durch die Entwicklung von Burp Extensions möglich, welche mehr an Entwicklungs-Know-how wie zum Beispiel den Umgang mit Build Tools wie Maven oder Gradle voraussetzten.

Aktueller Stand

Bambdas wurden mit der Veröffentlichung von Burp Suite Release 2023.10.3 eingeführt. Als erstes wurden Bambdas im Proxy Tab eingeführt und ermöglichen so das Filtern von HTTP Traffic. Somit brachte PortSwigger zuerst eine Erweiterung des HTTP History Filters. Ein Bambda wird an dieser Stelle auf ein HTTP History Item (requestResponse Item) angewendet und kann somit sämtliche Eigenschaften der durchgeführten Requests und dazugehörige Responses abfragen, filtern und hervorheben. Im bisherigen Filter der HTTP History konnten reguläre Ausdrücke eingesetzt werden, jedoch sind Bambdas deutlich mächtiger und umfangreicher. Nun ist es auch möglich, ein regulär konfigurierter Filter in ein Bambda zu konvertieren und dies mit Java Code zu erweitern. Im Bambda Mode lassen sich bereits fertige Bambdas hineinkopieren, aus Dateien importieren oder direkt im Editor entwickeln sowie zu einem späteren Zeitpunkt speichern. Zum Zeitpunkt dieses Labs wurden Bambdas im WebSockets Histroy Filter und in der Filterfunktion im Logger Tab in einer Early Adopter Version von Burp Suite bereits veröffentlicht. Der stable Release wird wohl in den kommenden Wochen folgen.

Anwendungsbereiche & Beispiele

Mit Bambdas im Proxy HTTP Traffic Filter lassen sich spezifische Endpunkte, Requests mit Inputfelder, spezielle Header oder andere Anomalien aus allen History Items filtern und hervorheben. Damit lassen sich Sonderfälle einfach eingrenzen und anschliessend einzeln untersuchen. Da Bambdas aus Java Code sind, besteht die Möglichkeit von Exceptions bei der Ausführung. Im Falle von Exceptions wird dies in Burp angezeigt und beim Öffnen des Filters werden detailliertere Informationen inklusive StackTrace dargestellt.

Beispiel einer NullPointerException in einem Bambda

Mit Bambdas können zum Beispiel Requests welche /resources/ oder /image/ im Request Path beziehungsweise der URL enthalten ausgeblendet werden. Gleichzeitig können interessante History Items wie jene die /api im Request Path haben grün und solche die die /graphql beinhalten gelb eingefärbt werden. Im folgenden Beispiel werden noch zusätzlich History Items, welche im Request Path .js enthalten sind, in der Farbe Magenta eingefärbt.

String requestPath = requestResponse.request().pathWithoutQuery();

if(requestPath.isBlank()){
   return false;
}

if(requestPath.contains("/resources/") || requestPath.contains("/image/")){
   return false;
}

if(requestPath.contains("api")){
   requestResponse.annotations().setHighlightColor(HighlightColor.GREEN);
}

if(requestPath.contains("graphql")){
   requestResponse.annotations().setHighlightColor(HighlightColor.YELLOW);
}

if(requestPath.contains(".js")){
   requestResponse.annotations().setHighlightColor(HighlightColor.MAGENTA);
}

return true;

Bambdas können ebenfalls zum Filtern von eingesetzten Server-Response-Headern verwendet werden, wie zum Beispiel Server oder X-Powered-By. Anschliessend kann manuell geprüft werden, ob es sich bei dem Ergebnis um eine Offenlegung von Informationen handelt.

// in case of no response
if (!requestResponse.hasResponse()) {
   return false;
   }

var response = requestResponse.response();

// Header Server or X-Powered-By is present
if (response.hasHeader("Server") || response.hasHeader("X-Powered-By")){
   String headerServer = response.headerValue("Server");
   if(headerServer==null || headerServer.isBlank()){
      return false;
   }
} else {
   return false;
}

return true;

Im Vorstellungsartikel von PortSwigger zu Bambdas sind noch weitere Beispiele zu finden. PortSwigger führt zudem ein eigenes Github Repository für Bambdas, welches von Anwender gerne erweitert werden darf.

Zukünftige Entwicklung

In Zukunft möchte PortSwigger die Erweiterbarkeit von Burp mittels Bambdas an zusätzlichen Orten wie in die zentrale Suchfunktion integrieren. Ein Vorfiltern bei Intruder-Attacken ermöglichen, sowie Bambdas in den Capture Filter beim Logger und bei HTTP Listeners einbauen. Ziel soll es sein, mehrere einfache Bambdas kombinieren zu können, um so komplexe Aufgaben in einem Tool durchzuführen.

BChecks

Der in Burp Suite integrierte Scanner bringt bereits von Haus aus eine grosse Anzahl an Scanchecks für ein breites Spektrum von bekannten Schwachstellen wie SQL-Injections, Cross-Site-Scripting, XML-Injections und viele weitere. Mit BChecks soll der integrierte Scanner auf eine einfache Art direkt in Burp Suite selbst mit eigenen Checks erweitert werden können. Produktspezifische Schwachstellen sind in den mitgelieferten Scanchecks oft nicht enthalten, können daher mittels BChecks selbst hinzugefügt werden.

Aktueller Stand

Mit dem Release 2023.6.2 von Burp Suite wurden BChecks hinzugefügt. Diese befinden sich innerhalb des Extensions Tabs und können dort importiert, erstellt und verändert werden. Im letzten stable Release vor der Publikation dieses Artikels (2023.11.1.3) kam noch Syntax highlighting im BChecks Editor hinzu. Auch für BChecks pflegt PortSwigger ein Github Repository. Mit dem Early Adopter Release 2023.12.1 kam eine Formatier Funktion für BChecks hinzu, diese ist mittels Rechtsklick im Editor durchführbar.

Anwendungsbereiche & Beispiele

Mittels BChecks können Prüfpunkte für produktspezifische Schwachstellen erstellt werden, welche noch nicht in Burp Suite enthalten sind, einige Beispiel können im Artikel von PortSwigger gefunden werden. BChecks können auch eingesetzt werden, um nicht optimal gesetzte Server-Response-Header festzustellen, im folgenden Beispiel geht es um die Konfiguration des HTTP Strict-Transport-Security Header:

metadata:
   language: v2-beta
   name: "HSTS Header Check"
   description: "Checks used HTTP Strict-Transport-Security Header"
   tags: "passive"
   author: "rame"

given response then
   if "Strict-Transport-Security" in {latest.response.headers} then
     if ({latest.response.headers} matches "Strict-Transport-Security:\s*max-age\s*=\s*([3-9]{1}[0-9]{7,})") then
       if not({latest.response.headers} matches "preload") and
         not({latest.response.headers} matches "includeSubDomains") then
         report issue:
            severity: low
            confidence: firm
            detail: "Unsecure HSTS Header in use: no includeSubDomains and no preload set."
            remediation: "Include \"includeSubDomains; preload\" in HTTTP Strict-Transport-Security Header."
       else if not({latest.response.headers} matches "preload") then
         report issue:
            severity: low
            confidence: firm
            detail: "Unsecure HSTS Header in use: no preload set"
            remediation: "Include \"preload\" in HTTTP Strict-Transport-Security Header."
       else if not({latest.response.headers} matches "includeSubDomains") then
         report issue:
            severity: low
            confidence: firm
            detail: "Unsecure HSTS Header in use: no includeSubDomains set"
            remediation: "Include \"includeSubDomains\" in HTTTP Strict-Transport-Security Header."
       end if
     else then
       if not({latest.response.headers} matches "preload") and
         not({latest.response.headers} matches "includeSubDomains") then
          report issue:
            severity: medium
            confidence: firm
            detail: "Unsecure HSTS Header in use: max-age too short, no includeSubDomains and no preload set."
            remediation: "Set HTTTP Strict-Transport-Security to max-age=63072000; includeSubDomains; preload."
       else if not({latest.response.headers} matches "preload") then
         report issue:
            severity: medium
            confidence: firm
            detail: "Unsecure HSTS Header in use: max-age too short and no preload set."
            remediation: "Include \"preload\" and increase max-age in HTTTP Strict-Transport-Security Header."
       else if not({latest.response.headers} matches "includeSubDomains") then
         report issue:
            severity: medium
            confidence: firm
            detail: "Unsecure HSTS Header in use: max-age too short and no includeSubDomains set."
            remediation: "Include \"includeSubDomains\" and increase max-age in HTTTP Strict-Transport-Security Header."
       end if
     end if
   else then
     report issue:
       severity: medium
       confidence: firm
       detail: "No HTTP Strict Transport Header in use"
       remediation: "Set HTTTP Srict Transport Security to max-age=63072000; includeSubDomains; preload"
   end if

Bei der Entwicklung von BChecks kann die BCheck Definition Reference von PortSwigger enorm helfen, da sie einen guten Gesamtüberblick über die Möglichkeiten und Informationen über die notwendigen Teile eines BChecks enthält. Weitere Beispiele können im BChecks Repository von PortSwigger gefunden werden.

BChecks Testing Tool

Im Release 2023.10.2.2 von Burp Suite wurde die Möglichkeit BChecks zu testen ausgeliefert. Das Testen von erstellten oder importieren BChecks findet im BChecks Editor statt. Dafür werden History Items aus der HTTP Proxy History via Send to BCheck editor, was neu im Rechtsklick Kontextmenü in der HTTP Proxy History zu finden ist, als Test Case beim BChecks Editor hinzugefügt. Anschliessend kann im BCheck Editor der ausgewählte BCheck auf die selektierten Test Cases mittels Run Test angewendet werden. Das Ergebnis kann danach in den Tabs Audit items, Event Log, Logger und die aus dem BCheck erstellen Schwachstellen im Issue activity Tab angeschaut werden. Diese Testing Methode wurde eingeführt, um herauszufinden wieso false Positives aus einem BCheck entstehen und ihn dahingehend zu verbessern und einfach erneut anwenden zu können.

Zukünftige Entwicklung

Über die zukünftige Entwicklung und Erweiterung von BChecks ist aktuell nichts bekannt.

Fazit

Mit BChecks lassen sich schnell eigene Checks für produktspezifische Schwachstellen entwickeln und einsetzten. Die Einführung von Bambdas in Burp hilft Benutzern das Filtern von History Items exakter zu steuern und ihre persönlichen Vorlieben in der Hervorhebung einfach und automatisch durch den erstellten Bambdas umzusetzen. Die Einführung von Bambdas an weiteren Orten ist sehr vielversprechend und fördert kleine Automatisierungen und benutzerspezifische Anpassungen, ohne die Entwicklung von dedizierten Extensions vorzunehmen. Neben Bambdas und BChecks unterstützt Burp Suite auch Makros, damit hat sich Andrea im Artikel Burp Makros – Wie sie korrekt verwendet werden auseinandergesetzt.

Über den Autor

Ralph Meier

Ralph Meier hat eine Lehre als Applikationsentwickler, Fokus Webentwicklung mit Java, bei einer Schweizer Grossbank absolviert und danach einen Bachelor of Science ZFH in Informatik an der ZHAW School of Engineering abgeschlossen. Er fokussiert sich auf die sicherheitstechnische Untersuchung von Webapplikationen. (ORCID 0000-0002-3997-8482)

Links

Sie wollen die Sicherheit Ihrer Firewall prüfen?

Unsere Spezialisten kontaktieren Sie gern!

×
Dynamische Analyse von Android Apps

Dynamische Analyse von Android Apps

Ralph Meier

Disk Cloning

Disk Cloning

Ralph Meier

Das BIOS

Das BIOS

Ralph Meier

Flipper Zero

Flipper Zero

Ralph Meier

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv