l4rm4nd/Authentik-Enum

GitHub: l4rm4nd/Authentik-Enum

该工具通过未授权探测静态资源文件的方式,识别目标 Authentik 实例的具体运行版本。

Stars: 1 | Forks: 0

Authentik-Enum

authentik

Enumerate the exact version of a live Authentik instance through unauthenticated static asset probing



Buy Me A Coffee

## 描述 Authentik-Enum 是一个 Python3 脚本,旨在尝试识别可公开访问的 Authentik 实例的具体版本。 ## 工作原理 Authentik 在其管理界面模板中使用了带有版本号的脚本引入。 相关上游实现的一个示例可以在 [Authentik 代码库](https://github.com/goauthentik/authentik/blob/bc24815ae6c8181216b88daeb0e8825aa7b17f7b/authentik/core/templates/if/admin.html#L6)中找到。 ``` ``` Authentik-Enum 从 GitHub 获取发布版本,并检查目标上是否存在相应的带版本号的文件。 具体流程如下: 1. 从 GitHub 获取可用的 Authentik 发布版本 2. 为每个发布版本构造预期的 `AdminInterface-{version}.js` URL 3. 为每个带版本号的 JavaScript 文件发送 HTTP 请求 4. 在支持的情况下使用 byte-range 请求,以避免下载完整的资源 5. 打印匹配响应的 HTTP 状态码和 MD5 哈希值 6. 除非指定了 `--all`,否则在发现第一个版本时即停止 成功的响应表明所测试的资源存在: | HTTP 状态码 | 含义 | | --------------------- | ---------------------------------------------------------------------------- | | `200 OK` | 带版本号的 JavaScript 文件存在并已被返回 | | `206 Partial Content` | 文件存在且服务器已处理 byte-range 请求 | | `404 Not Found` | 所测试的带版本号的 JavaScript 文件不存在 | | 其他状态码 | 该请求可能已被重定向、阻止或由中间件处理 | ## 要求 * Python 3 * 具有对目标 Authentik 实例的网络访问权限 * 具有对 GitHub API 的网络访问权限,以获取 Authentik 发布版本 ## 用法 ### 克隆代码库 ``` git clone https://github.com/l4rm4nd/Authentik-Enum cd Authentik-Enum python3 authentik-enum.py --base-url https://sso.example.com ``` ## 限制 * **自定义前端构建:** 修改过或自定义的 Authentik 前端 bundle 可能会使用不同的文件名或路径。 * **反向代理:** 代理、CDN、Web 应用防火墙或身份验证网关可能会更改状态码或阻止请求。 * **过期资源:** 旧的 JavaScript 文件在 Authentik 升级后可能仍可访问,从而导致出现多个匹配项。 * **更改的资源结构:** 未来的 Authentik 版本可能会更改文件名或静态资源路径。 * **GitHub API 访问:** 如果 GitHub 不可用、受到速率限制或从测试系统中被阻止访问,则版本发现可能会失败。 * **假阳性响应:** 某些服务器对于不存在的文件会返回带有 `200` 状态码的自定义页面。在验证意外结果时,请比对响应哈希值、内容类型和响应大小。
标签:Python, 实时处理, 无后门, 版本探测, 身份认证系统