0x01 漏洞信息

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

0x02 漏洞复现

列目录:rsync rsync://your-ip:873/src/
image.png
下载文件:
image.png
通过定时任务反弹shell:
编写shell.sh文件,并通过指令rsync -av shell.sh rsync://ip:873/src/root/shell.sh上传到/root/shell.sh,有些文章写要给shell.sh添加执行权限,这里测试了不加执行权限也可以反弹到shell。
image.png
image.png
下载/src/etc/crontab文件,并写入定时任务:
image.png
将crontab文件上传并覆盖原来的文件:
rsync -av crontab rsync://ip:873/src/etc/crontab
vps监听指定的端口:
image.png
经过测试,上传到/etc/cron.d/目录下也是可以的,但是/var/spool/cron/root测试无法反弹shell。
补充知识cron:
我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

  • /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
  • /etc/crontab 这个文件负责调度各种管理和维护任务。从crontab代码中可以看出crono.hourly等是由它进行调度执行的
  • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

0x03 漏洞发现

端口特征:873
服务banner:@RSYNCD: xx.x
fofa语法:protocol=”rsync”
扫描脚本:https://github.com/Juneah/Rsync-unauthorized-scan

0x04 修复建议

更改配置文件/etc/rsyncd.conf,添加或修改参数:

  • 访问控制,设置host allow,限制访问主机IP;
  • 权限控制,设置read only=yes,模块设置为只读;
  • 访问认证,设置auth、secrets,认证成功才能调用服务;
  • 模块隐藏,设置list,将模块隐藏起来。