Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
badsecrets — 一个用于检测多个 Web 框架中已知秘密的库。 | Kitploit
工具/GitHubGitHub/blacklanternsecurity/badsecrets
漏洞分析Web安全密码学渗透测试秘密检测
GitHubblacklanternsecurity/badsecrets

badsecrets

一个用于检测多个 Web 框架中已知秘密的库。

查看仓库
81784265天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

badsecrets

Ruff License Tests codecov Pypi Downloads

一个纯 Python 库,用于在多种平台上识别已知或非常弱的加密密钥的使用。该项目既是一个各种“已知密钥”的存储库(例如,在教程示例中发现的 ASP.NET 机器密钥),也提供了一个与语言无关的抽象层来识别它们的使用。

了解何时使用了“坏密钥”通常需要检查使用了该密钥的某个加密产物:例如,使用带密钥的哈希算法签名的 cookie。当你深入研究每个平台提供的各个实现特性时,事情可能会变得复杂,而本库旨在缓解这一问题。

请查看我们在 Black Lantern Security 博客上的完整博客文章!

灵感来自 Blacklist3r,旨在扩展支持的平台并消除语言和操作系统依赖。

当前模块

被动模块

被动模块分析你已拥有的加密产物(cookie、令牌、签名 URL 等)。它们通过尝试使用已知密钥数据库解密或验证产物来离线工作。

名称描述
ASPNET_Viewstate根据已知机器密钥列表检查 viewstate/generator。
ASPNET_Resource根据已知机器密钥列表检查 WebResource.axd 和 ScriptResource.axd 加密 URL。当页面上不存在 __VIEWSTATE 时很有用。
Telerik_HashKey检查已修补(2017+)版本的 Telerik UI 是否存在已知的 Telerik.Upload.ConfigurationHashKey
Telerik_EncryptionKey检查已修补(2017+)版本的 Telerik UI 是否存在已知的 Telerik.Web.UI.DialogParametersEncryptionKey
Flask_SignedCookies检查弱 Flask cookie 签名密码。是 flask-unsign 的封装。
Peoplesoft_PSToken可以检查 peoplesoft PS_TOKEN 是否存在错误/弱的签名密码
Django_SignedCookies检查 django 的会话 cookie(在 signed_cookie 模式下)是否存在已知的 django secret_key
Rails_SecretKeyBase检查 Ruby on Rails 签名或加密的会话 cookie(来自多个主要版本)是否存在已知的 secret_key_base
Generic_JWT检查 JWT 是否存在已知的 HMAC 密钥或 RSA 私钥
Jsf_viewstate检查 Java Server Faces (JSF) 的 Mojarra 和 Myfaces 实现是否存在已知或弱的密钥
Symfony_SignedURL检查 symfony "_fragment" URL 是否存在已知的 HMAC 密钥。操作完整 URL,包括哈希
Express_SignedCookies_ES检查 express.js express-session 中间件的签名 cookie 和会话 cookie 是否存在已知的 'session secret'
Express_SignedCookies_CS检查 express.js cookie-session 中间件的签名 cookie 和会话 cookie 是否存在已知的 secret
Laravel_SignedCookies检查 'laravel_session' cookie 是否存在已知的 laravel 'APP_KEY'
ASPNET_Compressedviewstate检查曾经流行的自定义压缩 Viewstate 代码片段,该片段易受 RCE 攻击
Rack2_SignedCookies检查 Rack 2.x 签名 cookie 是否存在已知的密钥
Yii2_SignedCookies检查 Yii2 框架签名 cookie 是否存在已知的 cookie 验证密钥
Shiro_RememberMe检查 Apache Shiro rememberMe cookie 是否存在已知的 AES 加密密钥
LTPA_Token检查 IBM WebSphere LtpaToken 和 LtpaToken2 cookie 是否存在已知的 LTPA 加密密钥
NextAuth检查 NextAuth.js / Auth.js JWE 会话 cookie 是否存在已知或弱的 NEXTAUTH_SECRET / AUTH_SECRET

主动模块

主动模块比被动检测更进一步。它们使用基于 YARA 的预过滤来对活动目标进行指纹识别(基于 HTTP 响应头、cookie 和正文内容),然后使用已知密钥伪造加密产物并将其发送到目标,以确认密钥是否被接受。这使得它们在你尚未拥有可分析的令牌但怀疑目标可能使用默认或众所周知的密钥时非常有用。

