
CVE-2025-10035_GoAnywhere Obtener RCE

Descripción
Un comprobador ligero en Python que detecta si una instancia de GoAnywhere es vulnerable a CVE‑2025‑10035.
Esta herramienta envía una solicitud GET manipulada con un User-Agent aleatorio (usando fake-useragent con una lista de respaldo), no sigue redirecciones, inspecciona el encabezado Location y clasifica la instancia como Sin parche (vulnerable) o Parcheada (no vulnerable).
Nota: este repositorio actualmente contiene solo el comprobador. Es posible que se agregue un PoC más adelante en una ubicación separada y claramente etiquetada si/cuando sea apropiado; por ahora este proyecto es solo de detección.
CVE‑2025‑10035 (resumen para este comprobador)
Un AdminErrorHandlerServlet de GoAnywhere sin parche puede generar un token de solicitud de licencia válido y devolverlo incrustado en una URL de redirección. Ese token suele aparecer como un parámetro de consulta bundle en el encabezado Location (a menudo redirigiendo a my.goanywhere.com).
my.goanywhere.com (u otro host) con un parámetro de consulta bundle. Presencia de bundle = vulnerable./license/Unlicensed.xhtml sin bundle, o no redirige.Recordatorio ético: solo ejecute este comprobador contra sistemas que posea o para los que tenga autorización explícita para probar. El escaneo no autorizado puede ser ilegal y/o disruptivo.
User-Agent aleatorio por solicitud (fake-useragent + lista de respaldo).allow_redirects=False) para poder inspeccionar el encabezado Location.multiprocessing.dummy.Pool.colorama.requestsfake-useragentcoloramaurllib3 (normalmente instalado con requests)requirements.txt
python -m venv .venv # opcional pero recomendado source .venv/bin/activate # macOS / Linux .venv\Scripts\activate # Windows pip install -r requirements.txt
A continuación se muestran ejemplos prácticos que puede copiar/pegar para ejecutar el comprobador en diferentes escenarios: prueba rápida de un solo objetivo, escaneo por lotes, escaneo de baja velocidad para seguridad en producción, ejecución dentro de Docker y un fragmento mínimo de GitHub Actions para ejecutar el comprobador periódicamente o al hacer push.
Estos ejemplos asumen que su archivo de script se llama
check_goanywhere.pyy es ejecutable conpython check_goanywhere.py. Ajuste nombres de archivo, rutas y número de hilos según su entorno.
# Escanea los objetivos listados en examples/targets.txt y añade los hosts vulnerables a results.txt
python check_goanywhere.py examples/targets.txt results.txt
# Usa 10 hilos de trabajo para un escaneo más rápido (ten cuidado con la concurrencia contra producción)
python check_goanywhere.py examples/targets.txt results.txt 10
----
## Sample Output
Below are realistic sample outputs you can expect when running the checker. All examples assume the default banner prints at start; lines in `[]` show the colored status messages the script prints to the terminal. After the scan, vulnerable hosts are appended to the results file.
- [-] Not Vulnerable: https://0.0.0.0:443 - n/N
- [-] Erorr: http://0.0.0.0:8000 - n/N
- [-] Erorr: https://0.0.0.0:443 - n/N
- [-] Erorr: https://0.0.0.0:443 - n/N
- [-] Erorr: https://0.0.0.0:443 - n/N
- [-] Not Vulnerable: https://0.0.0.0:443 - n/N
- [+] Vulnerable: https://0.0.0.0:443 - n/N