一、软件背景
Sonic 是由 Go语言开发的一款博客平台。
Sonic < 1.0.5 版本存在目录穿越漏洞,原因是BackupWholeSite函数中filepath.Join方法对于接收的参数未进行过滤处理,导致可以直接进行目录穿越。远程攻击者可以通过此漏洞读取并下载任意文件。
二、漏洞分析
查看修复补丁:
可以看到 BackupWholeSite函数内,旧版本直接使用filepath.join方法将toBackupItems []string参数带入,未进行任何过滤。在golang的path/filepath包中,join方法的作用是拼接路径,并且可以使用../进行目录穿越。clean方法的作用是规整化路径,其中的一个作用就是将/..
替换为 /
三、漏洞POC
目前官方已给出漏洞POC。该漏洞需要拥有登录后台权限。