# Bastillion AuthKeysKtrl.java 命令注入漏洞
## 概述
bastillion-io Bastillion 最高至 4.0.1 的版本中存在一个命令注入漏洞,位于组件公钥管理系统(Public Key Management System)的 `src/main/java/io/bastillion/manage/control/AuthKeysKtrl.java` 文件中。攻击者可通过远程利用该漏洞执行任意命令。
## 影响版本
bastillion-io Bastillion ≤ 4.0.1
## 细节
漏洞存在于 `AuthKeysKtrl.java` 文件中,具体触发点为对用户输入处理不当,导致攻击者能够注入并执行操作系统命令。攻击向量为远程,无需身份认证。
## 影响
远程攻击者可利用该漏洞在目标系统上执行任意命令,可能导致系统完全被控制。该漏洞的利用方式已公开,且厂商未对披露做出响应,存在较高安全风险。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: public_exp/archives/Bastillion/report1.md at main · AnalogyC0de/public_exp · GitHub -- 🔗来源链接
标签:exploit
神龙速读:
以下是关键信息的简洁Markdown格式:
### 命令注入漏洞通过公共密钥内容
#### I. 漏洞概述
- 在公共密钥管理系统中发现了命令注入漏洞。
- 认证用户可以利用该漏洞,在远程系统上执行恶意命令。
**提交者:** Ana10gy
**项目:** [Bastillion SSH Key Manager](https://github.com/bastillion-io/Bastillion)
**类型:** 命令注入
**供应商:** bastillion-io
**影响版本:** v4.0.1 及之前版本
**修复版本:** 无,漏洞尚未修复(截至 2025-12-18)
#### II. 漏洞影响
- 在布置了恶意密钥的所有系统上执行任意 shell 命令。
- 修改系统配置和文件。
- 从受控系统中抽取敏感数据。
- 破坏 SSH 身份认证的完整性。
- 在目标主机上建立持久访问。
#### III. 影响范围
- **受影响文件:**
- `AuthKeysKtrl.java` - 公共密钥的创建和管理。
- `PublicKeyDB.java` - 公共密钥的存储和检索。
- `SSHUtil.java` - SSH 密钥的分发操作。
- **受影响版本:** 所有包含公共密钥管理功能的版本。
#### IV. 利用条件
1. **身份认证**:攻击者必须是具有公共密钥上传权限的认证用户。
2. **访问**:攻击者必须能够访问公共密钥管理界面(`/admin/savePublicKey`)。
3. **触发**:当应用程序将密钥分发到目标系统时,恶意命令被执行。
#### V. 漏洞分析
##### 1. 根因
- 公共密钥内容仅对 SSH 格式进行了验证,但未检查恶意负载。
- 公共密钥内容被插入至 shell 命令中而未对单引号转义。
##### 2. 攻击向量
1. 攻击者创建包含命令注入负载的公共密钥。
2. 公共密钥通过最简单的 SSH 格式验证后储存在数据库中。
3. 应用程序将恶意密钥分发至目标系统。
4. 钥钥分发过程中在目标系统上执行恶意命令。
#### VI. 推荐措施
1. **转义用户控制的内容:**
在用于 shell 命令之前,转义公共密钥内容中的所有单引号和特殊 shell 字符。
2. **避免执行 shell 命令:**
替换 `echo` 和 `chmod` 类命令,使用 SSH 客户端 API 调用。
3. **加强密钥验证:**
限制公共密钥备注仅包含安全字符。
4. **应用最小权限原则:**
仅对可信用户开放公共密钥上传权限,限制密钥分发格式。
暂无评论