
CVE-2025-10035_GoAnywhere Get RCE

描述
一个轻量级的 Python 检查器,用于检测 GoAnywhere 实例是否存在 CVE‑2025‑10035 漏洞。
该工具发送一个精心构造的 GET 请求,使用随机化的 User-Agent(通过 fake-useragent 并附备用列表),不跟随重定向,检查 Location 标头,并将实例分类为 未修补(存在漏洞) 或 已修补(不存在漏洞)。
注意:此仓库目前仅包含检查器。PoC(概念验证代码)可能会在后续适当的时候,单独放在一个明确标记的位置添加 —— 目前该项目仅用于检测。
CVE‑2025‑10035(本检查器的概要)
未修补的 GoAnywhere AdminErrorHandlerServlet 可能会生成一个有效的许可证请求令牌,并将其嵌入在重定向 URL 中返回。该令牌通常作为 Location 标头中的一个 bundle 查询参数出现(常重定向到 my.goanywhere.com)。
my.goanywhere.com(或其他主机)且带有 bundle 查询参数。出现 bundle 即表示存在漏洞。/license/Unlicensed.xhtml)且没有 bundle,要么根本不重定向。道德提醒:仅在你拥有或明确获授权测试的系统上运行此检查器。未经授权的扫描可能违法并造成干扰。
User-Agent(fake-useragent + 备用列表)。allow_redirects=False),以便检查 Location 标头。multiprocessing.dummy.Pool 实现多线程扫描。colorama 实现彩色终端输出。requestsfake-useragentcoloramaurllib3(通常随 requests 安装)requirements.txt
python -m venv .venv # 可选但建议 source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows pip install -r requirements.txt
以下是一些实用示例,您可以复制粘贴以在不同场景下运行检查器:单目标快速测试、批量扫描、生产环境下的低速率扫描、在 Docker 中运行,以及最小化的 GitHub Actions 代码片段(用于定期运行或在推送时运行)。
这些示例假设您的脚本文件名为
check_goanywhere.py,并且可以通过python check_goanywhere.py执行。请根据您的环境调整文件名、路径和线程数。
# 扫描 examples/targets.txt 中列出的目标,并将存在漏洞的主机追加到 results.txt
python check_goanywhere.py examples/targets.txt results.txt
# 使用 10 个工作线程加快扫描(注意:在生产环境并发时要小心)
python check_goanywhere.py examples/targets.txt results.txt 10
----
## 示例输出
以下是运行检查器时可能看到的典型示例输出。所有示例均假设启动时打印默认横幅;`[]` 中的行显示脚本打印到终端的彩色状态消息。扫描完成后,存在漏洞的主机会被追加到结果文件中。
- [-] 未发现漏洞: https://0.0.0.0:443 - n/N
- [-] 错误: http://0.0.0.0:8000 - n/N
- [-] 错误: https://0.0.0.0:443 - n/N
- [-] 错误: https://0.0.0.0:443 - n/N
- [-] 错误: https://0.0.0.0:443 - n/N
- [-] 未发现漏洞: https://0.0.0.0:443 - n/N
- [+] 存在漏洞: https://0.0.0.0:443 - n/N