
CVE-2025-10035_GoAnywhere Get RCE

Описание
Легковесный проверщик на Python, который определяет, уязвим ли экземпляр GoAnywhere к CVE‑2025‑10035.
Этот инструмент отправляет специально сформированный GET-запрос со случайным User-Agent (используя fake-useragent с резервным списком), не следует перенаправлениям, проверяет заголовок Location и классифицирует экземпляр как Неисправленный (уязвимый) или Исправленный (не уязвимый).
Примечание: этот репозиторий в настоящее время содержит только проверщик. Позже может быть добавлена PoC в отдельном, четко обозначенном месте, если/когда это будет уместно — пока этот проект только для обнаружения.
CVE‑2025‑10035 (краткое описание для этого проверщика)
Неисправленный AdminErrorHandlerServlet в GoAnywhere может генерировать действительный токен запроса лицензии и возвращать его, встроенный в URL перенаправления. Этот токен обычно появляется как параметр запроса bundle в заголовке Location (часто перенаправляя на 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 # optional but recommended source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows pip install -r requirements.txt
Ниже приведены практические примеры, которые можно скопировать/вставить для запуска проверщика в различных сценариях: быстрый тест одной цели, пакетное сканирование, низкоскоростное сканирование для безопасности в продакшене, запуск внутри Docker и минимальный фрагмент GitHub Actions для периодического запуска проверщика или по push.
Эти примеры предполагают, что ваш скрипт называется
check_goanywhere.pyи исполняется командойpython check_goanywhere.py. Измените имена файлов, пути и количество потоков в соответствии с вашим окружением.
# Scan targets listed in examples/targets.txt and append vulnerable hosts to results.txt
python check_goanywhere.py examples/targets.txt results.txt
# Use 10 worker threads for faster scanning (be careful with concurrency against production)
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