HTTPSignatures Burp Suite 扩展HTTPSignatures 是一个 Burp Suite 扩展,实现了 Signing HTTP Messages draft-ietf-httpbis-message-signatures-01 规范草案。
这使得 Burp Suite 用户能够无缝测试需要 HTTP Signatures 的应用程序。
rsa-sha256 算法对消息进行签名(RSASSA-PKCS1-v1_5 [RFC8017],使用 SHA-256 [RFC6234]),并支持使用 SHA-256 生成摘要头。下载最新的 JAR 发行版文件,然后通过 Extender 选项卡 / Extensions / Add 将其添加到 Burp Suite 中。
Header Name、keyId 和 Private key file name and path。详见下文说明。Header Name 的请求创建新的签名。在 HTTPSignatures 正确配置后,该 Burp Suite 扩展会将 Header Name 设置中配置的 HTTP 头值(例如 Signature)替换为新的签名,适用于通过 Burp Proxy、Repeater、Intruder 和 Scanner 发送的每个 HTTP 请求。

Burp Suite 扩展必须先进行配置才能使用。
HTTPSignatures 的配置可以在加载后于 Burp 菜单中找到(通常在 Help 菜单的右侧)。
必须正确配置 Header Name、keyId 和 Private key file name and path,扩展才能正常工作。
其余设置可根据需要调整。
Header Name:(示例值:Authorization、Signature):包含签名的 HTTP 请求头的名称。
IETF 草案使用 Signature 作为头名称。Oracle Cloud (OCI) 使用 Authorization 作为头名称。
keyId:keyId 参数是一个 US-ASCII 字符串,验证方使用它来识别和/或获取签名的验证密钥。
示例值可以类似于 https://mastodon.example.com/users/myUser(用于 ActivityPub)或 ocid1.tenancy.oc1.../ocid1.user.oc1.../{fingerprint}(用于 OCI)。
Private key file name and path:包含私钥的完整路径和文件名(例如 /home/${USER}/private_key.pem)。
Digest Header Name:包含摘要的头的名称。应为 x-content-sha256(用于 OCI)或大多数其他实现使用的 digest。
Header Names to Sign: GET:GET 请求中要包含的头名称(例如 date (request-target) host)。
(request-target) 值是一个特殊标识符,由请求方法以及请求 URI 的路径和查询组成(例如 )。
HTTPSignatures 配置允许在选项卡中配置多个配置文件(profiles)。
点击 ... 选项卡可创建新选项卡。
双击选项卡可为其命名。
点击 "Save" 按钮保存选项卡。
要将某个选项卡标记为活动配置文件,请点击 "Use this profile" 按钮。
活动选项卡(配置文件)以红色字体和边框标记。
全局配置部分包含适用于所有配置文件的设置。
Enable the extension for the following Burp Suite tools:可为以下 Burp Suite 工具启用或禁用扩展:
Proxy 默认禁用。其他工具默认启用。Proxy 工具通常只应在使用拦截功能时启用。当扩展被禁用时,它不会更新签名。
Enable Debug Logs:启用此复选框会将调试日志打印到标准输出。 输出可以在 Burp Suite 的 Extender -> Extensions 中配置,然后选择 Signing HTTP Messages 扩展。 在 Output 选项卡中,您可以选择标准输出的显示位置。 默认是 Shown in UI,即输出将显示在 Burp Suite 内部。
ActivityPub 使用 HTTP Signatures 进行服务器到服务器的认证和授权。
Signaturehttps://mastodon.online/users/viktor。
您可以使用 curl 检索密钥: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 digest所有 Oracle Cloud Infrastructure (OCI) API 请求都要求使用 HTTP Signatures。 该实现基于草案规范并做了一些修改。
Authorization<TENANCY OCID>/<USER OCID>/<KEY FINGERPRINT>,例如 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 文件夹。out/artifacts/HTTPSignatures_jar/HTTPSignatures.jar。mvn package assembly:single 编译项目并创建 JAR 文件。target/HTTPSignatures-1.0-SNAPSHOT-jar-with-dependencies.jar。构建该 Java 项目需要三个依赖项:
get /foo?param=valueHeader Names to Sign: HEAD:HEAD 请求中要包含的头名称(例如 date (request-target) host)。
Header Names to Sign: DELETE:DELETE 请求中要包含的头名称(例如 date (request-target) host)。
Header Names to Sign: PUT:PUT 请求中要包含的头名称(例如 date (request-target) host content-length content-type digest)。
Header Names to Sign: POST:POST 请求中要包含的头名称(例如 date (request-target) host content-length content-type digest)。
Include query parameters in Signature:该布尔值指定是否应将查询参数(例如 ?param=value)包含在签名中。
虽然草案标准规定查询参数是 (request-target) 标识符的一部分,但并非所有实现都包含查询参数。
默认值为 true。
Include the port in Signature:某些实现不在 host 头中包含端口(例如 localhost:8080)。
如果此设置设为 false,则允许从 host 头值中移除端口。
默认值为 true。
truetruetrue