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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
crapsecrets — 一个用于跨多个 Web 框架检测已知机密的库 | Kitploit
工具/GitHubGitHub/irsdl/crapsecrets
漏洞扫描器Web安全密码学渗透测试秘密检测
GitHubirsdl/crapsecrets

crapsecrets

一个用于跨多个 Web 框架检测已知机密的库

查看仓库
221779个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

最初从 badsecrets 0.7.0 分叉而来

偶尔同步,直到 2025 年 3 月!

> 已过时,部分模块和测试用例未更新!

> 适用于 ASP.NET 受损 Machine Key 测试!

这是 Crap(Bad)Secrets```

mkdir -p ~/ctools/ cd ~/ctools/ git clone https://github.com/irsdl/crapsecrets/ cd ~/ctools/crapsecrets pip3 install -r requirements.txt export PYTHONPATH=$(pwd):$PYTHONPATH python3 ./crapsecrets/examples/cli.py -u http://update.microsoft.com/ -r python3 ./crapsecrets/examples/cli.py -u http://update.microsoft.com/ -mrd 5 python3 ./crapsecrets/examples/cli.py -mrd 5 -avsk -fvsp -u http://update.microsoft.com/ python3 ./crapsecrets/examples/cli.py -mrd 5 -avsk -fvsp -mkf ./local/aspnet_machinekeys_local.txt -u http://192.168.6.22:8080/ python3 ./crapsecrets/examples/cli.py -mrd 5 -avsk -fvsp -mkf ./local/aspnet_machinekeys_local.txt -mkf ./crapsecrets/resources/aspnet_machinekeys.txt -u http://192.168.6.22:8080/a1/b/c1/

## Viewstate 使用提示
- 使用 `-mrd 5` 参数运行命令,以便分析较长的重定向响应。
- 使用 `--allviewstatekeys` 或 `-avsk` 尝试所有密钥组合作为验证密钥和加密密钥。
- 当 URL 中缺少 .aspx 时,使用 `--findviewstatepage` 或 `-fvsp` 尝试一组默认页面。

## 通用变更:
- 使用 httpx 替代 requests(主要变更由 AI 完成,测试较少,因此可能存在错误)。
- 增加了重定向深度(`--max-redirect-depth` 参数用于手动重定向)。
- 支持额外的请求头。
- 可使用 `--timeout` 或 `-t` 参数设置请求超时时间。

## Viewstate 变更:
- 包含一些逻辑上的变更。
- 在加密的 .NET 4.0 viewstate 中,显示验证密钥使用 AES 和 3DES 的可能性。
- 从路径中移除无 Cookie(cookieless)值。
- 移除 .aspx 之后的参数。
- 移除多个斜杠和反斜杠字符。
- 改进 .NET4.5 逻辑,以使用子目录中的应用程序名称。
- 检测“MAC is not enabled”(未启用 MAC)的情况。
- 处理存在响应时的长重定向(即未使用 -r 跟随重定向时)。
- 处理重定向到另一个 ASPX 页面的情况(即使用 -r 跟随重定向时)。
- 处理使用 Server.Transfer 而非重定向的情况(生成器与目标不同)。
- 检测使用 MaxPageStateFieldLength 且存在 __VIEWSTATEFIELDCOUNT 的情况。
- 除了检查响应中的 asp.net_sessionid 和 __antixsrftoken Cookie 外,还支持一些预定义的 ViewStateUserKey。
- 正确检测 ASPNET4.5 中 3DES 的解密密钥。
- 新增一个选项,将 aspnet_machinekeys.txt 中的所有字符串分别作为验证密钥和解密密钥各检查一次。当使用 `--allviewstatekeys` 标志时,该工具会尝试找出所有潜在的加密密钥,并以随机顺序逐一尝试解密数据。由于测试的密钥数量众多,单次运行存在命中无效密钥的可能。不过,该工具会列出所有检测到的可能密钥。运行两次工具后,找到有效加密密钥的可能性会显著增加,因为同一个密钥在两次运行中同时出现,几乎可以 100% 确定该密钥是正确的。
- 当给定 URL 中不包含 .aspx 时,使用一组默认页面:`["default.aspx", "index.aspx", "main.aspx", "home.aspx" , "start.aspx", "welcome.aspx", "default2.aspx"]` - 这会显著增加测试时间,但可能带来更多发现。
- 可以使用 `-mkf` 或 `--machinekeyfile` 作为 machinekeys 的资源文件,这样如果本地版本包含敏感密钥,我们就可以使用本地版本。
- 使用自定义版本的 python viewstate 库,以在解析 viewstate 时支持更多对象。
- 新增 `-evsd` 或 `--enable-viewstate-decryption` 参数,即使在未找到验证密钥时也检查解密密钥。当验证密钥与列表中的原始密钥略有不同时,此功能非常有用。
- 通过识别哈希码来计算 `__VIEWSTATEGENERATOR`。如果已提供 `__VIEWSTATEGENERATOR` 和 URL,它还会尽早尝试查找实际路径和应用路径。这可能会提升性能,尤其是在 URL 中缺少可识别的默认 ASPX 页面时。
- 用户可以使用 `-nt` 或 `--num-threads` 选项指定线程数(仅适用于 viewstate 模块)。默认值为 1,在大多数情况下,这反而比 10 更快!
- 应支持无扩展名的文件,但我们会在错误报告出现时进行修复。
- 支持 IsolateApps(适用于 .NET40 旧版)。即验证密钥或解密密钥后带有“,IsolateApps”的情况。
- 通过主动测试来减少 apppath 数量,依据 https://soroush.me/blog/2019/07/iis-application-vs-folder-detection-during-blackbox-testing/。可通过 `-dap` 或 `--disable-active-path-check` 禁用此功能。
- 检查响应体中的 __VIEWSTATE_KEY,并将其也用作 viewstatekey。
- 根据会话 ID 或反 XSRF 令牌,将公共 IP 地址添加到 viewstate 密钥中。
- 当缺少 __VIEWSTATE 时,使用 __EVENTVALIDATION。
- 在一个名为“aspnet_resource.py”的新模块下,使用来自 `/WebResource.axd?d=` 或 `/ScriptResource.axd?d=` 的加密资源值。该模块也支持 IsolateApps 功能。当缺少 __VIEWSTATE 和 __EVENTVALIDATION 时,此功能非常有用。

## TODO:
- 在计算 viewstate 时,为常见页面和目录添加字典。
- 实现对 IsolateByAppId 的支持(可能无法实现,因为它需要注册表中的机密信息,而我们不应拥有这些信息!)。
- 出错时添加重试支持。
- 测试因用 httpx 替换 requests 而导致的错误。
- 由于从 requests 转换为 httpx 以及使用 AI,存在一些失败的测试。在项目根目录运行 `pytest` 即可看到这些失败。虽然其中一些已修复,但测试中仍有一些错误需要在未来解决。我还需要在原始仓库上运行 pytest 进行比较!```
FAILED tests/all_modules_test.py::test_carve_all_cookies - AssertionError: assert 2 == 7
FAILED tests/examples_blacklist3r_test.py::test_examples_blacklist3r_offline - AssertionError: assert 'Did not find viewstate in repsonse from URL' in 'Did not find viewstate in response...
FAILED tests/examples_cli_test.py::test_example_cli_hashcat_telerikhashkey - AssertionError: assert 'Module: [Te...ture Command' not in '\x1b[32m\n ...y_file>]\n\n'
FAILED tests/examples_cli_test.py::test_example_cli_hashcat_telerikhashkey_invalid2 - AssertionError: assert 'Known Secret Found!' in '\x1b[32m\n __ )              |                            ...
FAILED tests/examples_symfony_signedurl_test.py::test_symfony_brute_success - AssertionError: assert 'Found Symfony Secret! [50c8215b436ebfcc1d568effb624a40e]' in 'Target appears to be ...
FAILED tests/examples_telerik_knownkey_test.py::test_fullrun_PBKDF2 - KeyError: "'additional_matcher' is not a valid Pattern"
FAILED tests/examples_telerik_knownkey_test.py::test_badoutput_PBKDF1_MS - KeyError: "'additional_matcher' is not a valid Pattern"
FAILED tests/examples_telerik_knownkey_test.py::test_fullrun_asyncupload_earlydetection - KeyError: "'additional_matcher' is not a valid Pattern"
FAILED tests/examples_telerik_knownkey_test.py::test_fullrun_asyncupload_success - KeyError: "'additional_matcher' is not a valid Pattern"
FAILED tests/examples_telerik_knownkey_test.py::test_fullrun_asyncupload_PBKDF1_MS - KeyError: "'additional_matcher' is not a valid Pattern"

免责声明

本软件仅用于学术研究以及开发有效的防御技术,除非获得明确授权,否则不应用于攻击系统。项目维护者不对软件的滥用负责或承担任何责任。请负责任地使用。

本软件是一个个人项目,与任何公司无关,包括项目所有者及贡献者的雇主。

badsecrets 的原始 README

Black License Tests codecov Pypi Downloads

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

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

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

灵感来源于 Blacklist3r,并希望扩展支持的平台并去除对语言和操作系统的依赖。

当前模块

名称描述
ASPNET_Viewstate根据已知 machine keys 列表检查 viewstate/generator。
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 是否存在已知的密钥
Laravel_SignedCookies检查 'laravel_session' cookie 是否存在已知的 laravel 'APP_KEY'
ASPNET_Vstate检查曾经流行的自定义压缩 Viewstate 代码片段,该片段容易受到 RCE 攻击
Rack2_SignedCookies检查 Rack 2.x 签名 cookie 是否存在已知的密钥

安装

我们有一个 pypi 包,因此你可以直接执行 pip install badsecrets 来使用该库。

简单用法

下载工具