SignSaboteur 是一个 Burp Suite 扩展,用于编辑、签名和验证各种已签名的 Web 令牌。
SignSaboteur 是一个 Burp Suite 扩展,用于编辑、签名、验证和攻击签名令牌。 它支持多种令牌类型:Django TimestampSigner、ItsDangerous Signer、Express cookie-session 中间件、OAuth2 Proxy、Tornado 签名 Cookie、Ruby Rails 签名 Cookie、Ruby Rails 加密 Cookie、Nimbus JOSE + JWT 以及未知签名字符串。
您可以在 Portswigger 研究博客文章页面上找到有关该扩展的更多信息 - Introducing SignSaboteur: forge signed web tokens with ease。
该扩展提供在 HTTP 请求/响应和 WebSocket 消息中自动检测并内联编辑令牌的功能, 以及对令牌进行签名并自动对签名令牌实现进行暴力破解攻击的功能。
它的灵感来源于 Fraser Winterborn 和 Dolph Flynn 的 JWT Token 扩展。原始源代码可以 在 这里 和 这里 找到。
./gradlew jarsign-saboteur-1.0.6.jar 放置在 build/libs 目录中Extensions 标签页的 Installed 子标签页,点击 Add 并加载 JAR 文件将其加载到 Burp 中
词表视图 允许导入密钥和盐值列表文件。该扩展自带预构建的字典列表。大多数
密钥取自 jwt-secrets。作为
选项,也可以使用 Flask-Unsign-Wordlist。扩展支持使用 JSON 字符串格式处理特殊字符,使用时需用 " 引用密钥字符串。
编辑器视图 支持多种签名令牌:Django、Dangerous、Flask、Express、OAuth2 和 Tornado。它允许
在 Burp Suite 的代理、历史和重放工具中的 HTTP 请求/响应视图中修改签名令牌。
Dangerous 标签页可用于 Flask 和 Django 令牌,具体取决于检测到的是 Dangerous 还是 Django 令牌。
Unknown 标签页可用于暴力破解未知签名字符串。猜测模式仅适用于 平衡 和 深度 暴力破解攻击。它支持不同的消息派生技术,包括:
提供了一个 JSON 文本编辑器来编辑每个包含 JSON 内容的组件:
提供了一个时间戳编辑器来编辑每个包含时间戳的组件:
为所有签名令牌(Express 签名除外)提供了十六进制编辑器。注意 Express 标签页尚不支持签名自动更新。请手动将其复制到相应的签名 Cookie 中。
签名 呈现一个签名对话框,可用于通过使用具有签名能力的 密钥视图 中的密钥对令牌进行签名来更新签名。
暴力破解 将尝试找到用于生成签名的密钥。如果找到了密钥,将弹出一个对话框。
暴力破解 选项实现了针对签名令牌签名的三种攻击类型:
攻击 选项实现了八种众所周知的针对签名令牌的授权攻击:
下面将更详细地描述这些攻击。
所有这些攻击都可以一起使用。请注意,扩展在攻击模式下不支持令牌 payload 修改,因此您的 payload 将被新的 payload 替换。
OpenID Connect ID 令牌格式通常被签名库用于存储经过身份验证的用户信息。
扩展将为 admin 用户 ID 令牌生成占位符。
与 用户声明 攻击相同,但将其放入 user JSON 属性中。
另一种存储用户详细信息的常见方式是 username 和 password JSON 属性。扩展将为 admin 用户生成占位符。
如果 Flask 经过身份验证的用户会话信息存储在客户端,则应包含 id、_id、user_id 或 _user_id JSON 属性。扩展将为第一个用户(通常是 admin)生成会话。
Express 框架使用 passport JSON 属性存储用户详细信息。扩展将为 admin 用户生成占位符。
某些框架可能使用 account 包装器来存储经过身份验证的用户信息。为了利用,可能还需要使用 已验证声明。
已验证声明 实现了 12 个众所周知的授权标志。
用户 access_token 选项生成一个 JWT OpenID Connect ID 令牌,使用相同的密钥和相同的哈希算法签名,不执行任何密钥派生。