rsync 是什么
Rsync是用于在两个服务器(通常是Linux)之间传输和同步文件的实用程序。它通过检查文件大小和时间戳来确定同步。
rsync TCP过程
server -> client: @RSYNCD:版本号
client -> server: @RSYNCD:版本号
client -> server: 模块名(爆破)
server -> client:
四种情况
AUTHREQD => 需要密码
Access Denied = >需要ip
@RSYNCD: success => 成功
其他 => 模块不存在
rsync安装配置
百度安装,默认端口873
配置:
在文件中添加以下内容(假设您希望同步 /tmp目录):
sudo nano /etc/rsyncd.conf
模块名字: t1mp
[apache2]
path = /tmp
comment = My Rsync Module
read only = no#read only = yes会将模块设置为只读模式,这意味着不允许在远程主机上进行写操作。如果您打算从本地系统同步文件到远程服务器的/var/www/html目录下,您需要将read only选项更改为no,以便启用写操作。list = yes
auth users = y1k1ng ##授权帐号,认证的用户名,如果没有这行则表明是匿名,多个用户用,分隔。
secrets file = /etc/rsyncd.secrets
创建 rsync 用户密码文件。执行以下命令以创建密码文件并设置权限:
sudo touch /etc/rsyncd.secrets
sudo chmod 600 /etc/rsyncd.secrets
添加授权用户。使用以下命令添加您的用户名和密码到密码文件:
sudo sh -c "echo 'y1k1ng:y1k1ng' >> /etc/rsyncd.secrets"
sudo sh -c "echo 'your_username:your_password' >> /etc/rsyncd.secrets"
多用户用,隔开
重启rsync服务:
sudo systemctl restart rsync
配置防火墙。如果您的系统上启用了防火墙,请确保允许rsync服务的传入连接。例如,使用以下命令打开端口 873:
sudo ufw allow 873
在客户端上使用正确的IP地址和模块名称来访问rsync服务器。
rsync匿名配置
rsync基础命令
1.上传本地文件到服务器
方法一:
rsync -avz cmds_c.pyroot@xx.xx.xx.xx:/
rsync cmds_c.py rsync://xx.xx.xx.xx/moudle
方法二:
在使用::语法连接到rsync模块时,用户名是通过auth users选项在rsync服务器配置文件中定义的。
rsync -avz cmds_c.py xx.xx.xx.xx::apache2/var/www/html
rsync -avz --password-file=/etc/rsyncd.secrets cmds_c.py xx.xx.xx.xx::apache2/var/www/html
密码文件
#vim /etc/rsyncd.secrets
yourname1:yourpassword1,yourname2:yourpassword2
Rsync配置文件
#vim /etc/rsyncd.conf
2.从远程服务器下载文件到本地
rsync -avz root@xx.xx.xx.xx:/var/www/html/index.html /home/toor/Desktop
rsync rsync://xx.xx.xx.xx/etc/passwd ./
3.同步本地目录与远程目录(包含已更改的文件):
rsync -avz --delete /path/to/local/directory [email protected]:/path/to/remote/directory
4.列出文件
rsync rsync://xx.xx.xx.xx/web_1/
rsync -avz --recursive rsync://xx.xx.xx.xx/web_2/
rsync服务在攻防中的实际应用
通常情况下,管理程序在启动 Rsync 服务后,会直接运行传输任务。如果 Rsync 服务未经过安全加固,则很容易出现未授权访问等安全问题;其直接后果是传输数据裸露在互联网上,可以被任何人访问获取,带来严重的数据泄露风险。
rsync资产扫描
获取资产ip后,Fofa语法。
protocol = "rsync" || banner = "@RSYNCD:"
ip = ""
rsync未授权危害
rsync未授权主要导致严重信息泄露和上传/覆写文件,造成远程命令执行,其利用方式如下:
1.上传/覆写文件
由于无法执行文件,所以需要配合定时任务,定时脚本或是website找到地址传马等拿shell。
2.信息泄露
通过列举目录和文件,敏感配置文件或数据泄露等;
插曲webshell;
翻查发现apache-tomcat模块列出来看看;
rsync -avz --recursive rsync://xx.xx.xx.xx/update/apache-tomcat/
找到apache-tomcat/webapps/ROOT/为默认路径;
tomcat默认目录fofa搜一波资产发现有默认页面;
尝试传免杀马利用;
rsync /home/toor/Desktop/1.jsp rsync://xx.xx.xx.xx/update/apache-tomcat/webapps/ROOT/
#总之未授权可以利用的泄露点比如监控文件(管理员定时执行运维的脚本)写入shell此外还有其他一些ak_sk泄露可以直接使用ak_sktools连接,或添加账户远程连接等等…
#这个时候就看自己的经验和思路了;
Brute
在没有授权账户密码的情况下,可以使用脚本去爆破rsync,碰碰运气,还可以结合dir字典去扫未发现的模块,说不定有意外惊喜。
rsync加固
使用Rsync服务端时,须对其进行加固,保障数据和服务器安全。
a#隐藏moudle信息
修改配置文件rsyncd.conf
list = false
b#权限控制
将不需要写入权限的module设为只读;
修改配置文件rsyncd.conf
[my_moudle]
read only = true
c#限制网络访问
IPTables防火墙;
给rsync的端口添加一个iptables。
只允许能够从内部网络(xx.xx.xx.xx/24)访问:()
iptables -A INPUT -i eth0 -p tcp -s xx.xx.xx.xx/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。
hosts allow = xx.xx.xx.xx #允许访问的IP
d#启用账户认证
只允许指定的用户,使用指定的密码,来调用rsync服务。
添加rsync用户权限访问,注意配置的是rsyncd.conf中的:
secrets file = /etc/rsyncd.secrets #密码文件位置,认证文件设置,设置用户名和密码。
auth users = rsync #授权帐号,认证的用户名,如果没有这行则表明是匿名,多个用户用,分隔。
参考文章:
https://uknowsec.cn/posts/skill/%E9%85%8D%E7%BD%AE%E6%BC%8F%E6%B4%9E%E4%B9%8BRsync%E5%8C%BF%E5%90%8D%E8%AE%BF%E9%97%AE.html
https://xz.aliyun.com/t/8429#toc-1
https://mp.weixin.qq.com/s/zREWgud-8keFQSw9c84Qeg
原文始发于微信公众号(Crystal Equation):[rsync] 在网络安全中应用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论