主动模块在 URL 模式(--url)下默认启用。使用 --passive-only 禁用它们。

名称描述
Shiro_RememberMe_Key使用已知 AES 密钥伪造 Apache Shiro rememberMe cookie,并测试目标是否接受它们(反序列化 RCE)
GlobalProtect_DefaultMasterKey测试 PAN-OS GlobalProtect 门户是否使用默认主加密密钥
LTPA_Token_Key使用已知 LTPA 密钥伪造 IBM WebSphere LtpaToken2 cookie,并测试目标是否授予身份验证(身份验证绕过)

安装

我们有一个 pypi 包,因此你只需执行 pip install badsecrets 即可使用该库。

简单用法

使用 Badsecrets 的最佳方式是在执行 pip install 后直接运行 badsecrets:

pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo

在底层,它使用的是 cli.py 示例。CLI 也可以在不进行 pip 安装的情况下手动访问:

无需 pip 安装:

git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo

示例

要使用这些示例,在完成 pip 安装后,只需 git clone 该仓库并 cd 进入 badsecrets 目录:

git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets

以下示例部分中的命令假定您位于此目录中。

如果您正在使用 Badsecrets BBOT 模块,则无需进行其他操作——BBOT 会为您安装该包。

cli.py

Bad secrets 包含一个示例 CLI,以便在手动检查密钥时使用。如上所述,在成功执行 pip 安装后,只需执行 badsecrets 即可访问它。

用法

usage: badsecrets [-h] [-nc] [-j] [-u URL] [-nh] [-c FILE_OR_MODULE:KEYS]
                  [-p PROXY] [-a USER_AGENT] [-H HEADER] [-d] [-t TIMEOUT]
                  [-P] [-l]
                  [product ...]

Check cryptographic products against badsecrets library

positional arguments:
  product               Cryptographic product to check for known secrets

options:
  -h, --help            show this help message and exit
  -nc, --no-color       Disable color message in the console
  -j, --json            Output results as JSON only (no banner, no color).
                        Outputs nothing on no detection
  -u URL, --url URL     Use URL Mode. Specified the URL of the page to access
                        and attempt to check for secrets
  -nh, --no-hashcat     Skip the check for compatable hashcat commands when
                        secret isn't found
  -c FILE_OR_MODULE:KEYS, --custom-secrets FILE_OR_MODULE:KEYS
                        Custom secrets to check. Can be specified multiple
                        times. Without a module prefix, the file is loaded for
                        all modules. With a module prefix (MODULE:value), keys
                        are targeted to that module only. Value can be a file
                        path or comma-separated inline keys. Example: -c
                        my_keys.txt or -c Shiro_RememberMe_Key:key1,key2 or -c
                        GlobalProtect_DefaultMasterKey:keys.txt
  -p PROXY, --proxy PROXY
                        In URL mode, Optionally specify an HTTP proxy
  -a USER_AGENT, --user-agent USER_AGENT
                        In URL mode, Optionally set a custom user-agent
  -H HEADER, --header HEADER
                        Custom header (e.g., -H 'Cookie: foo=bar'). Can be
                        specified multiple times
  -d, --debug           Enable debug output (request URL, response status,
                        headers, etc.)
  -t TIMEOUT, --timeout TIMEOUT
                        Request timeout in seconds (default: 10)
  -P, --passive-only    Disable active probing in URL mode (only run passive
                        analysis)
  -l, --list-modules    List all available modules with descriptions and exit

  • 基本用法 - 检查加密产品是否存在已知密钥(针对所有模块):
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo

它有一个 URL 模式,该模式会连接到目标并尝试提取加密产品,并将发现的任何产品与所有模块进行比对。

  • URL 模式
badsecrets --url http://example.com/contains_bad_secret.html

你也可以在此模式下使用 --user-agent "user-agent string" 设置自定义 user-agent,或使用 --proxy http://127.0.0.1 设置代理。

  • ASP.NET Viewstate:提供 URL

ASPNET_Viewstate 模块最多接受四个位置参数——viewstate、__VIEWSTATEGENERATOR 值、页面 URL 以及 ViewStateUserKey。顺序无关紧要;每个参数通过其形态来识别(8 个十六进制字符是生成器,以 http:///https:// 开头的任何内容是 URL,其他任何内容则是用户密钥)。

badsecrets <viewstate> <generator> <url> [viewstateuserkey]
下载工具