intigriti/misconfig-mapper

GitHub: intigriti/misconfig-mapper

一款基于模板的自动化安全配置错误发现工具,帮助快速识别第三方服务的暴露与风险。

Stars: 900 | Forks: 76

# Misconfig Mapper Misconfig Mapper 是 Intigriti 为社区提供的一个项目,旨在帮助您查找、检测和解决目标使用的各种流行服务、技术和 SaaS 解决方案中常见的安全配置错误! ![image](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e9fee389f6065038.png) # CLI 工具 **Misconfig Mapper** 提供了一个[专用的开源 CLI 工具](https://github.com/intigriti/misconfig-mapper),使用 Golang 编写,用于帮助您自动化测试已发现的大多数配置错误。 它可以识别和枚举公司使用的服务实例,并在大规模执行检测和配置错误检查!通过提供包含检测指纹和配置错误检查指纹的模板,该工具能够快速且准确地识别流行第三方软件和服务中的潜在安全风险! 该工具基于模板设计,具有很高的灵活性。只需将服务添加到 `services.json` 文件中,即可轻松添加对新服务的支持。 # 功能特性 - CLI 工具基于 `services.json` 文件中定义的模板。您可以根据需要添加任意数量的模板。更多信息请参见[模板章节](#templates)。 - 如果提供公司名称,工具会根据您提供的关键词自动生成排列组合,并尝试查找匹配的服务。 - 您还可以选择仅检测服务的存在性而不执行任何配置错误检查(更多用法请参见[使用示例章节](#usage-examples))。 # 安装说明 您可以使用 Go(推荐版本 >=1.24)来安装 Misconfig Mapper: ``` $ go install github.com/intigriti/misconfig-mapper/cmd/misconfig-mapper@latest ``` 安装完成后,如果您的 Go bin 目录配置正确,`misconfig-mapper` 命令将可在您的 PATH 中使用。 ## 最新版本 要安装 Misconfig Mapper,您可以克隆仓库并从源码编译代码,或者[下载最新版本](https://github.com/intigriti/misconfig-mapper/releases)。 ## 从源码构建 如果您希望从源码构建自己的实例,请确保已安装最新版本的 Golang。验证安装是否成功,请运行: ``` $ go version go version go1.24.0 linux/amd64 ``` 1. 克隆本仓库: ``` $ git clone https://github.com/intigriti/misconfig-mapper.git ``` 2. 接下来,从源码编译二进制文件: ``` $ go build -o misconfig-mapper ./cmd/misconfig-mapper ``` 3. 最后,将二进制文件添加或移动到您的 `$PATH` 文件夹中(可选) ## CLI 自动补全 如果您希望为 Misconfig Mapper 启用自动补全功能,我们支持 Bash 和 ZSH。 ### Bash ``` #!/bin/bash _misconfig_mapper_autocomplete() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts="-as-domain string -delay -headers -list-services -list-templates -max-redirects -skip-ssl -output-json -permutations -service -skip-misconfiguration-checks -target -templates -timeout -update-templates -verbose" if [[ ${cur} == -* ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 fi } complete -F _misconfig_mapper_autocomplete misconfig-mapper ``` ### ZSH(OhMyZsh) ``` #!/bin/zsh #compdef misconfig-mapper _auto_completion_misconfig_mapper() { local -a options=("-as-domain" "string" "-delay" "-headers" "-list-services" "-list-templates" "-max-redirects" "-skip-ssl" "-output-json" "-permutations" "-service" "-skip-misconfiguration-checks" "-target" "-templates" "-timeout" "-update-templates" "-verbose") _arguments \ '*: :->args' \ "*: :(${(j:|:)options})" case $state in (args) # Handle arguments completion here ;; (*) # Handle options completion here compadd -a options ;; esac } _auto_completion_misconfig_mapper "$@" ``` # 使用示例 **示例 1:** 执行扫描以枚举所有配置错误的第三方服务 ``` $ ./misconfig-mapper -target "yourcompanyname" -service "*" -delay 1000 ``` ![示例 1](.github/assets/images/example_1.png "示例 1") **示例 2:** 执行仅检测扫描以枚举所有第三方服务(不检查任何配置错误) ``` $ ./misconfig-mapper -target "yourcompanyname" -service "*" -skip-misconfiguration-checks true ``` ![示例 2](.github/assets/images/example_2.png "示例 2") **示例 3:** 仅测试某个特定服务(按 ID 或名称) ``` $ ./misconfig-mapper -target "yourcompanyname" -service 1 ``` ``` $ ./misconfig-mapper -target "yourcompanyname" -service "drupal" ``` ![示例 3](.github/assets/images/example_3.png "示例 3") **示例 4:** 打印所有已加载的服务 ``` $ ./misconfig-mapper -list-services ``` ![示例 4](.github/assets/images/example_4.png "示例 4") 此外,您可以使用 `-headers` 标志传递请求头以满足任何请求要求(多个头之间使用**双分号**分隔): ``` -headers "User-Agent: xyz;; Cookie: session=eyJ...;;" ``` ``` Usage of ./misconfig-mapper: -as-domain string Treat the target as if its a domain. This flag cannot be used with -permutations. (default "false") -delay int Specify a delay between each request sent in milliseconds to enforce a rate limit. -headers string Specify request headers to send with requests (separate each header with a double semi-colon: "User-Agent: xyz;; Cookie: xyz...;;") -list-services Print all services with their associated IDs -list-templates Print all services with their associated IDs (alias for -list-services) -max-redirects int Specify the max amount of redirects to follow. (default 5) -output-json Format output in JSON -permutations string Enable permutations and look for several other keywords of your target. This flag cannot be used with -as-domain. (default "true") -service string Specify the service ID you'd like to check for. For example, "0" for Atlassian Jira Open Signups. Use comma seperated values for multiple (i.e. "0,1" for two services). Use "*" to check for all services. (default "0") -skip-misconfiguration-checks string Only check for existing instances (and skip checks for potential security misconfigurations). (default "false") -skip-ssl Skip SSL/TLS verification (exercise caution!) -target string Specify your target company/organization name: "intigriti" (files are also accepted). If the target is a domain, add -as-domain -templates string Specify the templates folder location (default "./templates") -timeout int Specify a timeout for each request sent in milliseconds. (default 7000) -update-templates Pull the latest templates & update your current services.json file -verbose int Set output verbosity level. Levels: 0 (=silent, only display vulnerabilities), 1 (=default, suppress non-vulnerable results), 2 (=verbose, log all messages) (default 2) ``` # 模板 您可以轻松定义更多模板以进行扫描。模板采用结构化 JSON 对象格式并从 `services.json` 文件读取。 要定义更多服务,请编辑 `services.json` 文件并在其中添加每个配置错误。 一个示例模板定义架构请参见[此处](.github/assets/template-schema.json)。 ## 模板类型定义 ### **ID** **类型:** 数字 **说明:** `id` 字段用于在使用 `-service` 标志时标识服务。它应为一个数值,并遵循之前 ID 的序列。 ## 请求 ### **方法** **类型:** 字符串 `method` 字段用于提供 HTTP 方法。 ### **BaseURL** **类型:** 字符串 `baseURL` 字段用于定位第三方服务(如果存在)。 ### **路径** **类型:** 字符串 `path` 字段用于通过观察响应来检查服务是否存在漏洞。 ### **请求头** **类型:** 对象数组 `headers` 字段用于提供所需的请求头。 ### **请求体** **类型:** 字符串 | null `body` 字段用于提供原始请求体。 ## 响应 ### **状态码** **类型:** 整型 `statusCode` 字段用于验证匹配的响应状态码,以进一步减少误报的可能性。 ### **检测指纹** **类型:** 字符串数组 `detectionFingerprints` 字段用于枚举和验证目标的服务实例。这些指纹用于标记服务或实例的检测。请务必定义严格的正则模式或关键词以减少误报的可能性。 ### **指纹** **类型:** 字符串数组 `fingerprints` 字段用于验证目标是否存在配置错误的第三方服务。请务必定义严格的正则模式或关键词以减少误报的可能性。 ## 元数据 ### **服务名称** **类型:** 字符串 `service` 字段用于在 CLI 输出结果中显示服务名称,以便视觉确认当前正在扫描的服务。 ### **描述** **类型:** 字符串 `description` 字段在服务被枚举或识别并确认存在漏洞后,显示服务描述信息。 ### **复现步骤** **类型:** 字符串数组 `reproductionSteps` 字段报告发现该配置错误后的复现步骤。这些步骤来源于本文档。 ### **参考信息** **类型:** 字符串数组 `references` 字段记录已枚举和确认配置错误的服务信息。这些参考信息来源于本文档。 # 贡献 Misconfig Mapper 是开源项目,专为社区而创建!我们鼓励您为该项目做出贡献!请参阅[贡献指南](CONTRIBUTING.md)了解如何参与贡献并进一步改进 Misconfig Mapper! # 许可证 本项目根据[MIT 许可证](LICENSE.md)进行授权。
标签:EVTX分析, Golang, Homebrew安装, Scrypt密钥派生, 企业安全, 关键词置换, 可扩展安全工具, 安全编程, 安全配置检测, 开源安全工具, 文档结构分析, 服务指纹识别, 服务枚举, 本地模型, 模板化检测, 第三方服务安全, 网络资产管理, 自动化安全扫描, 误配置检测, 逆向工程平台