
SignSaboteur ist eine Burp Suite Erweiterung zum Bearbeiten, Signieren und Verifizieren verschiedener signierter Web-Tokens.
SignSaboteur ist eine Burp Suite-Erweiterung zum Bearbeiten, Signieren, Verifizieren und Angreifen signierter Token. Es unterstützt verschiedene Arten von Tokens: Django TimestampSigner, ItsDangerous Signer, Express cookie-session middleware, OAuth2 Proxy, Tornado’s signed cookies, Ruby Rails Signed cookies, Ruby Rails Encrypted cookies, Nimbus JOSE + JWT und Unknown signed string.
Weitere Informationen über die Erweiterung finden Sie auf der Portswigger Research Blogbeitragsseite - Einführung von SignSaboteur: signierte Web-Tokens mühelos fälschen.
Es bietet automatische Erkennung und Inline-Bearbeitung von Tokens in HTTP-Anfragen/-Antworten und WebSocket-Nachrichten, Signieren von Tokens und Automatisierung von Brute-Force-Angriffen auf signierte Token-Implementierungen.
Es wurde von der JWT-Token-Erweiterung von Fraser Winterborn und Dolph Flynn inspiriert. Der ursprüngliche Quellcode kann hier und hier gefunden werden.
./gradlew jar aussign-saboteur-1.0.6.jar im Verzeichnis build/libs ablegenExtensions, Untertab Installed navigieren, auf Add klicken und die JAR-Datei laden
Die Wordlist View ermöglicht das Importieren von Secrets- und Salts-Listen-Dateien. Die Erweiterung verfügt über eigene vorgefertigte Wörterbuchlisten. Die meisten Secrets stammen von jwt-secrets. Optional kann die Flask-Unsign-Wordlist verwendet werden. Die Erweiterung unterstützt das JSON-String-Format für Sonderzeichen; um dies zu nutzen, setzen Sie die Secret-Zeichenkette in ".
Die Editor View unterstützt eine Reihe signierter Tokens: Django, Dangerous, Flask, Express, OAuth2 und Tornado. Sie ermöglicht die Änderung der signierten Tokens in der HTTP-Anfrage-/Antwort-Ansicht von Burp Suite in den Tools Proxy, History und Repeater.
Der Tab Dangerous kann sowohl für Flask- als auch Django-Tokens verwendet werden, die je nachdem ausgewählt werden, ob ein Dangerous- oder Django-Token erkannt wird.
Der Tab Unknown kann verwendet werden, um unbekannte signierte Zeichenfolgen per Brute-Force zu knacken. Der Raten-Modus funktioniert nur mit Balanced- und Deep-Brute-Force-Angriffen. Es unterstützt verschiedene Nachrichtenableitungsverfahren, darunter:
Ein JSON-Texteditor wird bereitgestellt, um jede Komponente zu bearbeiten, die JSON-Inhalt enthält:
Ein Zeitstempel-Editor wird bereitgestellt, um jede Komponente zu bearbeiten, die einen Zeitstempel enthält:
Ein Hex-Editor wird für alle signierten Tokens bereitgestellt, mit Ausnahme von Express-Signaturen. HINWEIS Der Express-Tab unterstützt noch keine automatische Aktualisierung der Signatur. Bitte kopieren Sie sie manuell in das entsprechende Signatur-Cookie.
Sign zeigt einen Signierdialog an, der verwendet werden kann, um die Signatur zu aktualisieren, indem das Token mit einem Schlüssel aus der Keys View signiert wird, der Signierfähigkeiten besitzt.
Brute force versucht, den geheimen Schlüssel zu finden, der für die Signaturerzeugung verwendet wurde. Wenn ein geheimer Schlüssel gefunden wurde, wird ein Dialog angezeigt.
Die Brute force-Option implementiert drei Arten von Angriffen auf signierte Token-Signaturen:
Die Attack-Option implementiert acht bekannte Autorisierungsangriffe auf signierte Tokens:
Diese werden im Folgenden genauer beschrieben.
Alle diese Angriffe können zusammen verwendet werden. Bitte beachten Sie, dass die Erweiterung keine Token-Payload-Modifikation im Angriffsmodus unterstützt, daher wird Ihre Payload durch eine neue ersetzt.
Das OpenID-Connect-ID-Token-Format wird normalerweise von Signierbibliotheken verwendet, um Informationen über den authentifizierten Benutzer zu speichern. Die Erweiterung generiert einen Platzhalter für das ID-Token des admin-Benutzers.
Gleiches wie der User claims-Angriff, legt es jedoch in das JSON-Attribut user.
Eine weitere gängige Methode zur Speicherung von Benutzerdetails sind die JSON-Attribute username und password. Die Erweiterung generiert einen Platzhalter für den admin-Benutzer.
Flask-authentifizierte Benutzersitzungsinformationen, die clientseitig gespeichert werden, sollten die JSON-Attribute id und _id sowie user_id oder _user_id enthalten. Die Erweiterung generiert eine Sitzung für den ersten Benutzer, normalerweise admin.
Das Express-Framework verwendet das JSON-Attribut passport zur Speicherung von Benutzerdetails. Die Erweiterung generiert einen Platzhalter für den admin-Benutzer.
Einige Frameworks verwenden möglicherweise den Wrapper account, um Informationen über den authentifizierten Benutzer zu speichern. Für die Ausnutzung kann es erforderlich sein, auch Authenticated claims zu verwenden.
Die Authenticated claims implementieren 12 bekannte Autorisierungsflags.
Die Option User access_token generiert ein JWT-OpenID-Connect-ID-Token, das mit demselben Schlüssel und demselben Hashing-Algorithmus signiert ist, ohne dass eine Schlüsselableitung durchgeführt wird.