
Une extension Burp Suite implémentant le brouillon draft-ietf-httpbis-message-signatures-01 de la spécification Signing HTTP Messages.
HTTPSignaturesHTTPSignatures est une extension Burp Suite qui implémente le brouillon de spécification Signing HTTP Messages draft-ietf-httpbis-message-signatures-01.
Cela permet aux utilisateurs de Burp Suite de tester en toute transparence les applications qui nécessitent des signatures HTTP.
rsa-sha256 pour la signature des messages (RSASSA-PKCS1-v1_5 [RFC8017] utilisant SHA-256 [RFC6234]) et SHA-256 pour l'en-tête de digest.Téléchargez le fichier de la dernière version JAR et ajoutez-le dans Burp Suite via l'onglet Extender / Extensions / Add.
Header Name, le keyId et le Private key file name and path soient configurés. Voir ci-dessous pour la description détaillée.Header Name configuré.Après la configuration correcte de HTTPSignatures, l'extension Burp Suite remplacera la valeur de l'en-tête HTTP configurée dans le paramètre Header Name (par exemple Signature) par une nouvelle signature pour chaque requête HTTP envoyée via Burp Proxy, Repeater, Intruder et Scanner.

L'extension Burp Suite doit être configurée avant de pouvoir être utilisée.
La configuration de HTTPSignatures se trouve dans le menu Burp après son chargement (généralement à droite du menu Help).
Le Header Name, le keyId et le Private key file name and path doivent être correctement configurés pour que l'extension fonctionne.
Les paramètres restants peuvent être ajustés facultativement.
Header Name : (exemples de valeurs : Authorization, Signature) : Le nom de l'en-tête de requête HTTP qui contient la signature.
Le brouillon de l'IETF utilise le nom d'en-tête Signature. Oracle Cloud (OCI) utilise le nom d'en-tête Authorization.
keyId : Le paramètre keyId est une chaîne US-ASCII utilisée par un vérificateur pour identifier et/ou obtenir la clé de vérification de la signature.
Des exemples de valeurs peuvent ressembler à https://mastodon.example.com/users/myUser (pour ActivityPub) ou ocid1.tenancy.oc1.../ocid1.user.oc1.../{fingerprint} pour OCI.
Private key file name and path : Le chemin complet et le nom du fichier contenant la clé privée (par exemple /home/${USER}/private_key.pem).
Digest Header Name : Le nom de l'en-tête contenant le digest. Il doit s'agir soit de x-content-sha256 (pour OCI), soit de digest pour la plupart des autres implémentations.
La configuration de HTTPSignatures permet de configurer plusieurs profils dans des onglets.
Créez un nouvel onglet en cliquant sur l'onglet ....
Vous pouvez nommer les onglets en double-cliquant sur un onglet.
Pour enregistrer un onglet, cliquez sur le bouton "Save".
Pour marquer un onglet comme profil actif, cliquez sur le bouton "Use this profile".
L'onglet actif (profil) est marqué avec une police et une bordure rouges.
La section de configuration globale contient des paramètres qui s'appliquent à tous les profils.
Enable the extension for the following Burp Suite tools : L'extension peut être activée ou désactivée pour les outils Burp Suite suivants :
Le proxy est désactivé par défaut. Les autres outils sont activés par défaut. L'outil proxy ne devrait généralement être activé que lors de l'utilisation de la fonctionnalité d'interception. L'extension ne mettra pas à jour la signature lorsqu'elle est désactivée.
Enable Debug Logs : Activer cette case à cocher imprimera les journaux de débogage sur la sortie standard. La sortie peut être configurée dans Burp Suite sous Extender -> Extensions, puis sélectionnez l'extension Signing HTTP Messages. Dans l'onglet Output, vous pouvez sélectionner l'endroit où la sortie standard sera affichée. La valeur par défaut est Shown in UI, où la sortie sera affichée dans Burp Suite.
ActivityPub utilise les signatures HTTP pour l'authentification et l'autorisation de serveur à serveur.
Signaturehttps://mastodon.online/users/viktor.
Vous pouvez utiliser curl pour récupérer la clé : curl https://mastodon.online/users/viktor -H 'Accept: application/activity+json'|jq/home/user/private_key.pemdigestdate (request-target) hostdate (request-target) hostdate (request-target) hostdate (request-target) host content-length content-type digestdate (request-target) host content-length content-type digestToutes les requêtes API Oracle Cloud Infrastructure (OCI) exigent des signatures HTTP. L'implémentation est basée sur le brouillon de spécification avec quelques modifications.
Authorization<TENANCY OCID>/<USER OCID>/<KEY FINGERPRINT>, par exemple ocid1.tenancy.oc1..<unique_ID>/ocid1.user.oc1..<unique_ID>/<key_fingerprint>/home/user/private_key.pemx-content-sha256date (request-target) hostdate (request-target) hostdate (request-target) hostdate (request-target) host content-length content-type x-content-sha256date (request-target) host content-length content-type x-content-sha256trueHTTPSignatures dans IntelliJ IDEA.out/artifacts/HTTPSignatures_jar/HTTPSignatures.jar.mvn package assembly:single.target/HTTPSignatures-1.0-SNAPSHOT-jar-with-dependencies.jar.Trois dépendances sont nécessaires pour compiler le projet Java :
Header Names to Sign: GET : Les noms d'en-têtes à inclure pour les requêtes GET (par exemple date (request-target) host).
La valeur (request-target) est un identifiant spécial composé de la méthode de requête, du chemin et de la partie query de l'URI de la requête (par exemple get /foo?param=value).
Header Names to Sign: HEAD : Les noms d'en-têtes à inclure dans les requêtes HEAD (par exemple date (request-target) host).
Header Names to Sign: DELETE : Les noms d'en-têtes à inclure dans les requêtes DELETE (par exemple date (request-target) host).
Header Names to Sign: PUT : Les noms d'en-têtes à inclure dans les requêtes PUT (par exemple date (request-target) host content-length content-type digest).
Header Names to Sign: POST : Les noms d'en-têtes à inclure dans les requêtes POST (par exemple date (request-target) host content-length content-type digest).
Include query parameters in Signature : Cette valeur booléenne spécifie si les paramètres de requête (par exemple ?param=value) doivent être inclus dans la signature.
Bien que le brouillon de norme spécifie que les paramètres de requête font partie de l'identifiant (request-target), toutes les implémentations n'incluent pas les paramètres de requête.
La valeur par défaut est true.
Include the port in Signature : Certaines implémentations n'incluent pas le port dans l'en-tête host (par exemple localhost:8080).
Ce paramètre permet de supprimer le port de la valeur de l'en-tête host s'il est défini sur false.
La valeur par défaut est true.
truetruetrue