devploit/nomore403
GitHub: devploit/nomore403
一款自动化多种技术绕过 HTTP 403/40X 访问限制的安全测试工具。
Stars: 1546 | Forks: 174
NoMore403
## 目录 - [简介](#introduction) - [功能特性](#features) - [已实现的绕过技术](#implemented-bypass-techniques) - [前置条件](#prerequisites) - [安装](#installation) - [工作原理](#how-it-works) - [自定义](#customization) - [使用方法](#usage) - [选项](#options) - [常见用例](#common-use-cases) - [贡献](#contributing) - [安全注意事项](#security-considerations) - [许可证](#license) - [致谢](#acknowledgments) - [联系方式](#contact) ## 简介 `nomore403` 是一款创新工具,旨在帮助网络安全专业人士和爱好者绕过在 Web 安全评估中遇到的 HTTP 40X 错误。与其他解决方案不同,`nomore403` 自动化执行多种技术以无缝突破这些访问限制,提供了从 Header 篡改到方法篡改等多种策略。 ## 功能特性 - **自动校准**:自动检测服务器基础响应以识别成功的绕过 - **多种绕过技术**:实现了 8 种不同的限制绕过技术 - **高并发**:使用 goroutines 进行快速高效的测试 - **可自定义**:轻松添加新的 payload 和技术 ## 已实现的绕过技术 - **Verb Tampering(动词篡改)**:测试不同的 HTTP 方法以访问受保护的资源 - **Verb Case Switching(动词大小写切换)**:操纵 HTTP 方法的大小写以检测不正确的实现 - **Headers(请求头)**:注入用于绕过的 Header,如 X-Forwarded-For、X-Original-URL 等 - **Custom Paths(自定义路径)**:测试可以绕过访问限制的替代路径 - **Path Traversal (midpaths)(路径遍历)**:在路径中间插入模式以混淆解析器 - **Double-Encoding(双重编码)**:使用双重 URL 编码来绕过过滤器 - **HTTP Versions(HTTP 版本)**:测试不同的 HTTP 版本(1.0, 1.1)以识别不一致的行为 - **Path Case Switching(路径大小写切换)**:操纵路径中的大小写以检测大小写敏感的配置 ## 前置条件 在安装和运行 `nomore403` 之前,请确保您具备以下条件: - 您的机器上已安装 Go 1.24 或更高版本。 ## 安装 ### 从源码编译 这是推荐的方法,因为它确保您拥有所有必要的文件,包括 payloads 文件夹: ``` git clone https://github.com/devploit/nomore403 cd nomore403 go get go build ``` ### 从 Releases 安装 您可以从我们的 [Releases](https://github.com/devploit/nomore403/releases) 页面下载适用于您操作系统的预编译二进制文件。 **重要提示**:通过预编译二进制文件安装时,可能不包含 payloads 文件夹。如果是这种情况,请单独下载: ``` # 下载二进制文件后 git clone --depth 1 https://github.com/devploit/nomore403.git cp -r nomore403/payloads /path/to/your/preferred/location # 然后使用 nomore403 配合 -f flag nomore403 -u https://domain.com/admin -f /path/to/your/preferred/location/payloads ``` ### 从 Go install 安装 您可以直接使用 Go 安装 nomore403: ``` go install github.com/devploit/nomore403@latest ``` **重要提示**:通过 `go install` 安装时,不会包含 payloads 文件夹。您需要单独下载: ``` # 使用 go install 安装后 git clone --depth 1 https://github.com/devploit/nomore403.git cp -r nomore403/payloads /path/to/your/preferred/location # 然后使用 nomore403 配合 -f flag nomore403 -u https://domain.com/admin -f /path/to/your/preferred/location/payloads ``` ## 工作原理 1. **自动校准**:该工具向一个不存在的路径发出请求以确定基础响应 2. **默认请求**:向目标发出标准请求以进行比较 3. **技术应用**:并行执行选定的技术 4. **结果过滤**:仅显示与初始校准不同的响应(除非使用了详细模式) ## 自定义 要编辑或添加新的绕过方法,请直接修改 [payloads](https://github.com/devploit/nomore403/tree/main/payloads) 文件夹中的 payload。nomore403 将自动应用这些更改。 ### Payloads 文件夹结构 - **headers**:用于绕过的 Header - **ips**:注入特定 Header 的 IP 地址 - **httpmethods**:替代的 HTTP 方法 - **endpaths**:添加到目标 URL 末尾的自定义路径 - **midpaths**:插入路径中间的模式 - **simpleheaders**:常见的简单 Header - **useragents**:用于轮换的 User-Agent 列表 ## 使用方法 ### 输出示例 ``` ━━━━━━━━━━━━━━ NOMORE403 CONFIGURATION ━━━━━━━━━━━━━━━━━━ Target: https://domain.com/admin Headers: false Proxy: false User Agent: nomore403 Method: GET Payloads folder: payloads Custom bypass IP: false Follow Redirects: false Rate Limit detection: false Status: Timeout (ms): 6000 Delay (ms): 0 Techniques: verbs, verbs-case, headers, endpaths, midpaths, double-encoding, http-versions, path-case Unique: false Verbose: false ━━━━━━━━━━━━━━━ AUTO-CALIBRATION RESULTS ━━━━━━━━━━━━━━━ [✔] Calibration URI: https://domain.com/admin/calibration_test_123456 [✔] Status Code: 404 [✔] Content Length: 1821 bytes ━━━━━━━━━━━━━ DEFAULT REQUEST ━━━━━━━━━━━━━ 403 429 bytes https://domain.com/admin ━━━━━━━━━━━━━ VERB TAMPERING ━━━━━━━━━━━━━━ ━━━━━ VERB TAMPERING CASE SWITCHING ━━━━━━━ ━━━━━━━━━━━━━ HEADERS ━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━ CUSTOM PATHS ━━━━━━━━━━━━━━━━ 200 2047 bytes https://domain.com/;///..admin ━━━━━━━━━━━━━ DOUBLE-ENCODING ━━━━━━━━━━━━━ ━━━━━━━━━━━━━ HTTP VERSIONS ━━━━━━━━━━━━━━━ 403 429 bytes HTTP/1.0 ━━━━━━━━━━ PATH CASE SWITCHING ━━━━━━━━━━━━ 200 2047 bytes https://domain.com/%61dmin ``` ### 基本用法 ``` ./nomore403 -u https://domain.com/admin ``` ### 详细模式 + 代理 + 指定使用的技术 ``` ./nomore403 -u https://domain.com/admin -x http://127.0.0.1:8080 -k headers,http-versions -v ``` ### 从 Burp 解析请求 ``` ./nomore403 --request-file request.txt ``` ### 使用自定义 Header + 特定 IP 地址进行绕过 ``` ./nomore403 -u https://domain.com/admin -H "Environment: Staging" -i 8.8.8.8 ``` ### 设置新的最大 goroutines 数 + 在请求之间添加延迟 ``` ./nomore403 -u https://domain.com/admin -m 10 -d 200 ``` ### 按特定状态码过滤 ``` ./nomore403 -u https://domain.com/admin --status 200,302 ``` ## 选项 ``` ./nomore403 -h Command line application that automates different ways to bypass 40X codes. Usage: nomore403 [flags] Flags: -i, --bypass-ip string Use a specified IP address or hostname for bypassing access controls. Injects this IP in headers like 'X-Forwarded-For'. -d, --delay int Specify a delay between requests in milliseconds. Helps manage request rate (default: 0ms). -f, --folder string Specify the folder location for payloads if not in the same directory as the executable. -H, --header strings Add one or more custom headers to requests. Repeatable flag for multiple headers. -h, --help help for nomore403 --http Use HTTP instead of HTTPS for requests defined in the request file. -t, --http-method string Specify the HTTP method for the request (e.g., GET, POST). Default is 'GET'. -m, --max-goroutines int Limit the maximum number of concurrent goroutines to manage load (default: 50). (default 50) --no-banner Disable the display of the startup banner (default: banner shown). -x, --proxy string Specify a proxy server for requests (e.g., 'http://server:port'). --random-agent Enable the use of a randomly selected User-Agent. -l, --rate-limit Halt requests upon encountering a 429 (rate limit) HTTP status code. -r, --redirect Automatically follow redirects in responses. --request-file string Load request configuration and flags from a specified file. --status strings Filter output by comma-separated status codes (e.g., 200,301,403) -k, --technique strings Specify one or more attack techniques to use (e.g., headers,path-case). (default [verbs,verbs-case,headers,endpaths,midpaths,double-encoding,http-versions,path-case]) --timeout int Specify a max timeout time in ms. (default 6000) --unique Show unique output based on status code and response length. -u, --uri string Specify the target URL for the request. -a, --user-agent string Specify a custom User-Agent string for requests (default: 'nomore403'). -v, --verbose Enable verbose output for detailed request/response logging (not based on auto-calibrate). ``` ## 常见用例 - **安全审计**:识别认证系统中的配置错误 - **Bug Bounty**:发现受保护端点中的绕过漏洞 - **渗透测试**:在评估期间访问受限区域 - **安全加固**:验证已实施防护措施的稳健性 ## 贡献 我们欢迎各种形式的贡献。您可以通过以下方式提供帮助: - 报告 Bug 并提出功能建议 - 提交包含 Bug 修复和新功能的 Pull Request - 向现有文件夹添加新的 payload ## 安全注意事项 虽然 nomore403 是为教育和道德测试目的而设计的,但重要的是要在目标系统上负责任且经许可地使用它。请遵守当地法律法规。 ## 许可证 nomore403 根据 MIT 许可证发布。有关详细信息,请参阅 [LICENSE](https://github.com/devploit/nomore403/blob/main/LICENSE) 文件。 ## 致谢 NoMore403 的灵感来源于 Web 安全领域的几个项目: - [Dontgo403](https://github.com/devploit/dontgo403) - NoMore403 的前身 - 记录和分享绕过技术的网络安全社区 - 所有帮助改进此工具的贡献者 ## 联系方式 [](https://twitter.com/devploit/)标签:403 Bypass, CISA项目, ethical hacking, EVTX分析, Golang, HTTP 403, Streamlit, Web安全, 头部注入, 安全测试, 安全编程, 攻击性安全, 数据展示, 日志审计, 权限绕过, 红队, 绕过工具, 网络安全, 蓝队分析, 访问控制, 请求劫持, 隐私保护