# DPanel 任意文件删除漏洞
## 概述
DPanel 是一个使用 Go 编写的开源服务器管理面板。在 1.9.2 之前版本中,`/api/common/attach/delete` 接口存在任意文件删除漏洞,经认证用户可利用路径遍历删除服务器上的任意文件。
## 影响版本
- 影响版本:DPanel < 1.9.2
- 修复版本:DPanel >= 1.9.2
## 细节
- 漏洞位于 `app/common/http/controller/attach.go` 文件的 `Delete` 函数。
- 用户提交的 `path` 参数未经充分校验,直接传入 `storage.Local{}.GetSaveRealPath`,最终传递给 `os.Remove`。
- `common/service/storage/local.go` 中的辅助函数使用 `filepath.Join` 处理路径,虽可解析 `../`,但未设置根目录限制(无 chroot/jail 机制),导致路径遍历可突破原始目录限制。
## 影响
经认证用户可删除服务器上的任意文件,可能导致服务中断、配置丢失或远程代码执行(若关键文件被删除或替换),造成严重安全风险。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Release v1.9.2 · donknap/dpanel · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
### 关键漏洞信息
**修复的漏洞:**
- **CVE-2025-6629**: 修复了通过挂载文件的方式添加 compose 任务时,没有读取 dpanel-override.yaml 覆盖文件的问题。
标题: Arbitrary file deletion vulnerability in /api/common/attach/delete interface · Advisory · donknap/dpanel · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
## 关键漏洞信息
- **漏洞类型**: 任意文件删除漏洞
- **受影响的版本**: <1.9.1.3
- **修复版本**: 无
- **漏洞严重性**: 8.1 / 10 (高)
- **CVE ID**: CVE-2025-66292
### 漏洞描述
#### 概要
DPanel 存在一个任意文件删除漏洞,在 `/api/common/attach/delete` 接口中,认证用户可以通过路径遍历删除服务器上的任意文件。
#### 详细信息
- 当用户登录到管理后台时,可以使用此接口删除文件。
- 漏洞存在于 `app/common/http/controller/attach.go` 文件的 `Delete` 函数中。
- 用户提交的 `path` 参数直接传递给 `storage.Local{}.GetSaveRealPath`,最终传递给 `os.Remove`,没有进行适当的路径遍历检查。
```go
// 漏洞代码片段
func (self *Attach) Delete(http *gin.Context) {
type ParamsValidate struct {
Path string `form:"path" binding:"required"`
}
params := ParamsValidate{}
if !self.Validate(http, ¶ms) {
return
}
path := storage.Local{}.GetSaveRealPath(params.Path)
fmt.Printf("%v ", path)
_, err := os.Stat(path)
if err == nil {
os.Remove(path)
}
self.JsonSuccessResponse(http)
return
}
```
### PoC(概念验证)
1. 登录 DPanel 控制台获取 `Authorization` token。
2. 发送 POST 请求删除文件(例如:`/tmp/1.txt`)。
#### 请求示例
```http
POST /dpanel/api/common/attach/delete HTTP/1.1
Host: target-ip:8807
Authorization: Bearer <YOUR_TOKEN>
Content-Type: application/x-www-form-urlencoded
path=../../../../../../../../../../tmp/1.txt
```
### 弱点
- CWE-22: 路径遍历
- CWE-73: 外部控制的文件名或路径
### 归功于
- 报告人: pyroxenites
标题: fix CVE-2025-66292 · donknap/dpanel@cbda0d9 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
- **漏洞ID**: CVE-2025-6629
- **受影响文件**: `app/common/http/controller/attach.go`
- **提交信息**: `fix CVE-2025-6629`
- **更改摘要**:
- 移除了对`fmt`包的导入。
- 添加了对文件路径是否为本地路径的检查,避免了潜在的路径遍历漏洞。
- 添加了对文件路径进行清理的步骤,确保路径的安全性。
- 移除了调试信息打印。
- 处理了文件删除时的错误,避免了因错误处理不当而产生的漏洞。
- **提交作者**: donknap
- **提交时间**: 2025年12月1日
暂无评论