TA的每日心情 | 衰 2016-7-16 21:37 |
---|
签到天数: 10 天 [LV.3]偶尔看看II
|
本帖最后由 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 ” 命令安装,当然我这里默认安装了就不再安装了。
在 /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
#客户端的操作:
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
继续看看uploads目录
rsync rsync_backup@192.168.199.199::web/uploads/ --password-file=/etc/rsync.password
将本地文件test.txt备份到根目录下
rsync -avzp /test.txt rsync_backup@192.168.199.199::web/ --password-file=/etc/rsync.password
将服务器的所有文件备份到本地/test/ 目录下
rsync -avzp rsync_backup@192.168.199.199::web/ /test/ --password-file=/etc/rsync.password
实现增量备份,在本地的/test目录下创建baidu.txt,可以发现只同步了一个文件,那就是本地新增的/test/baidu.txt
rsync -av --delete /test rsync_backup@192.168.199.199::web/ --password-file=/etc/rsync.password
在备份服务器上删除了3个文本文档,再次从服务器增量备份到本地
rsync -av --delete rsync_backup@192.168.199.199::web/ /test/ --password-file=/etc/rsync.password
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::
查询模块下的文件:rsync root@192.168.199.199::web
如果对方的配置信息为:read only = no 【表示可以向里面写内容】 又恰巧是一个web目录的话,那我们就可以直接getshell了
rsync /shell.php root@192.168.199.199::web/uploads/ #将本地shell推送到rsync的uploads目录(我这里的shell没写内容)
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
|
评分
-
查看全部评分
|