当前位置: 首页 > news >正文

Rsync未授权访问漏洞复现及彻底修复

一、什么是 Rsync?

  1. Rsync 是一种广泛使用的文件传输工具,它允许系统管理员和用户通过局域网(LAN)或广域网(WAN)在计算机之间同步文件和目录。
  2. Rsync 支持通过本地或远程 shell 访问,也可以作为守护进程运行,监听特定端口(默认为 873)上的连接。
  3. Rsync 使用一种高效的算法来同步文件,只传输文件的变更部分,而不是整个文件,可以保持文件属性、权限、时间戳和符号链接等,这使得它非常适合于大型文件和频繁更新的场景。

二、Rsync未授权访问漏洞复现

1、首先,可以通过以下命令直接访问,并查看各个Rsync配置好的文件

rsync rsync://192.168.118.3:873

如下
在这里插入图片描述

2、未认证的话,还可直接访问到模块内的目录
在这里插入图片描述

三、漏洞修复措施

1、先别急,看看配置文件/etc/rsync.conf,详细解析

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

2、好了,大概了解,可以用hosts allow和hosts deny,来允许和禁止访问的主机IP,例如

[Confi]
path = /etc
hosts allow = 192.168.0.101
hosts deny = 192.168.118.0/24

设置192.168.118.0/24网段,Confi访问不了了,效果如下
在这里插入图片描述

3、或者添加账号密码认证,给Priva添加,例如

[Priva]
path = /tmp
auth users = username
secrets file = /etc/rsyncd.passwd

接下来访问Priva模块,要输入密码啦,效果如下
在这里插入图片描述

4、还有个问题,一开始访问的目录,该怎么隐藏呢
在这里插入图片描述
哈哈,细心的小伙伴肯定发现了,从rsync.conf解析看,可以将list默认的true,设置为false

list = false

就啥模块也找不到啦,不过后面添加模块路径,依旧可以访问的,效果如下
在这里插入图片描述
5、简单粗暴的,直接在系统iptables防火墙设置,只允许指定的主机IP访问873端口

iptables -A INPUT -p tcp -s 192.168.0.101 --dport 873 -j DROP
iptables -A INPUT -p tcp --dport 873 -j DROP

嘿嘿,结果显示是,一直超时,效果如下
在这里插入图片描述

iptables重启后,规则会自动失效 ,记得保存,iptables-save保存到一个路径,重启后输入iptables-restore命令还原,即可

iptables-save > /tmp/iptables.save
iptables-restore < /tmp/iptables.save

6、完美解决,Over~~

http://www.lryc.cn/news/440940.html

相关文章:

  • 影刀RPA实战:网页爬虫之携程酒店数据
  • 【UCB CS61C】Lecture 5 - Floating Point
  • 【Binlog实战】:基于Spring监听Binlog日志
  • 鸿蒙OpenHarmony【轻量系统芯片移植】轻量系统STM32F407芯片移植案例
  • 基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图
  • Rasa对话模型——做一个语言助手
  • golang学习笔记19——golang做服务发现与注册的深度剖析
  • ROS和ROS2借助智能大模型的学习和研究方法
  • 弹性负载均衡ELB 详解和设置方法
  • Python3网络爬虫开发实战(15)Scrapy 框架的使用(第一版)
  • 大众点评代发排名骗局
  • 硬件基础知识
  • 使用gitee如何回滚上一个版本,简单操作方式-gitee自带功能无需使用代码
  • 独立站技能树之建站33项自检清单 1.0丨出海笔记
  • js进阶-作用域是什么
  • ant-design表格自动合并相同内容的单元格
  • 通过多模态关系图学习实现可解释的医学图像视觉问答|文献速递--Transformer架构在医学影像分析中的应用
  • 从入门到精通,带你探索适合新手的视频剪辑工具
  • 线性规划------ + 案例 + Python源码求解(见文中)
  • 用Java实现人工智能
  • MobaXterm使用技巧
  • openstack中的rabbitmq
  • etcd三节点,其中一个坏掉了的恢复办法
  • 计算机毕业设计 基于SpringBoot框架的网上蛋糕销售系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • C编程控制PC蜂鸣器方法2
  • C# SQL 辅助工具
  • eNSP简单用法
  • 1035. 不相交的线
  • 1.pytest基础知识(默认的测试用例的规则以及基础应用)
  • Linux常见查看文件命令